-
常见约束
-
含义:限制表中的数据,为了保证数据的准确性与可靠性
-
分类:六大约束
not null:非空,保证该字段值不可为空
default: 默认值约束,用于保证该字段有默认值
primary key:主键,保证字段值唯一且非空
unique:唯一,保证该字段唯一,可以为空
check: 检查约束
foreign key: 限制两个表关系,保证该字段值必须来自主表的关联列的值
(在从表添加外键约束,用于引用主表中的某列值) -
约束添加分类:
-
列级约束:外键约束无效果
-
表级约束:除了非空和默认都支持
-
-
主键和唯一的区别:
保证唯一性 是否允许为空 一个表中的个数 是否允许组合
主键 是 不允许 至多一个 允许(只有组合的字段值都相同时报错)
唯一 是 允许 可以多个 允许(只有组合的字段值都相同时报错) -
外键:
- 在从表设置关系
- 主从表字段类型一致,名称可不同
- 关联列必须为主键或者唯一键
- 先插入主表数据
- 先删除从表数据
-
列级约束和表级约束:
位置 支持的约束类型 是否可以起名(constraint 约束名)
列级约束 列后面 语法都支持,但外键没有效果 不可以
表级约束 所有列下面 非空和默认不支持 可以
-
# 1. 创建表时添加约束
CREATE DATABASE students;
## 1.1 列级约束
USE students;
CREATE TABLE stuinfo(
id INT PRIMARY KEY,
stuName VARCHAR(20) NOT NULL UNIQUE, ## 添加多个约束
gender CHAR(1) CHECK(gender='男' OR gender='女'),
seat INT UNIQUE,
age INT DEFAULT 18,
majorId INT REFERENCES major(id) ##无效果
);
DESC stuinfo