约束
关键词 | 说明 |
---|---|
主键约束 | PRIMARY KEY AUTO_INCREMENT |
非空约束 | NOT NULL |
唯一约束 | UNIQUE |
默认约束 | DEFAULT |
检查约束 | CHECK |
外键约束 | FOREIGN KEY |
示例:
CREATE TABLE IF NOT EXISTS itcast.user (
id int PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
name VARCHAR(10) NOT NULL UNIQUE COMMENT '姓名',
age int check (age > 0 and age <= 120) COMMENT '年龄',
status CHAR(1) DEFAULT '1' COMMENT '状态',
gender CHAR(1) COMMENT '性别'
)COMMENT '用户表';
外键约束
外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性;
添加外键语法
ALTER TABLE 从表 add CONSTRAINT 外键 FOREIGN KEY (从表字段) REFERENCES 主表(主表字段名);
删除外键语法
ALTER TABLE 表名 DROP FOREIGN KEY 外键;
外键的删除更新行为
行为 | 说明 |
---|---|
NO ACTION | 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不容许删除/更新。(与RESTRICT 一致) |
RESTRICT | 当在附表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不容许删除/更新.(与NO ACTION 一致) |
CASCADE | 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有,则也删除/更新外键在字表中的记录 |
SET NULL | 当父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置自表中该外键值为null(这就要求该外键允许取null) |
SET DEFAULT | 父表有变更时,字表将外键列设置成一个默认的值(Innodb不支持) |
语法
ALTER TABLE 表名 add CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES 主表名称(主表字段名) ON UPDATE 约束行为 ON DELETE 约束行为;