表的约束
对表所存储的数据进行合法性检查,通过约束来实现。
1、MySQL支持的完整性约束
完整性是指数据的准确性和一致性,完整性检查就是检查数据的准确性和一致性。
MySQL除了支持SQL的完整性约束外,还扩展了AUTO_INCREMENT约束。
完整性约束关键字 | 含义 |
NOT NULL | 约束字段的值不能为空 |
DEFAULT | 设置字段的默认值 |
UNIQUE KEY(UK) | 约束字段的值唯一 |
PRIMARY KEY(PK) | 约束字段为表的主键,可以作为表记录的唯一标识 |
AUTO_INCREMENT | 约束字段的值自动增加 |
FOREIGN KEY(FK) | 约束字段为表的外键 |
约束分类:
- 单列约束:每个约束只约束一列数据
- 多列约束:每个约束可以约束多列数据
2、设置非空约束(NOT NULL,NK)
当数据表中某个字段上的内容不希望为NULL时,则可以设置NK约束进行设置。
语法形式:
create table table_name(
属性名 数据类型 NOT NULL,
……
);
3、设置字段的默认自(DEFAULT)
当数据表中插入一条新纪录时,如果没有设置某个字段的值,那么数据库系统会自动为该字段插入默认值。
语法形式:
create table table_name(
属性名 数据类型 DEFAULT 默认值,
);
4、设置唯一约束(UNIQUE KEY,UK)
当数据表中的某个字段上的内容不允许重复时,则可以使用UK约束进行设置。
语法形式:
create table table_name(
属性名 数据类型 UNIQUE KEY,
……
);
5、设置主键约束(PRIMARY KEY,PK)
当想用数据表中的某个字段来唯一标识数据库中的记录时,则可以使用PK约束来进行设置。
主键约束 = 非空约束 + 唯一约束
主键分为多字段主键和单字段主键。
create table table_name(
属性名 数据类型 PRIMARY KEY,
……
);
6、设置字段的自动增长(AUTO_INCREMENT)
一个表中只有一个字段能使用此约束,该字段的类型必须为整数类型。由于AUTO_INCREMENT约束后的字段会生成唯一的ID,所以用该字段也经常会设置成PK主键。
create table table_name(
属性名 数据类型 AUTO_INCREMENT,
……
);
7、设置外键约束(FORIEGN KEY,FK)
外键约束保证多个表之间的完整性约束。设置外键约束的两个表之间具有父子关系,即子表的某个字段取值范围由父表决定。
设置FK约束的字段必须依赖于数据库中已经存在的父表的主键。
create table table_name(
属性名 数据类型,
……
CONSTRAINT 外键约束名 FOREIGN KEY(属性名1)
REFERENCES 表名(属性名2)
)