1.多表查询的分类

1.1 内连接

        在 MySQL 中,内连接(INNER JOIN)返回的是两个表中满足连接条件的记录的交集。这个“交集”不是指整个表,而是指符合连接条件的行组合,也就是A表和B表中满足我们使用on指定条件的记录。图中绿色部分

1.1.1 隐式内连接

        select 字段列表 from 表1 表1别名 , 表2  表2别名  where 条件;

        如果我们给表指定了别名,那么就不能使用原表明指定条件,只能使用别名。

1.1.2 显式内连接

        select 字段列表 from 表1 inner join 表2 on 连接条件;

1.2 左外连接

        顾名思义,左外连接的结果包含左表中的所有数据,也包括右表中满足条件的数据,图中的蓝色和绿色部分,右表记录不足的地方会填充为null

        语句:select 字段列表 from 表名1 [别名] left   [outer]   join 表名2 [别名] on 连接条件;

1.3 右连接

        右外连接的结果和左外连接相反,它包括右表中的所有数据和左表中满足条件的数据,图中的绿色和黄色部分,左表中不足的数据也会被填充为null

        语句:select 字段列表 from 表名1 [别名] right   [outer]   join 表名2 [别名] on 连接条件;

左外连接和右外连接可以相互转换,只需要调换表明出现的位置即可:

select 字段列表 from 表名1 [别名] right   [outer]   join 表名2 [别名] on 连接条件;

和下面的语句相同:

select 字段列表 from 表名2 [别名] left   [outer]   join 表名1  [别名] on 连接条件;

1.4 自连接

        自连接就是做连接查询的表是同一个,此时必须给表取别名区分

select 字段列表 from 表名1 [别名1] right   [outer]   join 表名1 [别名2] on 连接条件;

自连接可以是内连接,左连接和右连接

1.5 联合查询

        用法:select语句1    union  [all]     select语句2 

添加 all 相当于把两次查询的结果直接组合起来,如果有记录满足两个select语句的条件,那么它会出现两次,如果不添加 all 则会去重,相同的记录只出现一次。
两次查询的字段数和字段类型都必须相同,否则会报错。

1.6 子查询

1.6.1 标量子查询

        标量子查询是指子查询的返回值只有一个值,使用的操作符通常是 = , <> , >, <  ,<=,  >=

1.6.2 列子查询

如果是查询任意一人,那么可以any和some,它们的效果是一样的

1.6.3 行子查询

1.6.4 表子查询

        表子查询的返回值是多行多列,可以出现在from后,我们可以把他理解成一个虚拟表,我们从这个虚拟表中查询数据,也可以出现在where后,此时我们使用in查询满足条件的记录

2.事务

2.1 事务简介

        事务是一组操作的集合,这组操作必须全部成功或者全部失败。比如银行转账的步骤:A账户扣钱,B账户加钱 这两步操作必须全部成功或者失败,不能单独某一步成功或失败。

2.2 通过@@autocommit实现事务


-- 查询事务是否自动提交  1:自动提交   0:手动提交
select @@autocommit;-- 设置事务为手动提交
set @@autocommit = 0;update student set name='333' where id=1;delete; -- 模拟程序运行错误update student set name='444' where id=2;-- 提交事务,在整体流程完成后
commit;-- 回滚事务,在流程出错后必须执行!
rollback;

2.3 通过 begin 或 start transaction

start transaction ; -- 也可以是 begin
update student set name='333' where id=1;
delete; -- 模拟程序运行错误
update student set name='444' where id=2;-- 提交事务,在整体流程完成后
commit;-- 回滚事务,在流程出错后必须执行!
rollback;

2.4 事务的四大特性

2.4.1 原子性

        原子性的意思是事务是不可分割的最小单元,要么全部成功,要么全部失败

2.4.2 一致性

        事务完成时,必须使所有的数据保持一致

2.4.3 隔离性

        数据库系统提供的隔离机制,保证事务在不受外部并发操作的影响下执行。

2.4.4 持久性

        事务在提交后,对数据库的影响是永久的

2.5 并发事务的问题(脏读,幻读,不可重复读)

2.6 事务隔离的级别

read uncommitted的意思是 读未提交,此时事务可以读取到另一并发事务未提交的内容,所以会出现脏读,幻读,不可重复读得问题

