文章目录
约束
一.概述
1.概念
约束是作用与表中字段上的规则,用于限制存储在表中的数据。
2.目的
保证数据库中数据的正确性,有效性和完整性。
3.分类
1.非空约束 not null
2.唯一约束 unique
3.主键约束 primary key
4.默认约束 default
5.检查约束 check
6.外键约束 foreign key
注意:约束是作用与表中字段上的,可以在创建/修改表的时候添加约束。
二、演示
1.创建有约束的表结构
(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 '用户表';
id 后面的 auto_increment 表示这个id是自增的,数据库自动维护,不用输入。
(2)插入数据:
insert into user(name,age,status,gender) values('tom1',19,'1','男');
insert into user(name,age,status,gender) values('tom2',25,'0','男');
insert into user(name,age,status,gender) values('tom3',20,'1','男');
三、外键约束
1.概念
外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。
2.示例
注意:目前上述的两张表中,在数据库层面,并未建立外键关联,所以是无法保证数据的一致性和完整性的
未建立外键关联:即——>修改父表,不会改变子表。
(1)创建表结构
create table dept(
id int auto_increment comment 'ID' primary key,
name varchar(50) not null comment '部门名称'
)comment '部门表';
create table emp(
id int auto_increment comment 'ID' primary key,
name varchar(50) not null comment '姓名',
age int comment '年龄',
job varchar(20) comment '职位',
salary int comment '薪水',
dept_id int comment '部门id'
)comment '员工表';
(2)添加外键约束的语法
alter table 表名 add constraint 外键名称 foreign key(外键字段名) references 主表(主表列名)
(3)创建表时添加外键约束语法:
create table 表明(
字段名 数据类型,
……
[constraint] 外键名称 foreign key(外键字段名) references 主表(主表列名)
);
3.外键如何保证数据的完整和一致
子表添加了父表的外键后,父表中被子表外键关联的数据由于子表外键的约束,而不能修改,这就保证了子表和父表数据的完整和统一。
4.删除/更新行为
主要介绍四种:
(1)restrict:拒绝对主表的更新删除操作
(2)no action:同restrict
(3)cascade:在主表b中删除或更新时,会自动删除或更新从表a中对应的记录
(4)set null:在主表b中删除或更新时,将子表中该外键的值设置为null
5.删除/更新行为的代码
alter table 表明 add constraint 外键名称 foreign key (外键字段) preferences 主表名(主表字段名) on update cascade on delete cascade;
on update 在更新时怎么操作
on delete 在删除时怎么操作
四、小结
1.非空约束:not null
2.唯一约束:unique
3.主键约束:primary key——>既是非空,又是唯一的 (自增 auto_increment)(只在mysql中有这个命令)
4.默认约束:default
5.检查约束:check
6.外键约束:foreign key