mysql可以对要插入的数据进行特定的验证,只有满足条件才允许插入到数据表中,否则被认为非法的插入。例如:一个人的性别只能是男或女,一个人的工资只能是正数。
(1)主键约束——PRIMARY KEY
声明了主键约束的列上的值不允许重复,一个表中只能有一个主键,通常加在编号列,查询的时候会按照主键编号从小到大排序,会加快查找速度。其中,NULL表示空,在插入数据的时候,表示无法确认的数据,例如无法确认员工的生日,所属部门都可以使用NULL。
(2)非空约束——NOT NULL
声明了非空约束的列上不能插入NULL。
(3)唯一约束——UNIQUE
声明了唯一约束的列上不能插入重复的值,允许插入NULL,而且允许插入多个NULL。
注意:两个NULL比较是不相等的。
(4)检查约束——CHECK
检查约束可以对插入的数据进行自定义的验证。例如:
CREATE TABLE student(
score TINYINT CHECK(score>=0 AND score<=100)
);
但是,mysql中不支持检查约束,因为检查约束会降低数据的插入速度,造成服务器端的压力。
(5)默认值约束——DEFAULT
可以使用DEFAULT关键字声明默认值,有两种方式可以应用默认值。例如:
INSERT INTO laptop VALUES(1,'小米 Air',DEFAULT..);
INSERT INTO laptop(lid,title) VALUES(2,'外星人');
(6)外键约束——FOREIGN KEY
声明了外键约束的列,取值必须在另一个表的主键列上出现过的,两者的列类型保持一致,允许使用NULL。语法格式为:FOREIGN KEY(列) REFERENCES 数据表(主键列)。
(7)自增列约束——AUTO_INCREMENT
自动增长,加入一个列声明了自增列,则无需动手赋值一个数字,直接赋值为NULL,会获得当前的最大值,然后加1插入。注意,该约束只适用于正数型的主键列上,允许手动赋值。