学习目标
-
能够说出多表之间的关系及其建表原则
-
能够理解三大范式
-
能够使用内连接进行多表查询
-
能够使用左外连接和右外连接进行多表查询
-
能够使用子查询进行多表查询
-
能够理解多表查询的规律
-
能够理解事务的概念
-
能够说出事务的原理
-
能够在MySQL中使用事务
数据库三大范式
第一范式:最基本的要求,每一列要保证原子性,不可再分割
第二范式(2NF)要求在第一范式的基础上数据库表中的每个实例或记录必须可以被唯一地区分,表中的每一个字段都依赖于主键。(一张表只能描述一件事情 ;每张表必须有主键)
第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息。
数据库三大范式小结 | 说明 |
---|---|
1NF | 最基本的要求,每一列必须具有原子性,不可再分割 |
2NF | 满足1NF基础上,满足下面两个条件 每张表必须有主键 一张表只描述一件事件 |
3NF | 满足2NF基础上,满足一个条件 一张表只能引用另一张表的主键列的值。 |
表关系-一对一
表关系-一对多
一对多建表原则小结
在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键
表关系-多对多
多对多建表原则小结
需要创建一个中间表,中间表至少有两个字段,这两个字段分别作为外键引用各种1方的主键,这两个字段一起作为中间表主键共同确定中间表记录的唯一性,主键称为联合主键。
内连接查询
内连接查询分类 | 语法 |
---|---|
隐式内连接 | select * from 左表,右表 where 条件; |
显示内连接 | select * from 左表 inner join 右表 on 条件; inner 关键字可以省略 |
内连接查询的特点:使用左表的记录去匹配右表的记录,只有满足条件的记录才会查询出来。
总结多表连接查询步骤:
- 先确定要查询的表有哪些
- 然后确定要查询的字段有哪些
- 最后确定查询条件
左外连接查询
语法:select 字段 from 左表 left join 右表 on 条件;
特点:能够保证左表的记录全部查询出来。
右外连接查询
语法:select 字段 from 左表 right join 右表 on 条件;
特点:能够保证右表的记录全部查询出来
多行多列子查询
事务概述
在实际的业务开发中,有些业务操作要多次访问数据库。一个业务要发送多条SQL语句给数据库执行。需要将多次访问数据库的操作视为一个整体来执行,要么所有的SQL语句全部执行成功。如果其中有一条SQL语句失败,就进行事务的回滚,所有的SQL语句全部执行失败。
事务:将一个业务操作中的多条SQL语句当成一个整体对待,这多条SQL语句要么全部执行成功,要么全部执行失败,如果有一条SQL语句执行失败,则会撤销已经成功执行的SQL语句。
手动管理事务小结 | 语句 |
---|---|
开启事务 | start transaction; |
提交事务 | commit; |
回滚事务 | rollback; |
事务的四大特性
事务四大特性 | 说明 |
---|---|
A:atomic 原子性 | 事务中的多条SQL语句是一个整体,不可再分割 要么全部执行成功,要么全部执行失败。 |
C:consistence 一致性 | 事务前后的数据要保存一致:比如转账前后总金额要一致。 |
I:isolation 隔离性 | 多个事务之间操作不能相互影响。 |
D:durablity 持久性 | 事务一旦提交则对数据库的数据影响是永久的,不可逆了。 |