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

二、主键约束(Primary Key) PK

- 单一主键 使用一个列作为主键列,当该列的值有重复时,则违反唯一约束。
- 联合主键 使用多个列作为主键列,当多个列的值都相同时,则违反唯一约束。
2.1 创建表时添加主键约束
使用DDL语句
create table 表名(
列名1 数据类型 primary key,
列名2 数据类型
);
2.2 修改表时添加主键约束
使用DDL语句
ALTER TABLE 表名 ADD PRIMARY KEY(列名);
2.3 主键自增长
使用DDL语句
alter table 表名 modify 主键 类型 auto_increment;
- 一个表中只能有一个列为自动增长。
- 自动增长的列的类型必须是整数类型。
- 自动增长只能添加到具备主键约束与唯一性约束的列上。
- 删除主键约束或唯一性约束,如果该列拥有自动增长能力,则需要先去掉自动增长然后在删除约束。
使用Navicat添加主键


2.4 删除主键
使用DDL语句
ALTER TABLE 表名 DROP PRIMARY KEY;
注意: 删除主键时,如果主键列具备自动增长能力,需要先去掉自动增长,然后在删除主键。

使用Navicat

三、外键约束(Foreign Key) FK


- 外键指向的主表的字段,要求是primary key 或者是 unique
- 表的存储引擎是innodb,这样的表才支持外键
- 外键字段的类型要和主键字段的类型一致(长度可以不同)
- 从表外键字段的值,必须在主键字段出现过,或者为null
3.1 添加外键约束
使用DDL语句
ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY( 列名 ) REFERENCES 参照的表名 (参照表的列名);
使用Navicat添加外键约束


3.2 删除外键约束
使用DDL语句
ALTER TABLE 表名 DROP FOREIGN KEY 约束名;
使用Navicat删除外键约束

四、唯一性约束(Unique)

4.1 添加唯一性约束
使用DDL语句添加唯一性约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名);
使用Navicat添加唯一性约束

4.2 删除唯一性约束
使用DDL语句删除唯一性约束
ALTER TABLE 表名 DROP KEY 约束名;
使用Navicat删除唯一性约束


五、非空约束(Not Null)

5.1 添加非空约束
使用DDL语句添加非空约束
ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL;
使用Navicat添加非空约束


5.2 删除非空约束
使用DDL语句删除非空约束
ALTER TABLE 表名 MODIFY 列名 类型 NULL;
使用Navicat删除非空约束


六、检查约束(Check)

七、查询表中的约束信息
SHOW KEYS FROM 表名;
