MySQL学习篇2——约束

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(若干个列名);

主键自增长要求

  1. 一个表中只能有一个列为自动增长。
  2. 自动增长类型必须为整型。
  3. 自动增长只能添加到主键约束或唯一性约束的列上。
  4. 如果该列拥有自动增长能力,且要删除主键约束或唯一性约束时,就需要先去掉自动增长然后再删除约束。

添加主键自增长

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);

猜你喜欢

转载自blog.csdn.net/qq_42025868/article/details/123622466