4、MySQL 多表查询与事务的操作

1 表连接查询

在这里插入图片描述

笛卡尔积现象

select * from emp, dept ; -- 笛卡尔积, 两表数据相乘
-- 乘积筛选后的结果, 两边能匹配上的数据
select * from emp, dept where emp.deptno = dept.deptno;
select * from emp e, dept d where e.deptno = d.deptno;
select e.ename, d.dname from emp e, dept d where e.deptno = d.deptno;

在这里插入图片描述
在这里插入图片描述

内连接

⽤左边表的记录去匹配右边表的记录,如果符合条件的则显示。如:从表.外键 = 主表.主键

隐式内连接

隐式内连接:看不到 JOIN 关键字,条件使⽤ WHERE 指定

SELECT 字段名 FROM 左表, 右表 WHERE 条件;
select * from emp, dept where emp.dept_id = dept.id;

显示内连接

显示内连接:使⽤ INNER JOIN … ON 语句,可以省略 INNER

– 内连接
select * from emp e inner join dept d on e.deptno = d.deptno;

内连接查询步骤

  1. 确定查询哪些表
  2. 确定表连接的条件
  3. 确定查询的条件
  4. 确定查询的字段

– 表连接 join
/

内连接 [inner] join
外连接
左外连接 left [outer] join
右外连接 right [outer] join
oracle - 全外连接 full [outer] join

连接的选择,主要取决于查询结果,需要哪张表的全部数据
需要显示全部数据的表, 称为"驱动表"
/*

左外连接

– 左外连接
select * from emp e left outer join dept d on e.deptno = d.deptno;
select * from dept d left outer join emp e on e.deptno =
d.deptno;

##右外连接

  • 右外连接
    select * from emp e right outer join dept d on e.deptno = d.deptno;
    三者之间关系
    在这里插入图片描述

子查询

引入

-- 需求: 查询开发部中有哪些员⼯
select * from emp;
-- 通过两条语句查询
select id from dept where name = '开发部';
select * from emp where dept_id = 1;
-- 使⽤⼦查询
select * from emp where dept_id = (select id from dept where name = '市场
部');

⼦查询的概念:

  1. ⼀个查询的结果做为另⼀个查询的条件
  2. 有查询的嵌套,内部的查询称为⼦查询
  3. ⼦查询要使⽤括号

2.2 ⼦查询结果的三种情况

在这里插入图片描述

单列单行

在这里插入图片描述

单列多行

在这里插入图片描述

多行多列

在这里插入图片描述

小结

⼦查询结果只要是单列,则在 WHERE 后⾯作为条件
⼦查询结果只要是多列,则在 FROM 后⾯作为表进⾏⼆次查询

3 事务

引入

什么是事务:
在实际的开发过程中,⼀个业务操作,如:转账,往往是要多次访问数据库才能完成的。转账是⼀个⽤户扣钱,另⼀个⽤户加钱。如果其中有⼀条 SQL 语句出现异常,这条 SQL 就可能执⾏失败。
事务执⾏是⼀个整体,所有的 SQL 语句都必须执⾏成功。如果其中有 1 条 SQL 语句出现异常,则所有的 SQL 语句都要回滚,整个业务执⾏失败。

MYSQL 中可以有两种⽅式进⾏事务的操作:

  1. ⼿动提交事务
  2. ⾃动提交事务

手动提交事物

功能SQL语句
开启事务start transaction;
提交事务commit;
回滚事务rollback;

过程

在这里插入图片描述

3.5 回滚点

定义

在某些成功的操作完成之后,后续的操作有可能成功有可能失败,但是不管成功还是失败,前⾯操作都已经成功,可以在当前成功的位置设置⼀个回滚点。可以供后续失败操作返回到该位置,⽽不是返回所有操作,这个点称之为回滚点。

回滚点的操作语句语句
设置回滚点savepoint 名字
回到回滚点rollback to 名字

事务的隔离级别

事务的四⼤特性 ACID

事务特性含义
原⼦性(Atomicity)每个事务都是⼀个整体,不可再拆分,事务中所有的 SQL 语句要么都执⾏成功, 要么都失败。
⼀致性(Consistency)事务在执⾏前数据库的状态与执⾏后数据库的状态保持⼀致。
隔离性(Isolation)事务与事务之间不应该相互影响,执⾏时保持隔离的状态。
持久性(Durability)⼀旦事务执⾏成功,对数据库的修改是持久的。就算关机,也是保存下来的。

事务的隔离级别

在这里插入图片描述

MySQL 数据库有四种隔离级别

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值