image.png

约束概述

数据库约束是对表中的数据进行进一步的限制,保证数据的正确性、有效性和完整性。

  1. 主键约束(Primary Key)

PK主键约束是使用最频繁的约束。在设计数据表时,一般情况下,都会要求表中设置一个主键。 主键是表的一个特殊字段,该字段能唯一标识该表中的每条信息。例如,学生信息表中的学号是唯一的。

  1. 外键约束(Foreign Key) FK

外键约束经常和主键约束一起使用,用来确保数据的一致性。

  1. 唯一性约束(Unique)

唯一约束与主键约束有一个相似的地方,就是它们都能够确保列的唯一性。与主键约束不同的是,唯一约束在一个表中可以有多个,并且设置唯一约束的列是允许有空值的。

  1. 非空约束(Not Null)

非空约束用来约束表中的字段不能为空。

  1. 检查约束(Check)

检查约束也叫用户自定义约束,是用来检查数据表中,字段值是否有效的一个手段,但目前 MySQL 数据库不支持检查约束。

添加/删除主键约束

  1. 单一主键使用一个列作为主键列,当该列的值有重复时,则违反唯一约束。
  2. 联合主键使用多个列作为主键列,当多个列的值都相同时,则违反唯一约束。

修改表添加主键约束
ALTER TABLE 表名 ADD PRIMARY KEY(列名);

主键自增长
MySQL 中的自动增长类型要求:

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

alter table 表名 modify 主键列名 类型 auto_increment;

删除主键
ALTER TABLE 表名 DROP PRIMARY KEY;
注意:删除主键时,如果主键列具备自动增长能力,需要先去掉自动增长,然后在删除 主键。
案例:
alter table emp modify employee_id int; //去除自增
alter table emp drop primary key;

添加/删除外键约束

image.png
语法:ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY( 列 名 )REFERENCES 参照的表名(参照的列名);
案例:alter table employee add constraint emp_fk foreign key(dept_id)references department(id);

删除外键约束:
ALTER TABLE 表名 DROP FOREIGN KEY 约束名;
alter table employee drop foreign key emp_fk;

添加/删除唯一性约束

语法:ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名);
alter table employee add constraint emp_uk unique(id);

删除唯一性约束
ALTER TABLE 表名 DROP KEY 约束名;

添加/删除非空约束

语法:ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL;
ALTER TABLE 表名 MODIFY 列名 类型 NULL;

创建表时添加约束

查看表中的约束信息:SHOW KEYS FROM 表名;
案例:create table depts(department_id int primary key auto_increment,department_name varchar(30)unique,location_id int not null);