three,mySQL多表和事务

一.三范式
a) 范式;
设计数据库的规则,好得数据库设计对数据的存储性能和后期的程序开发,都会有很大的影响.
b) 范式基本类型;
目前数据库有六大范式,第一范式1nf,第二范式2nf,第三范式3nf,巴斯-科德范式bcnf.第四范式4nf 和第五范式(5nf,又称完美范式),每一个范式都是在别一个范式的基础之上进行建立的,一般来说数据库满足第三个范式即可
c) 第一范式;
每一列都不能进行拆分,称之为原子性,
d) 第二范式;
要求数据库表中的每个实例或记录必须可以被唯一地区分.每一张表都可以作为一个独立事件并且是唯一的,实体的属性完全依赖于注关键字,新实体于原始有一对多的关系,在第一范式的基础之上完全依赖于主键
e) 第三范式;
从表的主键必须使用主表的主键,是第二的子集,
在这里插入图片描述
在这里插入图片描述
二.多表查询
a) 多表查询;同时查询多张表获取到需要的数据
在这里插入图片描述
在这里插入图片描述
b) 笛卡尔积现象;多表查询的时左表的每条数据和右表的每条数据组合,这种效果成为笛卡尔积
在这里插入图片描述
i. 清除笛卡尔积现象的影响;选取我们想要的数据,
在这里插入图片描述
c) 内连接;用左边表的记录去匹配右边表的记录,如果符合条件的则显示
i. 隐式内连接;看不见join关键字,条件使用where指定select字段名from 左表,右表 where条件;
在这里插入图片描述
ii. 显示内连接;使用inner join …on语句,可以省略inner Select字段名from 左表 inner join 右表 on 条件;
在这里插入图片描述
d) 左外连接;使用left outer join …on,outer可以省略select字段名from 左表left outer join 右表on条件. 根上图所示, B相交于A,且B为空,
在这里插入图片描述
e) 右外链接;使用right outer join …on,outer可以省Select 字段名 from 左表 right outer join 右表 on 条件,跟上图所示A相交于B,且A为空
在这里插入图片描述
f) 子查询;一条select查询的结果,作为另一条select语法的一部分.
i. 子查询的结果是一个值
在这里插入图片描述
ii. 单列多行;结果为单列,肯定在where后面作为条件使用
在这里插入图片描述
iii. 多列多行;结果为多列,肯定在from后面作为虚拟表使用
在这里插入图片描述
三.多表查询案例
a) 准备数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
b) 练习1
在这里插入图片描述
c) 练习2
在这里插入图片描述
d) 练习3
在这里插入图片描述
e) 练习4
在这里插入图片描述
f) 练习5
在这里插入图片描述
四.事务安全
a) 概述;事务
是指逻辑上的一组操作单元,组成这组操作的各个单元,要么都成功,要么都失败.
b) 事务的应用场景说明;实际业务中,有些业务操作需要进行多次访问数据库,需要将多次访问数据库的操作视为一个整体来执行,要么所有的SQL语句全部执行成功,如果有一条SQL语句失败,就进行事务的回滚,所有SQL语句全部失败
c) 操作事务i. 手动事务;第一种情况;开启事务->执行SQL语句->成功->提交事务第二种情况;开启事务->执行SQL语句->失败->回滚事务
SQL 描述S
trat transaction 开启事务
Rollback 回滚事务
Commit 提交事务
在这里插入图片描述
在这里插入图片描述
i.i 自动事务;
1.使用 show variables like %commit%;查看mySQL是否开启自动提交事务0
2. 取消自动提交事务,设置自动提交的参数为off,执行SQL语句;set autocommit = 0;
d) 事务管理;食物开启之后,所有的操作都会临时保存到事务日志,事务日志只有在得到commit 命令才会同步到数据表中,其他任何情况都会清空事务日志(rollback,断开连接),
在这里插入图片描述
2. 取消自动提交事务,设置自动提交的参数为off,执行SQL语句;set autocommit = 0;a) 事务管理;食物开启之后,所有的操作都会临时保存到事务日志,事务日志只有在得到commit 命令才会同步到数据表中,其他任何情况都会清空事务日志(rollback,断开连接)
a) 回滚点;在事务的执行过程中,有很多条信息,如果你一条输入错误后,则就要所有重新录入,你可在成功的范围之内设置回滚点,如果之后错误,就可以回到回滚点在进行操作,
i. 设置回滚点 savepoint 回滚点名称, 回到回滚点语法;rollback to 回滚点名称.
b) 事务的四大特性
i. 事务的四大特性;
在这里插入图片描述
ii. 事务的隔离级别
1.事务在操作的时理想状态;多事务之间互不影响,如果隔离级别设置不当就可能引发访问问题.
a) 脏读;一个事务读取到了另一个事务尚未提交的数据
b) 不可重复读;一个事物中两次读取的内容不一致,要求的是一个事务中多次读取时数据是一致的,这是事务update时引发的问题,
c) 幻读;一个事务中两次读取的数据数量不一致,要求在一个事务多次读取的数据的数量是一致的,这是insert或delete时引发的问题(可是在mySQL 5.0版本之后就进行修改了)
d) 是 (表现会出现的问题) 否 (表示不会出现的问题)
在这里插入图片描述
1.查看mySQL 全局事务隔离级别Show variables like %isolation% 或 select @@tx_isolation;
2.设置事务隔离级别,需要退出mySQL在进入mySQL才能看到隔离级别的变化Set global transaction isolation level 级别字符串;
3.脏读; 可以将全局的隔离级别进行提升,将数据恢复进行
4.不可重复读;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值