1. 简介

作用于表中字段上的规则,限制存储在表中的数据

目的:保证数据表中的数据正确性,有效性和完整性

常见的约束:

1.png

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. 外键删除更新行为

2.png

外键删除更新行为语法

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