约束条件
• 约束条件是在表上强制执行的数据检验规则
• 用来保证创建的表的数据完整性和准确性
• 主要在两方面对数据进行约束:空值和重复值
MySQL数据库常用约束条件
1 主体完整性
1.1 主键约束
特点
- 能够唯一地标识表中的一条记录
- 非空不重复,要求主键列的数据必须是唯一的,并且不允许为空
- 每个表中只能有一个主键
- 可以设置单字段主键,也可以设置多字段联合主键(一张表只能有一个主键,但是构成主键的字段可以有多个,这样就是一个联合主键。联合主键中多个字段的数据完全相同时,才违反主键约束)。
添加方法
create table 表名(字段1 数据类型 primary key,字段2 数据类型[,…]);
create table 表名(字段1 数据类型,字段2 数据类型[,…], primary key(主键字段));
create table 表名(字段1 数据类型,字段2 数据类型[,…], primary key(主键字段1, 主键字段2[,…]));
删除方法
alter table 表名 drop primary key;
1.2 唯一约束
特点
- 要求该列的值必须是唯一的
- 允许为空,但只能出现一个空值
添加方法
create table 表名(字段1 数据类型,字段2 数据类型 unique[,…]);
删除方法
alter table 表名 drop index 唯一约束名;
如果单个字段没有指定唯一约束名,则默认的唯一约束名为字段名。如果是多个字段组合为唯一约束时候,默认的唯一约束名为第一个字段的名称。如果指定了约束名,则删除的时候写约束名。
1.3 自增字段
特点
- 指定字段的数据自动增长
- 配合主键一起使用,并且只适用于整数类型
- 默认从1开始,每增加一条记录,该字段的值会增加1
添加方法
create table 表名(字段1 数据类型 primary key auto_increment,字段2 数据类型[,…]);
设置自增字段的初始值
Alter table 表名 auto_increment=n;
删除方法
alter table 表名 modify 字段名 数据类型[ 约束条件];
2 域完整性
2.1 非空约束
特点
字段的值不能为空
添加方法
create table 表名(字段1 数据类型,字段2 数据类型 not null[,…]);
删除方法
alter table 表名 modify 字段名 数据类型[ 约束条件];
2.2 默认约束
特点
指定某个字段的默认值,如果新插入一条记录时没有为默认约束字段赋值,那么系统就会自动为这个字段赋值为默认约束设定的值。
添加方法
create table 表名(字段1 数据类型1,字段2 数据类型2 default 默认值[ ,…]);
删除方法
alter table 表名 modify 字段名 数据类型[ 约束条件] ;
3 参照完整性
3.1 外键约束
特点
- 某一表中某字段的值依赖于另一张表中某字段的值
- 主键所在的表为主表,外键所在的表为从表
- 每一个外键值必须与另一个表中的主键值相对应
添加方法
先创建主键所在的主表,再创建外键所在的从表
creat table 表名(字段名1 数据类型1,字段名2 数据类型2[,……,][constraint 外键约束名] foreign key(字段名) references 主表(主键字段));
删除方法
alter table 表名 drop foreign key 外键约束名;
先删除从表,再删除主表。先删除外键约束,再删除表。
4 用户自定义完整性
4.1 检查约束
特点
指定需要检查的限定条件
添加方法
creat table 表名 ( 字段名1 字段类型1, 字段名2 字段类型2 check(<限定条件>)[,……]);
删除方法
alter table 表名 drop constraint <检查约束名>;