一、概述
1.概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
2.目的:保证数据库中数据的正确、有效性和完整性。
3.分类:
二、约束的演示
1.案例:根据下表中的需求,完成表结构的创建。
标红位置为约束和它们的写法。
create table 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 '用户表';
验证:
(1)插入初始数据
insert into user (name, age, status, gender)
values ('Tom1',19,'1','男'),('Tom2',25,'0','男');
(2)增加数据
insert into user (name, age, status, gender)
values ('Tom3',19,'1','男')
可以看到,即便不在insert语句中说明id项,新添加的数据也会自动匹配对应增加的id。但是需要注意的是,就算插入数据失败,id也会自增,可能会出现id数和已有数据数量不匹配。
(3)尝试插入错误格式的数据
insert into user (name, age, status, gender)
values (null,19,'1','男');//name值为空
insert into user (name, age, status, gender)
values ('Tom3',19,'1','男');//name值重复
还可以自行尝试插入更多错入格式来观察它的报错。
(4)再次插入正确格式的数据
insert into user (name, age, status, gender)
values ('Tom4',80,'1','男');
(5)不在类型名中声明status,来观察default约束能否产生作用
insert into user (name, age, gender)
values ('Tom5',80,'男');
三、外键约束
1.概念
外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。
下图中的dept_id就被称为外键。
但是上述的表在数据库层面还未建立外键关联,所以是无法保证数据的一致性和完整性的。
2.案例演示
(1)创建数据
部门表:id为主键。
员工表,dept_id作为外键,之后用于关联部门表中的id主键。
(2)添加外键
建好表之后,两张表在数据库层面实际上还没有关联,需要手动关联来添加外键。
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);
尝试阐述部门表中的研发部,报错,因为它关联了员工表,员工表中有绑定了研发部的id。
alter table emp drop foreign key fk1_emp_dept_id;
再次尝试删除部门表中的研发部。
四、外键约束
删除/更新行为
例1:
alter table emp add constraint fk1_emp_dept_id foreign key (dept_id) references dept(id) on update cascade on delete cascade ;
(1)修改科研部的id
(2)删除科研部
例2:
alter table emp add constraint fk1_emp_dept_id foreign key (dept_id) references dept(id) on update set null on delete set null ;
修改科研部的ID,员工表中绑定了科研部的dept_id全部变为null。
页面更新:2024-02-28
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号