read committed意思是 读已提交,顾名思义,只能读取并发事务已经提交的数据,也就解决了脏读的问题,但幻读和不可重复读问题依旧存在

repeatable read意思是 重复读 ,在read committed的基础上解决了不可重复读的问题,也是mysql默认的事务隔离级别。

serializable意思是串行化的,也就是直接禁止了事务的并发执行,让事务串行执行,也就解决了所有的问题,但是效率比较低。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/87400.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/87400.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/87400.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSP-J 2020 入门级 第一轮(初赛) 答案及解析

CSP-J 2020 入门级 第一轮&#xff08;初赛&#xff09; 答案及解析 在内存储器中每个存储单元都被赋予一个唯一的序号&#xff0c;称为&#xff08;&#xff09;。 A. 地址 B. 序号 C. 下标 D. 编号 答: A 计算机中每个存储单元都是1字节&#xff0c;都有唯一的地址。 编译器…

Flutter包管理与插件开发完全指南

Flutter作为Google推出的跨平台移动应用开发框架&#xff0c;其强大的生态系统离不开完善的包管理机制和丰富的插件支持。本文将全面介绍Flutter中的包管理体系和插件开发实践&#xff0c;帮助开发者高效管理项目依赖并扩展应用功能。 一、Flutter包管理基础 1.1 包管理概述 …

【视频直播出海】阿里云ApsaraVideo Live:从零搭建全球直播平台的“星际航行”指南!

【视频直播出海】阿里云ApsaraVideo Live&#xff1a;从零搭建全球直播平台的“星际航行”指南&#xff01; 在全球化浪潮的推动下&#xff0c;视频直播行业正以前所未有的速度跨越国界&#xff0c;成为连接世界的“数字新桥梁”。对于渴望拓展海外市场的企业而言&#xff0c;…

OAuth2中的Token

两个不同的Token OAuth2 中主要有两个不同的Token, 其中的区别为是否与用户相关联, 即与用户相关的用户Token, 和与客户端相关的客户端Token, 可以通过用户Token, 查询到用户的相关信息, 客户端Token与用户无关, 一般只用于客户端认证 用户Token 获取用户Token一般有两个方式…

使用 FastMCP 实现 Word 文档与 JSON 数据互转的 Python 服务

一、项目背景 本文分享一个基于 FastMCP 框架实现的文档处理服务&#xff0c;可实现 Word 文档&#xff08;.docx&#xff09;与 JSON 数据格式的双向转换。通过此服务&#xff0c;开发者可以轻松实现文档内容提取、结构化数据填充、样式模板复用等功能&#xff0c;适用于自动…

Vue3轮播图组件,当前轮播区域有当前图和左右两边图,两边图各显示一半,支持点击跳转和手动滑动切换

功能&#xff1a; 自动循环播放&#xff08;到达末尾后回到第一张&#xff09;、可设置切换间隔时间&#xff08;interval属性&#xff09; 左右导航按钮&#xff08;可自定义显示/隐藏&#xff09; 点击底部指示器跳转到指定幻灯片、且位置可调&#xff08;轮播图内部/外部&…

350+交付案例,高质量低成本构建智慧园区数字孪生交付新范式

在智慧园区建设领域&#xff0c;数字孪生技术正成为推动园区智能化转型的核心引擎。山东融谷信息凭借其全要素、全周期、全方位的数字孪生交付能力&#xff0c;已成功交付350余个项目&#xff0c;覆盖产业园区、智慧楼宇、智慧社区等多元场景&#xff0c;低成本高质量交付&…

OpenCV 图像像素类型转换与归一化

一、知识点 1、OpenCV支持多种数据类型&#xff0c;每种类型都对应着不同的取值范围。 (1)、CV_8U取值范围[0, 255]。 (2)、CV_16U取值范围[0, 65535]。 (3)、CV_32F取值范围[0, 1]。 2、OpenCV提供convertTo()函数来转换数据类型&#xff0c;提供normalize()函数来改…

机器学习算法_支持向量机

一、支持向量机 支持向量机只能做二分类任务 SVM全称支持向量机&#xff0c;即寻找到一个超平面使样本分成两类&#xff0c;且间隔最大 硬间隔&#xff1a;如果样本线性可分&#xff0c;在所有样本分类都正确的情况下&#xff0c;寻找最大间隔&#xff1b;如果出现异常值或样…

