SQL的六种约束
约束关键字 Constraints
作用:限制表的数据类型,
第一种方式:创建表的时候添加约束,create table语句
第二种方式:创建表之后添加约束,alter table语句
注:红色为注意事项
1、not null(不能为空)
创建表时约束not null
创建car表时约束了carid字段不能为空
2、unique(此字段的每条记录必须唯一,一般我们用来约束id,他和primary key一样,都对字段保证了唯一性)
创建表时约束unique
创建表之后约束unique
图一:创建car表的时候约束了字段carid必须拥有唯一性
图二:修改car表字段类型,给car表的carname字段添加一个unique约束
3、primary key(设置此字段为这张表的主键,每个表应该有一个主键,而且每个表都只能有一个主键,主键字段必须唯一且不能有null值)
创建时设置主键
创建后设置主键
图略:alter语法
附:primary key还有一种情况,联合主键。(一句话概括 = 两个或两个以上的字段都设置成主键),这里看似违反了unique,其实不然。它是把联合主键看成一个主键
这里我们说一下联合主键,见下图
创建表时设置联合主键
我们可以看到被创建的car表,他的两个字段carid和carname被设置成了联合主键
创建后设置主键
图略:alter语法
4、foreign key(设置此字段为这张表的外键,它指向另一张表的主键。)
foreign key约束防止破坏表连接,外键字段里的所有数据,必须是另一张表的主键字段里的值。
也就是说,一张表的外键必须指向另一张表的主键
创建时设置外键
创建smallcar表,给smallcarid字段设置了主键,给carid字段设置了指向car表的carid字段的外键
创建后设置外键
图略:alter语法
5、check(约束用于限制字段中的值的范围)
对单个字段check的约束,那只允许该字段的值为特定的值
对表check的约束,会在特定的字段进行数据限制
创建表时check约束
约束字段carid的值必须大于0,多个check约束可以效仿上面的几个约束。
但是括号里面要用and进行隔开
创建表后check约束
图略:alter语法
6、default(默认值,如果定义了默认值,再插入数据时如果没有插入数据,会根据默认值插入)
创建时设置default约束
上面的carname记录是自动添加的
给carname字段设置了default约束,那么我们在插入记录的时候即使没有填写carname字段的数据。会默认给我们一个'carname‘数据
创建后添加default约束
图略:alter语法