MySQL约束
MySQL有如下约束:
约束类型 | 约束作用 |
---|---|
Primary Key(主键约束) | 1. 不允许为空值 2. 不允许有重复值出现 3. 能够确保数据的唯一性 |
Foreign Key(外键约束) | 1. 可以有重复值 2. 可以有空值 3. 值必须是另一个参照表内的值 4. 能够保证数据在参照表中的完整性 |
Unique(唯一性约束) | 1. 相同值只能出现一次 2. 可以多个列添加唯一性约束 3. 能够保证数据的唯一性 |
Not Null(非空约束) | 1. 列中不能出现空值 2. 可以有重复值 3. 可以多个列添加非空约束 4. 能够保证数据没有空值 |
主键约束
单一主键:使用一个列作为主键。
联合主键:使用多个列作为主键,意思是多个列的每一行作为单一数据,判断是否会与其它行重复。
MySQL语句
alter table 表名 add primary key(若干个列名);
主键自增长要求:
- 一个表中只能有一个列为自动增长。
- 自动增长类型必须为整型。
- 自动增长只能添加到主键约束或唯一性约束的列上。
- 如果该列拥有自动增长能力,且要删除主键约束或唯一性约束时,就需要先去掉自动增长然后再删除约束。
添加主键自增长
alter table 表名 modify 主键 类型 auto_increment;
删除主键约束
alter table 表名 drop primary key;
若该主键有自增长能力,则需要删除自增长
alter table 表名 modify 列名 数据类型;
外键约束
如上图有两张表,分别是学生表与学院表。众所周知,每个学生都有自己所在的学院,所以学生表中的part_id就是代表的学院表中的id,学生表中的part_id就是学生表的外键约束。
添加外键约束
alter table 表名 add constraint 约束名 foreign key(列名) references 参照的表名(参照列名);
删除外键约束
alter table 表名 drop foreign key 约束名;
唯一性约束
添加唯一性约束
alter table 表名 add constraint 约束名 unique(列名);
删除唯一性约束
alter table 表名 drop key 约束名;
非空约束
添加非空约束
alter table 表名 modify 列名 类型 not null;
删除非空约束
alter table 表名 modify 列名 类型 null;
创建表时添加约束
查询表中的约束信息
show keys from 表名
列子
创建 depts 表包含 department_id 该列为主键且自动增长,department_name 列不允许重复,location_id 列不允含有空值。
create table depts(department_id int primary
key auto_increment,
department_name varchar(30) unique,
location_id int not null);