主键
sql语句 | 解释 |
---|---|
字段名 字段类型 PRIMARY KEY | 用于唯一的标示表行的数据,当定义主键约束后,该列不能重复 |
PRIMARY KEY (字段) | 在表定义最后指定主键 |
PRIMARY KEY (字段1,字段2) | 复合主键 |
-
primary key不能重复而且不能为null
-
一张表最多只能有一个主键,但可以是复合主键
-
使用desc表名,可以看到primary key的情况
-
主键的指定方式有两种
直接在字段名后指定:字段名primakry key
在表定义最后写primary key(列名);
unique
sql语句 | 解释 |
---|---|
字段名 字段类型 unique | 当定义了唯一约束后,该字段是不能重复的 |
- 如果没有指定not null,则unique字段可以有多个null
- 一张表可以有多个unique字段
外键
用于定义主表和从表之间的关系:外键约束要定义在从表上,主表则必须具有主键约束或是unique约束,
当定义外键约束后,要求外键列数据必须在主表的主键列存在或是为null
sql语句 | 解释 |
---|---|
FOREIGN KEY (本表字段名) REFERENCES 主表名(主键名或unique字段名) | 创建外键 |
- 外键指向主表的字段,要求是primary key或者是unique
- 表的类型是innodb,这样的表才支持外键
- 外键字段的类型要和主键字段的类型一致(长度可以不同)
- 外键字段的值,必须在主键字段中出现过,或者为null [前提是外键字段允许为null]
- 一旦建立主外键的关系,数据不能随意删除了
check
用于强制行数据必须满足的条件,假定在sal列上定义了check约束,并要求sal列值在1000~2000之间
如果不在1000~2000之间就会提示出错。
sql语句 | 解释 |
---|---|
字段名 类型 CHECK (check 条件) | 创建check |
查看约束状态
sql语句 | 解释 |
---|---|
desc 表名 | 查看约束状态 |
约束
主键
unique
外键
从表如果有一条数据指向主表的主键或unique,那么指向主表的主键或unique那条数据是不能删除的
除非,从表先删除指向某个主表的主键或unique的所有数据,主表才能删除包含主键或unique的数据
check