MySQL --- 复合查询

news2024/9/24 23:33:33

目录

一、多表查询

二、自连接 

三、子查询

1、单行子查询

2、多行子查询

3、多列子查询

4、在from后面使用子查询

四、合并查询

1、union

2、union all

五、内连接

六、外连接

1、左外连接

2、右外连接


一、多表查询

我们需要的数据往往会来自不同的表,所以我们需要从多个表中查询数据,如何做? 

用 emp 和 dept 两张表来举个例子,emp --- 记录员工的相关信息,dept --- 记录部门的相关信息

  • 查看每个员工和其所在部门的所有信息  

为什么能这样查询?首先要明白下面这条语句的作用

select * from emp, depth;

显然,这条选择语句会让两个表的数据进行组合相乘(笛卡尔积),得到一张新的表,我们查询的本质依旧是在这张新表中查找数据,只不过where的筛选条件需要带上表名,因为它们的列名一样。

  • 显示部门号为10的部门名,员工名和工资

二、自连接 

自连接是指在同一张表连接查询
  • 显示员工的上级领导的编号和姓名及其下级(mgr是员工领导的编号--empno

注意:需要给表先取别名,两张表的名字一样数据库无法分辨

三、子查询

子查询是指嵌入在其他 sql 语句中的 select 语句,也叫嵌套查询

1、单行子查询

返回一行记录的子查询
  • 显示Alice同一部门的员工

2、多行子查询

返回多行记录的子查询
  • in关键字:查询和10号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含10自己的
  • all关键字:显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号

  • any关键字:显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号(包含自己部门的员工)

3、多列子查询

单行子查询是指子查询只返回单列,单行数据;多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询则是指查询返回多个列数据的子查询语句

  • 查询和Alice的部门和岗位完全相同的所有雇员,不含Alice本人

4、在from后面使用子查询

子查询语句出现在from子句中。这里要用到数据查询的技巧,把一个子查询当做一个临时表使用

  • 显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资 

四、合并查询

在实际应用中,为了合并多个 select 的执行结果,可以使用集合操作符 union union all

1、union

该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行
  • 将工资大于 2500 或职位是 Manager 的人找出来

2、union all

该操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行。
  •  将工资大于2500或职位是Manager的人找出来

注意:使用合并查询时,列数一定要相同。

五、内连接

内连接实际上就是利用 where 子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。
select 字段 from 1 inner join 2 on 连接条件 and 其他条件;
  • 查看每个员工和其所在部门的所有信息 

等价于下面这种写法,只是上面的写法更加的清晰

六、外连接

MySQL中的外连接(Outer Join)是一种特殊的SQL JOIN操作,它用于结合两个或多个表中的行,即使它们在连接条件上没有匹配项。外连接会返回至少一个表中的所有行,并且如果满足连接条件,则返回另一个表中的匹配行。如果某个表在连接条件上没有匹配项,则结果中该表的部分将包含NULL值。
外连接分为左外连接和右外连接。

1、左外连接

如果联合查询,左侧的表完全显示我们就说是左外连接。
select 字段名 from 表名 1 left join 表名 2 on 连接条件;
  •  查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来

2、右外连接

如果联合查询,右侧的表完全显示我们就说是右外连接。
select 字段名 from 表名 1 right  join 表名 2 on 连接条件;
  • stu表和exam表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要显示出来

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

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

相关文章

redis面试(十)锁释放

自动释放 首先锁的释放分为两种,一种是自动释放,加入说加锁的线程宕机了不在了,我们之前说过这个。 那这个线程中的对redis这个锁不断刷新过期时间的看门狗逻辑就没有了,所以这个锁最多等待30s的时间就会自动过期删除&#xff0c…

文件I/O第一天作业 2024.8.8

使用系统I/O实现Linux的cat命令 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <errno.h>int main(int argc, const char *argv[]) {if(argc < 2){printf("请输…

【笔试题面试题】IO类2 知识点汇总(笔试面试题)

书接上文&#xff0c;配上前文一起实用更加&#xff0c;持续更新&#xff0c;督促自己学习 目录 1、详细描述一下什么是IO以及标准IO和文件IO的区别&#xff08;补充&#xff09; 2、什么是死锁&#xff0c;如何避免死锁&#xff08;补充&#xff09; 3、为什么引入同步互斥…

NVIDIA Triton系列09-为服务器添加模型

NVIDIA Triton系列09-为服务器添加模型 B站&#xff1a;肆十二-的个人空间-肆十二-个人主页-哔哩哔哩视频 (bilibili.com) 博客&#xff1a;肆十二-CSDN博客 问答&#xff1a;(10 封私信 / 72 条消息) 肆十二 - 知乎 (zhihu.com) 前面已经用 https://github.com/triton-inferen…

基于python的百度迁徙迁入、迁出数据分析(七)

参考&#xff1a;【Python】基于Python的百度迁徙2——迁徙规模指数&#xff08;附代码&#xff09;-CSDN博客 记录于2024年8月&#xff0c;这篇是获取百度迁徙指数&#xff0c;之前我们都在讨论不同城市的迁徙比例关系&#xff0c;这篇我们来获取百度迁徙指数这个数据&#x…

大学新生入门编程的最佳路径:嵌入式领域的深入探索

对于大学新生来说&#xff0c;编程已成为一项必不可少的技能。面对众多编程语言和学习资源&#xff0c;新生们常常感到迷茫。如何选择适合自己的编程语言&#xff1f;如何制定有效的学习计划&#xff1f;如何避免常见的学习陷阱&#xff1f;本文将为你提供嵌入式领域的编程入门…

测试工具之JMeter

JMeter Apache JMeter应用程序是开源软件,是一个100%纯Java应用程序,旨在负载测试功能行为和衡量性能。它最初是为测试Web应用程序而设计的,但后来扩展到其他测试功能。 JMeter是一个免费、开源、跨平台的性能测试工具,于20世纪90年代后期面世。这是一个成熟、健全且具有…

开源一套金融大模型插件(ChatGPT)

shares vscode 插件A 股量化交易系统自研金融大模型&#xff0c;复利Chat 源码地址&#xff1a; https://github.com/xxjwxc/shares

NPDP考前怎么复习?NPDP200问PDF版来啦~

距离NPDP下半年考试还有4个月的时间&#xff0c;现在正是备考的黄金期。 以下复习建议~ 01.制定详细计划 首先&#xff0c;根据考试大纲&#xff0c;可以将内容划分为几个模块&#xff0c;如新产品开发流程、市场研究、产品规划等&#xff0c;并为每个模块设定学习目标和时间…

C语言 | Leetcode C语言题解之第328题奇偶链表

题目&#xff1a; 题解&#xff1a; struct ListNode* oddEvenList(struct ListNode* head) {if (head NULL) {return head;}struct ListNode* evenHead head->next;struct ListNode* odd head;struct ListNode* even evenHead;while (even ! NULL && even->…

`【《Spark SQL 深度探索:内置函数、数据源处理与自定义函数实践》】

前言&#xff1a; &#x1f49e;&#x1f49e;大家好&#xff0c;我是书生♡&#xff0c;本阶段和大家一起分享和探索大数据技术Spark—SparkSQL&#xff0c;本篇文章主要讲述了&#xff1a;Spark SQL 深度探索&#xff1a;内置函数、数据源处理与自定义函数实践等等。欢迎大家…

Netty技术全解析:MessageToMessageCodec类深度解析

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…

有序数组的平方(LeetCode)

题目 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 解题 以下算法时间复杂度为 def sortedSquares(nums):n len(nums)result [0] * n # 创建一个结果数组&#xff0c;长度与 nums 相同le…

【wiki知识库】08.添加用户登录功能--前端Vue部分修改

&#x1f34a; 编程有易不绕弯&#xff0c;成长之路不孤单&#xff01; 目录 &#x1f34a; 编程有易不绕弯&#xff0c;成长之路不孤单&#xff01; 一、今日目标 二、前端Vue模块的修改 2.1 the-header组件 2.2 store工具 2.3 router路由配置修改 一、今日目标 上篇文章…

河南萌新联赛2024第(四)场:河南理工大学

河南萌新联赛2024第&#xff08;四&#xff09;场&#xff1a;河南理工大学 2024.8.7 13:00————17:00 过题数5/12 补题数8/12 该出奇兵了 小雷的神奇电脑 岗位分配 简单的素数 AND 小雷的算式 循环字符串 聪明且狡猾的恶魔 马拉松 尖塔第四强的高手 比赛 抓字符 B - 小雷…

企业如何选择靠谱的第三方软件测试机构?

第三方软件测试机构是专门提供软件测试服务的第三方检测机构&#xff0c;旨在对软件的功能、性能、安全性等方面进行系统评估&#xff0c;确保其满足设定的标准和需求。这些机构通常拥有丰富的行业经验和专业资质&#xff0c;可以为企业提供包括项目验收测试、软件确认测试、安…

贪吃蛇之地图的绘制

首先我们要知道地图位置大体是怎么样的 绘出一个大概的地图 设置了2020的方格 源码在这里 #include<curses.h>void initNcurse() {initscr();keypad(stdscr,1); }void gamePic() {int hang;int lie;for(hang0;hang<20;hang){if(hang0){for(lie0;lie<20;lie){pr…

开通期权分仓账户需要多少资金?

在金融衍生品市场&#xff0c;期权分仓账户犹如一艘精巧的帆船&#xff0c;承载着投资者的智慧与梦想&#xff0c;驶向财富的彼岸。然而&#xff0c;每一艘帆船的启航&#xff0c;都需备足风帆与给养&#xff0c;即那开启航程所必需的资金之舟&#xff0c;下文为大家介绍开通期…

【C语言基础习题】C语言练习题——bite 寒假班作业(6)【未完成】

编程小白如何成为大神?大学新生的最佳入门攻略 编程已成为当代大学生的必备技能,但面对众多编程语言和学习资源,新生们常常感到迷茫。如何选择适合自己的编程语言?如何制定有效的学习计划?如何避免常见的学习陷阱?让我们一起探讨大学新生入门编程的最佳路径,为你的大学…

【进阶篇-Day14:JAVA中IO流之转换流、序列化流、打印流、Properties集合的介绍】

目录 1、转换流1.1 转换流分类&#xff1a;1.2 转换流的作用&#xff08;1&#xff09;按照指定的字符编码读写操作&#xff1a;&#xff08;2&#xff09;将字节流转换为字符流进行操作&#xff1a; 2、序列化流2.1 序列化的基本使用&#xff1a;2.2 序列化的操作流程&#xf…