持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情
大家好! 我是慕歌,一只想教你学习 后端技术的野生coder! 欢迎来到慕歌的数据库系列教程,希望通过这个教程带大家深入学习数据库技术,该教程所有知识点均来源于本人的日常学习与开发中,如有疑问请与我联系!
前言
在上一节的分享中,慕歌向大家分享关于数据库约束的部分介绍。主要介绍了非空约束,唯一约束以及主键约束的语法创建以及,数据表建立后如何进行约束的追加,删除。非空约束主要是对内容形式的要求,对于所有数据类型都生效,且非空约束只能作用一列数据字段。唯一约束依靠唯一索引的建立,确保字段的唯一性,唯一性约束作用于一个或多个字段,删除唯一约束只需删除索引即可。主键约束是最有特殊的存在,在每一张数据表中,主键约束也依赖于主键索引,主键也可作用于多个字段。
以上就是对约束的回顾,主要从语法,使用规则,约束作用角度进行分析。
数据约束
约束查询:
当我们想知道当前数据表中的约束时:
#表名称
SELECT * FROM information_schema.table_constraints
WHERE table_name = '表名称';
外键约束:
**作用:**用于限定某个表字段的引用完整性,存在于主表与从表之间
#关键字:FOREIGN KEY 指定列, reference 指定参考关系
#主表语法
CREATE TABLE tab_name1(
col_name1 type PRIMARY KEY,
col_name2 type NOT NULL
);
#从表语法
CREATE TABLE tab_name2(
col_name1 type PRIMARY KEY,
col_name2 type NOT NULL,
FOREIGN KEY(col-name1) references table_name1(col_name1)
);
#说明:外键约束一定是两个表之间建立,有主表与从表之分
#主表提供主要字段,作为参考
#从表的该字段受主表参考的影响
#主表字段与从表的字段类型,逻辑必须一致
#示例:
#在从表中指定外键约束
#emp表的deptid和和dept表的did的数据类型一致,意义都是表示部门的编号
create table dept( #主表
did int primary key, #部门编号
dname varchar(50) #部门名称
);
create table emp(#从表
eid int primary key, #员工编号
ename varchar(5), #员工姓名
deptid int, #员工所在的部门
foreign key (deptid) references dept(did)
);
#说明:
#主表在从表之前建立
#删除表时,先删除从表,在删除主表
特点:
- 外键约束是对引用关系的约束,需要具有引用意义
- 外键约束约束两个表的一个列,对该列的数据具有要求
- 两个列的数据类型,逻辑需要一致,字段名可不一致
主外表关系:
- 约束针对关联字段双方
- 主表的修改删除受主表约束
- 从表的修改删除受主表约束
- 主表先于从表存在
- 删除主表时,先删除从表
建议:
自增约束
**作用:**会对字段进行自增操作
#关键字:AUTO_INCREMENT
#语法
CREATE TABLE tab_name(
col_name1 type default value ,
col_name2 type unique key auto_increment,
primary key(col_name)
);
#示例:
#建立员工表,员工号为主键,并自增
create table employee(
eid int primary key auto_increment,
ename varchar(20)
);
#追加约束
alter table table modify col_name type auto_increment;
#删除约束
alter table table modify col_name type;
特点:
检查约束
**作用:**检查某个字段是否满足某些要求,如值的范围
#关键字:CHECK
#语法
CREATE TABLE tab_name(
col_name1 type CHECK( condition ),
col_name2 type NOT NULL
);
#示例:
#要求员工的性别必须为男女其中的一种
create table employee(
eid int primary key,
ename varchar(5),
gender char check ('男' or '女')
);
#说明:这种约束类似于判断,要求数据必须满足某种条件
特点:
思考:
设置非空约束的意义?
空值不是数据类型,在进行统计的是否无法统计
设置默认值的意义?
默认值能够避免null 值问题,应在列中尽可能的使用
自增的意义?
自增约束于主键常共存,为更好保证实体的完整性约束
结语
这一节的分享到这里就结束了,下一节将带来数据库视图的分享学习!
如果您觉得本文不错,欢迎点赞支持,您的关注是我坚持的动力!