MySQL的约束分为 主键primary key,非空not null,默认default, 唯一unique, 外键foreign key, 检查check
目录
2.如果该字段指定了unique却没有指定not null,则该unique字段中可以有多个null值
1.外键指向表的字段,要求该字段是 主键primary key 或者是 unique唯一的
2.外键是【从表】的字段指向【主表】的主键或唯一unique
5.【从表】的外键字段的值,必须要在【主表】的主键字段中出现过,或者为null【前提是【从表】的外键字段允许为null】
1.MySQL5.7目前还不支持check,只支持语法的校验,但不会生效
2.学习oracle, SQL Server,这俩个数据库是真的可以生效
一、主键 primary key
1.主键的定义有两种
1) 直接在字段后指定:字段名 primary key
CREATE TABLE t1(
id INT PRIMARY KEY,
`name` VARCHAR(32));
2) 在表的定义之后写primary key (列名);
CREATE TABLE t2(
id INT,
`name` VARCHAR(32),
PRIMARY KEY (`name`));
2.一张表最多只能有一个主键,但可以符合主键
CREATE TABLE t3(
id INT,
`name` VARCHAR(32),
PRIMARY KEY(id, `name`)); -- 这里就是复合主键
3.主键列的值是不可以重复的,且不能为null
INSERT INTO t1
VALUES(null, 'tom'); -- false
二、非空 not null 默认 default
1.非空约束,用于约束该字段的值不能为null
2.默认约束,插入字段值的时候,若没有插入值则使用默认值
create table t4(
id int primary key,
'name' varchar(32) not null default '');
# 表示name字段不可以为空,可配合default(默认)使用
# 默认为空字符串
三、唯一 unique
1.当定义了unique约束后,该字段的值是不能重复的
2.如果该字段指定了unique却没有指定not null,则该unique字段中可以有多个null值
【如果该字段同时使用了unique 和not null 字段,使用效果就像主键 primary key】