约束是作用于表中字段的规则,用于限制存储在表中的数据,为了保证数据库的正确性,有效性和完整性。
外键的类型:
NOT NULL(非空约束):限制字段的数据不能为NULL。如姓名,年龄。
UNQUE(唯一约束):保证字段的所有数据都是唯一,不重复的。如身份证号、手机号
PRIMARY KEY(主键约束):主键是一行数据的唯一标识,要求非空且唯一。如ID编号
DEFAULT(默认约束):保存数据时,如果没用指定该字段的值,则采用默认值。如设置默认时间
CHECK(检查约束):保证字段值满足某一个条件。
FORELGN KEY(外键约束):用来让两张表的数据之间建立连接,保证数据的一致性和完整性。
实例:
字段名 字段含义 字段类型 约束条件 约束关键字 id ID唯一标识 int 主键,自动增长 PRINMARY KEY,AUTO_INCREMENT name 姓名 varchar(10) 不为空,唯一 NOT NULL,UNIQUE age 年龄 int 大于18,小于60 CHECK gender 性别 char(1) 无 time_day 入职时间 date 默认为当天时间 DEFAULT create table user( id int PRIMARY KEY AUTO_INCREMENT COMMENT 'ID唯一标识', name varchar(10) NOT NULL UNIQUE COMMENT '姓名', age int CHECK ( age>18 && age<60 ) COMMENT '年龄', gender char(1) COMMENT '性别', time_day DATE DEFAULT '2024-09-01' COMMENT '入学时间' )COMMENT '学生登记表';
以上解释根据需求的建表语句,下面为字段插入如下数据。
insert into user (name,age,gender,time_day) VALUES ('张三','20','男','2024-09-02'), ('李四','16','男','2024-09-02'), ('王老五','19','男','2024-09-01'), (null,'20','女','2024-09-02');
数据1:满足所设置的约束条件,所以可以插入数据。
数据2:年龄不满足检查约束设置的值,所以数据不插入,但是ID会增加1。
数据3:满足所设置的约束条件,所以可以插入数据,ID为3。
数据4:姓名设置了非空,所以不满足条件。
外键:用来让两张表的数据之间建立连接,从而保证数据的一致性个完整性
添加外键:
CREATE TABLE <表名>(
<字段名> <数据类型>,
...
[CONSTRAINT] [外键名称] FOREIGN KEY(外键字段名) REFERENCES <主表>(主表列名)
);
或者
ALTER TABLE <表名>
ADD CONSTRAINT <外键名称>
FOREIGN KEY(外键字段名)
REFERENCES <主表>(主表名);
删除外键
ALTER TABLE <表名> DROP FOREIGN KEY <外键名称>;
外键约束:
约束行为: 可以在添加外键后面添加ON UPDATE <行为> ON DELETE <行为>
行为 | 说明 |
---|---|
NO ACTION | 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许更新/删除。 |
RESTRICCT | 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许更新/删除。 |
CASCADE | 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有,则也更新/删除对应外键 |
SET NULL | 当父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该该外键值为NULL |
SET DEFAULT | 父表有变更时,子表将设置成一个默认值。 |