-
介绍:
顾名思义,约束是一种限制,它的限制是针对表中列的数据的,以此来确保表中数据的完整性、有效性和唯一性。
约束作用于表中字段上,可在创建/修改表的时候添加约束
-
分类:
约束 | 描述 | 关键字 |
---|---|---|
非空约束 | 限制该字段的数据不能为NULL | NOT NULL |
唯一约束 | 保证该字段的所有数据都是唯一、不重复的 | UNIQUE |
主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 | PRIMARY KEY |
默认约束 | 保存数据时,如果未指定该字段的值,则采用默认值 | DEFAULT |
检查约束 | 保证字段值满足某一个条件 | CHECK |
外键约束 | 用来让两张表的数据之间建立连接,保证数据的一致性和完整性 | FOREIGN KEY |
-
演示
- 要求
字段名 字段含义 字段类型 约束条件 id ID唯一标识 int 主键,并且自动增长 name 姓名 varchar(10) 不为空,并且唯一 age 年龄 int 大于0,并且小于等于120 status 状态 char(1) 如果没有指定该值,默认为1 gender 性别 char(1) 无 - 代码
CREATE TABLE heima( id INT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID唯一标识', name VARBINARY(10) NOT NULL UNIQUE COMMENT '姓名', age INT CHECK ( age > 0 && age <= 120 ) COMMENT '年龄', status CHAR(1) DEFAULT '1' COMMENT '状态', gender CHAR(1) COMMENT '性别' )comment '约束演示';
-
外键约束
-
介绍:外键用于在两张表之间建立连接,以此保证数据的一致性和完整性。
-
语法:
/* 添加外键 "外键字段名"指本表中用于做外键的字段,"主表"指与本表关联的目标表,"主表列名"指目标表中的目标字段 */ CREATE TABLE 表名( #创建数据表阶段添加外键 字段名 数据类型, ... [CONSTRAINT] [外键名称] FOREIGN KEY(外键字段名) PEFERENCES 主表(主表列名) ); ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名); #数据表创建完成之后的外键添加 /* 删除外键 */ ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
-
删除/更新行为
- 语法
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES 主表名(主表字段名) ON UPDATE 行为 ON DELETE 行为;
- 行为列表
行为 说明 NO ACTION 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。(与RESTRICT相同) RESTRICT (与NO ACTION相同) CASCADE 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有,则也删除/更新外键在子表中的记录。 SET NULL 当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(这就要求该外键允许取null)。 SET DEFAULT 父表有变更时,子表将外键列设置成一个默认的值 (Innodb1不支持)
-
MySQL存储引擎中的其中一种。 ↩︎