一、一些基本概念

主键:确保行的唯一性和可寻址。

二、约束

1、主键

SQLite会自动定义主键无论是否定义均存在。自定义类型为64位整数,键名为rowid,别名:_rowid或oid。当自定义一个主键时,自定义的名字也是一个别名。主键提供自增长机制,当达到最大值时,会搜索未使用的主键值来使用。

2、约束的书写格式

CREATE TABLE user(
    id integer PRIMARY KEY,
    name text NOT NULL COLLATE NOCASE,
    phone text NOT NULL DEFAULT "UNKNOWN",
    UNIQUE(name,phone),
    CHECK(length(phone)>=7)
);

代码解析

  • id:数据类型为int,约束为主键
  • name:数据类型为文本,约束:不为空,不区分大小写
  • phone:数据类型为文本,约束:不为空,默认值是UNKNOWN
  • 约束:name和phone字段的组合具有唯一性
  • 约束:phone字段的长度大于等于7

三、一些约束

1、唯一性约束

UNIQUE

2、不为空约束

NOT NULL

3、自动增长约束

AUTOINCREMENT

  • 自增长约束
  • 不回收旧的值
  • 达到64为最大值时再插入值会报错
  • 可以通过INSERT语句查询 ,小于当前计数值的值

DEFAULT:默认值,可以使用ANSI/ISO的保留字表示时间和日期:CURRENT_TIME CURRENT_DATE CURRENT_TIMESTAMP

CREATE TABLE table_name1 (log_data NOT NULL DEFAULT CURRENT_TIMESTAMP);

4、不区分文字大小写约束

COLLATE NOCASE

5、输入值约束

CHECK:对输入的值进行检查的约束

6、外键约束

确保一个表格中的字段是另外一个表格的字段的引用。一般是用于父子关系或主从关系。

CREATE TABLE tablename(
    column_defintion REFERENCES foreign_table(column_name) 
    ON {DELETE | UPDATE} integrity_action
    [NOT] deferrable [INITIALLY {DEFERRABLE|IMMEDIATE},]
    ...
);

此约束主要分三个部分

  • 定义外键约束
  • 当外键更改或者删除的时候执行什么规则
  • 约束是立即执行还是延迟执行

父类变更规则

  • SET NULL:设置为NULL
  • SET DEFAULT:修改为默认值
  • CASCADE:更新时,更改子字段。删除时,删除所有子字段。
  • RESTRICT:终止事务
  • NO ACTION:不执行任何操作

最后修改日期: 2023年10月17日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。