MySQL - 约束
1. 简介
作用于表中字段上的规则,限制存储在表中的数据
目的:保证数据表中的数据正确性,有效性和完整性
常见的约束:

2. 演示
-- 外键依赖的班级表
CREATE TABLE CLASS (
CLASS_ID INT PRIMARY KEY,
CLASS_NAME VARCHAR(50) NOT NULL
);
-- 学生表
CREATE TABLE STU (
STU_ID INT PRIMARY KEY,
STU_NAME VARCHAR(50) NOT NULL,
STU_NUM VARCHAR(20) UNIQUE,
GENDER CHAR(2) DEFAULT '男' CHECK (GENDER IN ('男','女')),
AGE INT CHECK (AGE > 0 AND AGE <= 100),
CLASS_ID INT,
FOREIGN KEY (CLASS_ID) REFERENCES CLASS(CLASS_ID)
);3. 外键约束
将两张表的之间建立连接,从而确保数据的一致性和完整性
外键约束语法
-- 建表时添加外键约束
CREATE TABLE 表名 (
字段名 数据类型,
...
[CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主表列名)
);
-- 建表后添加外键约束
ALTER TABLE 表名 ADD [CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主表列名)
-- 删除外键约束且已知外键名称
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称
-- 删除外键约束且未知外键名称
-- 查询约束名
SELECT
CONSTRAINT_NAME,
COLUMN_NAME,
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
TABLE_NAME = 表名
AND REFERENCED_TABLE_NAME IS NOT NULL;
-- 删除外键约束
ALTER TABLE STU
DROP FOREIGN KEY CONSTRAINT_NAME;4. 外键删除更新行为

外键删除更新行为语法
-- 建表后添加外键约束
ALTER TABLE 表名 ADD [CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主表列名) ON UPDATE [行为] ON DELETE [行为];
评论