mysql使用--连接查询

1.连接查询
如:SELECT * FROM t1, t2;
上述FROM语句将t1表,t2表连接。
假设t1表含n条记录,t2表含m条记录,则t1, t2得到的表将包含n*m条记录。

我们以一个混合连接,过滤的查询分析语句执行过程。
如:SELECT * FROM t1, t2 WHERE t1.m1 > 1 AND t1.m1 = t2.m2 AND t2.n2 < ‘d’;
(1).针对FROM子句得到结果集1。
(2).对结果集1中每行执行过滤条件,得到结果集2。
(3).对结果集2执行SELECT得到最终结果集。

上述是从执行效果角度解释执行逻辑。实际执行中为了效率优化的考量,会视t1为驱动表,视t2为被驱动表。
先结合WHERE子句对驱动表执行过滤,再针对过滤后表中每条记录与被驱动表结合执行其他过滤条件以得到最终结果集。

2.内连接和外连接
执行连接查询时,如果驱动表中某一行执行连接后得到的多行中,全部被WHERE过滤掉了,这样最终结果集中将不含驱动表此行的相关信息,有时这不是我们希望的。故,引入内连接,外连接。
(1).对内连接,如驱动表的记录在被驱动表找不到匹配的记录,则最终结果集中将不含驱动表此行的相关信息。这就是默认下的表现。
(2).对外连接,如驱动表的记录在被驱动表找不到匹配的记录,则最终结果集中将依然包含一条此驱动表此行的对应行。只不过对应行中被驱动表各个列的数值为NULL。

_1.外连接下过滤条件–ON
使用外连接下,过滤使用ON语句。且ON子句必须要存在。
ON语句此时用于替代WHERE。但采用ON语句过滤下,对驱动表中某行和被驱动表中所有行构成的合并行都无法通过过滤下,依然会在最终结果集产生一个合并行其中被驱动表部分采用NULL。
_2.外连接下过滤–WHERE
外连接下,必须存在ON执行过滤。但ON过滤下,对驱动表所有在被驱动表中无法产生任何匹配的行,在最终结果集中均保留一行。如果希望对这些保留行执行过滤,需要依赖WHERE子句来进行。

3.连接语法
在MySQL中,根据选取的驱动表的不同,外连接可细分为左外连接和右外连接。
左外连接,可简称左连接;右外连接,可简称右连接;

_1.左连接的语法
如:SELECT * FROM t1 LEFT [OUTER] JOIN t2 ON 过滤条件 [WHERE 过滤条件];
括号中OUTER可以省略,不影响含义。
这里t1是驱动表,t2是被驱动表。
上述语句中ON子句不可省略,可以用ON替代WHERE。也可以让ON专注于过滤最终结果集中WHERE无法过滤的行。

_2.右连接的语法
如:SELECT * FROM t1 RIGHT [OUTER] JOIN t2 ON 连接条件 [WHERE 过滤条件];
此时驱动表是t2,t1是被驱动表。

_3.内连接的语法
下列这些语句含义一致,均采用内连接:
SELECT * FROM t1, t2;
SELECT * FROM t1 JOIN t2;
SELECT * FROM t1 INNER JOIN t2;
SELECT * FROM t1 CROSS JOIN t2;

内连接中ON子句没有存在必要。存在下等价于WHERE看待。

4.多表连接
如:SELECT * FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.m1 = t2.m2 AND t1.m1 = t3.m3;另一种效果等价写法:SELECT * FROM t1 INNER JOIN t2 ON t1.m1 = t2.m2 INNER JOIN t3 ON t1.m1 = t3.m3;

5.表的别名
如:SELECT s1.number, s1.name, s1.major, s2.subject, s2.score FROM student_info AS s1 INNER JOIN student_score AS s2 WHERE s1.number = s2.number;
上述在FROM子句中给student_info,student_score起了别名,在查询语句其他地方可使用别名来引用表。

