目录
列约束
概述
- 约束:Constraint,指表中特定列上出现的所有数据必须满足特定的内容要求,如果插入的新数据行中的数据不满足该要求,那么该记录就会无法成功插入
- 例如
- 用户名不能为空,且不能重复
- 语文成绩必须大于0且小于100
- 性别只能为男或女
- 员工所在的部门编号必须真实存在
主键约束
- PRIMARY KEY,声明了主键约束的列上不允许插入重复的值;一个表中只能有一个主键约束,通常添加在编号列上,查询时候会按照编号列从小到大排序,会加快查找速度。
- NULL表示空,在插入的时候,无法确定的数据通常用NULL,例如无法确定一个员工的性别,生日,无法确定商品的价格等;
注意:NULL使用的时候不能加引号。
主键列上禁止插入NULL。
练习:在商品表laptop中给编号添加主键约束,并插入数据测试。
非空约束
NOT NULL: 声明了非空约束的列上,禁止插入NULL
唯一约束(可能会影响排序)
- UNIQUE:声明了唯一约束的列上,禁止插入重复的值,允许插入NULL,甚至是多个NULL
- NULL:两个NULL比较是不等的,所以允许插入多个。
练习:给laptop的表title列,添加非空约束和唯一约束,并插入数据测试
默认值约束
DEFAULT:可以使用DEFAULT关键字声明默认值,具体有两种方式可以应用默认值
INSERT INTO laptop_family VALUES(36,'神州',DEFAULT);
INSERT INTO laptop_family(fid,fname) VALUES(37,'惠普');
练习:给笔记本表laptop添加默认价格为2999,默认的是否在售为0,并应用两种方式插入数据
检查约束(mysql不支持检查约束)
检查约束可以对插入的数据进行自定义的验证
CREATE TABLE student(
score TINYINT CHECK(score>=0 AND score<=100)
);
mysql不支持检查约束,会影响数据的插入速度。对服务器造成较大的压力。后期可食用JS替代此功能
外键约束
- FOREIGN KEY:外键列上出现的值必须在其参考的表的主键列上出现过,两者的列类型要保持一致
- 一个表外键列允许使用多次;而且允许使用NULL和重复值