“Day46-数据库(三)学习笔记”
一、约束条件补充
我们已学习了三个约束条件,分别是:null/not null、unsigned、zerofill, 接下来将补充学习4个常用的约束条件。
它们分别是:default、unique、primary key、auto_increment
1.1 default(默认值)
1.2 unique(唯一)
1.3 primary key(主键)
1.4 auto_increment(自增)
结论
补充
二、表与表之间建关系
2.1 什么是表关系
当我们有需要,需要定义一张员工表,表中有很多字段
编号 |
姓名 |
性别 |
部门名称 |
部门信息 |
id |
name |
gender |
dep_name |
dep_desc |
该表有三个问题:
- 该表的组织结构不是很清晰(可忽视)
- 浪费硬盘空间(可忽视)
- 数据的扩展性极差(无法忽视的)
就类似于将所有代码都写在了一个py文件里,有些混乱
如何优化? 可以将员工表拆分位员工表和部门表,此时就需要使用外键(foreign key)
将表与表关联到一起
2.2 表关系
表与表之间最多只有四种关系
- 一对多关系(多对一也叫一对多)
- 多对多关系
- 一对一
- 没有关系
接下来分别介绍前三种关系
2.2.1 一对多关系
思考:员工表与部门表的关系
一个员工能否对应多个部门? — 不能
一个部门能否对应多个员工? — 可以
得出结论:员工表与部门表示单向的一对多,所以表关系就是一对多
☀️PS:
foreign key定义准则:
- 一对多表关系 外键字段建在多的一方
- 在创建表的时候 一定要先建被关联表
- 在录入数据的时候 也必须先录入被关联表
员工表( employee)和部门表(department)一对多关系的案例:
2.2.2 级联更新/级联删除
在2.2.1的案例中,我们可以正常添加数据,但如果需要修改/删除表中的数据,就会显得有点麻烦
需要先删除对应的员工数据,之后再删除/修改部门数据,操作太过繁琐
需要真正做到数据之间有关系,要做到:
更新就同步更新 —- 级联更新
删除就同步删除 —- 级联删除
2.2.3 多对多
以图书表和作者表为例,
一本书可以有多个作者
一个作者也可以有多本书
2.2.4 一对一
2.2.5 总结
三、表操作
3.1 修改表(了解)
3.2 复制表(了解)
四、练习
练习:账号信息表,用户组,主机表,主机组
练习: