对于创建好的表,虽然字段的数据类型决定了所能存储的数据类型,但是表中所存储的数据是否合法并没有进行检查。在具体使用MySQL软件时,如果想针对表中的数据做一些完整性检查操作,可以通过表的约束来完成。
MySQL支持的完整性约束
所谓完整性约束是数据的准确性和一致性,而完整性检查就是指检查数据的准确性和一致性。MySQL数据库管理系统提供了一致机制来检查数据库表中的数据是否满足规定的条件,以保证数据库表中数据的准确性和一致性,这种机制就是约束。
MySQL软件所支持的完整性约束:
(1) NOT NULL 约束字段的值不能为空,保证所有记录中该字段都有值。如果用户插入的记录中,该字段为空值,则数据管理系统会报错。
(2) DEFAULT 设置字段的默认值,当为数据库表中插入一条新记录时,如果没有为某个字段赋值,那么数据库系统会自动为这个字段插入默认值。
(3) UNIQUE KEY (UK) 约束字段的值是唯一,保证所有记录中该字段上的值不重复。如果用户插入的记录中,该字段上的值与其他记录里该字段上的值重复,则数据库管理系统会报错。
(4) PRIMARY KEY (PK) 约束字段为表的主键,可以作为该表记录的唯一标识。当想用数据库表中的某个字段来唯一标识所有记录时,可用PK,称为主键约束,便于数据库管理系统快速地查找到表中的记录。主键字段的值是唯一、非空的。主键可以是单个字段,也可以是多个字段。
单字段主键 CREATE TABLE table_name (
属性名 数据类型 PRIMARY KEY,
......
);
多字段主键 CREATE TABLE table_name(
属性名 数据类型,
......
CONSTRAINT 约束名 PRIMARY KEY(字段1, 字段2)
);
(5) AUTO_INCREMENT 约束字段的值为自动增加。
该约束是MySQL中唯一扩展的完整性约束,当为数据库中插入新记录时,字段上的值会自动生成唯一的ID。在具体设置AUTO_INCREMENT约束时,一个数据库表中只能有一个字段使用该约束,该字段的数据类型必须是整数类型。由于AUTO_INCREMENT约束后的字段会生成唯一的ID,所以该字段也经常设置成PK主键。每增加一条记录,记录中该字段的值就会在前一条记录的基础上加1。
(6)FOREIGN KEY (FK) 约束字段为表的外键。
外键约束保证多个表之间的参照完整性,即构建于两个表的两个字段之间的参照关系。设置外键约束的两个表之间会具有父子关系,即子表中某个字段的取值范围由父表所决定。在具体设置FK约束时,设置FK约束的字段必须依赖于数据库中已经存在的父亲的主键,同时外键可以为NULL。
CREATE TABLE table_name(
属性名 数据类型
属性名 数据类型
......
CONSTRAINT 外键约束名 FOREIGN KEY (属性名1)
REFERENCES 表名(属性名2)
);
单列约束,即每个约束只约束一列数据;
多列约束,即每个约束可以约束多列数据