Linux : echo ~ tail 重定向符

&#x1f680; Linux 常用命令详解&#xff1a;echo、tail 与重定向符号全解析&#xff08;含通俗案例&#xff09; &#x1f4c5; 更新时间&#xff1a;2025年6月17日 &#x1f3f7;️ 标签&#xff1a;Linux基础 | Shell命令 | echo | tail | 输出重定向 | Linux入门 文章目录…

uniapp的更新流程【安卓、IOS、热更新】

UniApp应用更新方案 两种更新方式 APP全量升级&#xff1a;需要重新下载安装包热更新&#xff1a;通过下载wgt资源包实现&#xff0c;用户只需重启应用 Android更新实现 用户需要授权安装权限&#xff0c;流程为下载APK后自动弹出安装界面 var dtask plus.downloader.cre…

火山引擎解码生态型增长铁律

“技术流量与力量的崛起&#xff0c;本质上是一场生态规模的竞赛。每次浪潮的排头兵&#xff0c;都是指尖沾着代码的开发者——互联网时代的Linux社区让开源席卷全球&#xff0c;移动互联网的App Store催生百万开发者&#xff0c;而今天&#xff0c;大模型正在用API重构产业。”…

警惕GO的重复初始化

go的初始化方式有很多种&#xff0c;在某些情况下容易引起重复初始化导致错误。 事例如下&#xff1a; 当使用gorm连接数据库时定义了全局DB var DB *gorm.DB 但是在后面某个函数内部初始化时导致DB重新初始化变成了局部变量&#xff0c;导致原来的全局变量DB还是nil func I…

python校园服务交流系统

目录 技术栈介绍具体实现截图系统设计研究方法&#xff1a;设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理&#xff0c;难度适中&#xf…

AlexNet:图像分类领域的里程碑网络及其创新剖析

文章目录 前言AlexNet一、网络的背景二、网络结构三、网络的创新3.1 首次使用GPU训练网络3.2 使用Relu激活函数3.2.1 sigmoid激活函数和tanh激活函数3.2.1.1 sigmoid激活函数3.2.1.2 tanh激活函数 3.3 Relu激活函数3.4 使用LRN局部响应归一化(已弃用)3.4.1 LRN的定义与起源3.4.…

iOS性能调优实践:结合KeyMob等多个工具提升应用稳定性与流畅度

在iOS应用开发中&#xff0c;性能问题往往难以通过单一工具轻松解决。尤其是当App面临用户反馈的流畅度差、卡顿严重、内存泄漏等问题时&#xff0c;开发者需要依靠多种工具的组合&#xff0c;才能有效地排查和优化性能瓶颈。 在我们最近的一个项目中&#xff0c;开发团队在处…

球形波方程的推导与解法

题目 问题 6. 一个球形波是三维波动方程的解,形式为 u ( r , t ) u(r,t) u(r,t),其中 r r r 是到原点的距离(球坐标)。波动方程的形式为: u t t = c 2 ( u r r + 2 r u r ) (球形波方程) . u_{tt} = c^{2} \left( u_{rr} + \frac{2}{r} u_{r} \right) \quad \text{(球形…

自动打电话软件设计与实现

文章目录 方案概述实现代码1. 安装必要的库2. 主程序代码3. HTML模板 (templates/index.html) 功能说明部署说明扩展功能建议注意事项 方案概述 使用Twilio的API进行电话呼叫实现基本的呼叫逻辑添加简单的用户界面 实现代码 1. 安装必要的库 pip install twilio flask2. 主…

RedissonLock源代码分析与锁应用

文章目录 前言一、RedissonLock源代码分析1.1 尝试加锁2.2 解锁 二、锁业务应用1.服务层方法注解方式 注入锁1.1 定义DistributedLock 注解类1.2 定义DistributedLockAspect 切片类1.3 尝试获取锁代码片断1.4 释放锁代码片断1.5 服务层注入锁注解 2.代码行加锁2.1 pom.xml文件引…

深入理解mysql索引

一、什么是索引&#xff1f; 索引&#xff08;Index&#xff09; 是数据库管理系统中一种特殊的数据结构&#xff0c;存储在磁盘上。它包含对数据表中一列或多列的值进行排序&#xff0c;并存储了指向表中实际数据行物理位置或主键值的引用指针。可以把它类比为书籍的目录&…