6.自连接
如:SELECT * FROM t1, t1;
会报错,报错不是因为不允许自连接,而是因为FROM子句中不允许两个表同名。
这样就可以了:SELECT * FROM t1 AS table1, t1 AS table2;
`

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

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

相关文章

thinkphp文件夹生成zip压缩包

一、准备工作&#xff0c;使用phpinfo()查看有没有zip扩展 <?php echo phpinfo(); ?>Thinkphp使用PHP自带的ZipArchive压缩文件或文件夹 显示enabled 说明已经配置好 如果没有安装扩展的&#xff0c;请参照以下方法&#xff1a; 1、下载对应版本的扩展包&#xff1a…

Java操作excel之poi

1. 创建Excel 1.1 创建新Excel工作簿 引入poi依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</ar…

QTableView 和 QAbstractTableModel

1.自定义类继承QAbstractTableModel 头文件如下&#xff1a; #ifndef TESTMOUDLE_H #define TESTMOUDLE_H #include "StructTest.h" #include <QAbstractTableModel> class TestMoudle : public QAbstractTableModel { public: TestMoudle(QStringList&…

如何一次性解压多个文件

第一步&#xff1a;多选压缩包 第二步&#xff1a;右键解压即可 一句话&#xff0c;单个怎么解压&#xff0c;多个就怎么解压&#xff0c;只不过先选中 参考&#xff1a;如何一次性解压多个文件

智能安全帽作业记录仪赋能智慧工地人脸识别劳务实名制

需求背景 建筑工地是一个安全事故多发的场所。目前&#xff0c;工程建设规模不断扩大&#xff0c;工艺流程纷繁复杂&#xff0c;如何完善现场施工现场管理&#xff0c;控制事故发生频率&#xff0c;保障文明施工一直是施工企业、政府管理部门关注的焦点。尤其随着社会的不断进…

YARN,ZOOKEERPER--学习笔记

1&#xff0c;YARN组件 1.1YARN简介 YARN表示分布式资源调度&#xff0c;简单地说&#xff0c;就是&#xff1a;以分布式技术完成资源的合理分配&#xff0c;让MapReduce能高效完成计算任务。 YARN是Hadoop核心组件之一&#xff0c;用于提供分布式资源调度服务。 而在Hadoop …

逻辑漏洞(业务逻辑)dami CMS

逻辑漏洞&#xff08;业务支付逻辑漏洞&#xff09;dami CMS 0x01 业务逻辑简介 业务逻辑指的是一个系统或应用程序中的实际业务规则和流程。它描述了如何处理特定的业务需求、数据和操作。业务逻辑通常是根据特定行业或组织的需求而设计的。 在软件开发中&#xff0c;业务逻…

零编程基础Python的全面学习指南

文章目录 前言什么是编程&#xff1f;Python代码对应的机器码准备开始Windows变量类型整型字符串型布尔类型字符串连接和整数相加if 语句捕获用户输入导入MacWindows游戏时间&#xff01;小结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Pyt…

磐舟CI使用说明及案例

整体介绍 磐舟作为一个devops产品&#xff0c;它具备基础的CI流水线功能。同时磐舟的流水线是完全基于云原生架构设计的&#xff0c;在使用时会有一些注意事项。这里首先我们要了解磐舟整体的流水线打包逻辑。 文档结构说明 一般来说&#xff0c;磐舟推荐单个业务的标准git库…

反编译-ApkTool

ApkTool下载地址&#xff1a; Apktool | ApktoolA tool for reverse engineering Android apk fileshttps://apktool.org/ 1、使用 apktool 解包 执行 java -jar apktool_2.4.1.jar d demo.apk -o demo 命令 java -jar apktool_2.4.1.jar d demo.apk -o demo 其中 d 后面是…

Nevron Vision for .NET 2023.1 Crack

Nevron Vision for .NET 适用于桌面和 Web 应用程序的高级数据可视化 Nevron Vision for .NET提供最全面的组件&#xff0c;用于构建面向 Web 和桌面的企业级数据可视化应用程序。 该套件中的组件具有连贯的 2D 和 3D 数据可视化效果&#xff0c;对观众产生巨大的视觉冲击力。我…

基于window10的远程桌面报错:要求的函数不受支持 的问题解决方法

基于window10的远程桌面报错&#xff1a;要求的函数不受支持 的问题解决方法 设置方法&#xff1a; 一、WINR 在框内输入gpedit.msc 二、依次打开 计算机配置----管理模板-----系统—凭据分配—加密数据库修正–改为以启用—易受攻击 第一步&#xff1a; 第二步&#xff1a;…

并查集总结

并查集简介 并查集是一种可以动态维护若干个不重叠的结合&#xff0c;并支持合并与查询的数据结构 并查集是一种树状的数据结构&#xff0c;可以用于维护传递关系以及联通性。 并查集有两种操作&#xff1a; find&#xff1a;查询一个元素属于哪个集合merge:合并两个集合 模…

爆款文章有诀窍,内容创作者如何能持续产出优质内容

内容营销人有没有这么一种共鸣&#xff1a;10 万 那么多&#xff0c;为什么不能多我一个&#xff1f; 通常&#xff0c;我们把浏览量 / 阅读量高、转评赞数量高的内容看作爆款&#xff0c;而数据如果达到 10 万 则是超级爆款。因为&#xff0c;阅读量高意味着内容得到了大量的曝…

【Linux】使用Makefile自动化编译项目:简化开发流程、提高效率

文章目录 示例一&#xff1a;编译一个进度条程序示例二&#xff1a;编译一个简单的程序gcc的几个选项结论 当你开始一个新的软件项目时&#xff0c;编写一个好的Makefile是非常重要的。Makefile是一个文本文件&#xff0c;用于指定如何构建和编译项目。它定义了目标文件、依赖关…

8年老鸟整理,自动化测试-准备测试数据详细...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 大部分类型的测试…

基于C#实现Bitmap算法

在所有具有性能优化的数据结构中&#xff0c;我想大家使用最多的就是 hash 表&#xff0c;是的&#xff0c;在具有定位查找上具有 O(1)的常量时间&#xff0c;多么的简洁优美&#xff0c;但是在特定的场合下&#xff1a; ①&#xff1a;对 10 亿个不重复的整数进行排序。 ②&am…

python获取透明图

import cv2 import os import numpy as nproot "./test" for file in os.listdir(root):# 读取图片image cv2.imread(os.path.join(root, file), cv2.IMREAD_UNCHANGED)new np.zeros((image.shape[0], image.shape[1], image.shape[2]), np.uint8)# 检查图片是否为…