约束(Constraints)概述
约束(Constraints)是用于限制表中数据类型的规则,确保数据库中数据的准确性和可靠性。当违反约束时,MySQL会阻止操作执行
约束类型 | 关键字 | 描述 | 示例 |
---|---|---|---|
主键约束 | PRIMARY KEY |
唯一标识表中的每一行,不允许NULL值 | id INT PRIMARY KEY |
外键约束 | FOREIGN KEY |
确保一个表中的数据匹配另一个表中的值 | FOREIGN KEY (dept_id) REFERENCES departments(id) |
唯一约束 | UNIQUE |
确保列中的所有值都是不同的 | email VARCHAR(100) UNIQUE |
非空约束 | NOT NULL |
强制列不接受NULL值 | name VARCHAR(50) NOT NULL |
检查约束 | CHECK |
确保列中的值满足特定条件 | age INT CHECK (age >= 18) |
默认值约束 | DEFAULT |
当没有指定值时设置列的默认值 | status VARCHAR(10) DEFAULT ‘active’ |
自动递增 | AUTO_INCREMENT |
自动为新行生成唯一编号(通常用于主键) | id INT AUTO_INCREMENT PRIMARY KEY |
注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。
案例
根据需求,完成表结构的创建
字段名 | 字段含义 | 字段类型 | 约束条件 | 约束关键字 |
---|---|---|---|---|
id | ID唯一标识 | int | 主键,并且自动增长 | PRIMARY KEY, AUTO_INCREMENT |
name | 姓名 | varchar(10) | 不为空,并且唯一 | NOT NULL, UNIQUE |
age | 年龄 | int | 大于0,并且小于等于120 | CHECK |
status | 状态 | char(1) | 如果没有指定该值,默认为1 | DEFAULT |
gender | 性别 | char(1) | 无 |
答:
1 | create table user( |
验证
1 – 插入数据, 其中没有插入id 验证了id 有自增的约束
1 | insert into user(name, age,status,gender) values ('tom1',22,'1','男'),('tom2',24,'0','男'); |
2 – 验证了 name 的唯一性,name 也不能为 null
1 | insert into user(name, age,status,gender) values ('tom3',26,'0','男'); |
3 – 验证age
1 | insert into user(name, age,status,gender) values ('tom4',29,'1','男'); |
4 – 验证status默认值, 这里没有输入 status 值,表依旧会输出默认值 1
1 | insert into user(name, age,gender) values ('tom6',120,'男'); |