07、MySQL-多表查询
目录
1、内连接
1.1 隐式内连接
1.2 显式内连接
2、外连接
2.1 左外连接
2.2 右外连接
3、自连接
4、联合查询
5、子查询
5.1 标量子查询
5.2 列子查询
5.3 行子查询
5.4 表子查询
1、内连接
概念:相当于查询A、B表交集的部分数据
1.1 隐式内连接
语法:SELECT 字段列表 FROM 表1,表2 WHERE 条件
-- 例:查询每一个员工的姓名 及关联的部门的名称(隐式内连接的实现) SELECT emp.name,dept.name from emp,dept WHERE emp.dept_id = dept.id1.2 显式内连接
语法:SELECT 字段列表 FORM 表1 [INNER] JOIN 表2 ON 连接条件
-- 例:查询每一个员工的姓名 及关联的部门的名称(显式内连接的实现) SELECT emp.name,dept.name from emp inner join dept on emp.dept_id = dept.id
2、外连接
2.1 左外连接
概念:查询左表所有数据 以及两张表交集的部分数据
语法:SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件...
SELECT emp.name,dept.name '部门名称' FROM emp LEFT OUTER JOIN dept ON emp.dept_id = dept.id2.2 右外连接
概念:查询右表所有数据 以及两张表交集的部分数据
SELECT emp.name, dept.* FROM emp RIGHT OUTER JOIN dept ON emp.dept_id = dept.id
3、自连接
概念:当前表与自身的连接查询,自连接必须使用表别名 可以是内连接查询 也可以是外连接查询
语法:SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件
-- 查询员工所属领导的信息 SELECT a.name '员工',b.name '领导' from emp a JOIN emp b on a.managerid = b.id
4、联合查询
概念: 就是把多次查询的结果合并起来 行程一个新的查询结果集
语法:SELECT 字段列表 FROM 表A... UNION[ALL] SELECT 字段列表 FROM 表B...
-- 将薪资低于5000的员工和年龄大于50的员工全部查找出来SELECT * FROM emp WHERE salary < 5000 UNION ALL SELECT * FROM emp WHERE age > 50-- 去掉ALL可以去重SELECT * FROM emp WHERE salary < 5000 UNION SELECT * FROM emp WHERE age > 50注意:
- 条件字段列表需要保持一致,字段类型也要保持一致
- UNION ALL 会将全部数据合并在一起 UNION后会对合并的数据去重
5、子查询
概念:SQL语句中嵌套SELECT语句 称为嵌套查询 又称子查询
语法:SELECT * FROM t1 WHERE column1=(SELECT column1 FROM t2)
5.1 标量子查询
概念:子查询结果为单个值
常用操作符:=、<>、>、>=、< 、<=
-- 查询研发部的所有员工信息 -- a. 查询"销售部" 部分ID SELECT id FROM dept WHERE name = '研发部' -- b. 根据销售部部门id 查询员工信息 SELECT * FROM emp WHERE dept_id = 1 -- c. 结合 SELECT * FROM emp WHERE dept_id = (SELECT id FROM dept WHERE name = '研发部')5.2 列子查询
概念:子查询结果为一列
常用操作符:IN、NOT IN、ANY、SOME、ALL
-- 查询“研发部” 和 “市场部” 的所有员工信息 -- a. 查询“销售部” 和 “市场部” 的部门id SELECT id FROM dept WHERE name = '研发部' OR name = '市场部' -- b. 根据部门ID,查询员工信息 SELECT * FROM emp WHERE dept_id IN(1,2) -- c. 结合 SELECT * FROM emp WHERE dept_id IN((SELECT id FROM dept WHERE name = '研发部' OR name = '市场部'))5.3 行子查询
概念:子查询结果为一行
常用操作符:=、<>、IN、NOT、IN
-- 查询与"晓飞"的薪资及直属领导相同的员工信息 -- a. 查询"晓飞"的薪资与直属领导 SELECT salary,managerid FROM emp WHERE name='晓飞'-- b. 查询与"晓飞"的薪资及直属领导相同的员工信息 SELECT * FROM emp WHERE (salary,managerid) = (SELECT salary,managerid FROM emp WHERE name='晓飞')5.4 表子查询
概念:子查询结果为多行多列
常用操作符:IN
-- 例:查询与“赵四”,“王炸” 的职位和薪资相同的员工信息 -- a. 查询赵四和王炸的职位和薪资 SELECT job,salary FROM emp WHERE name IN('赵四','王炸') -- b. 查询与“赵四”,“王炸” 的职位和薪资相同的员工信息 SELECT * FROM emp WHERE (job,salary) IN (SELECT job,salary FROM emp WHERE name IN('赵四','王炸'))-- 例:查询入职日期是“2004-01-01”之后的员工信息 及其部门信息 -- a. 查询入职日期是“2004-01-01”之后的员工信息 SELECT * FROM emp WHERE entrydate > '2004-01-01' -- b. 查询入职日期是“2004-01-01”之后的员工信息 及其部门信息 SELECT e.*,d.* FROM (SELECT * FROM emp WHERE entrydate > '2004-01-01') e LEFT JOIN dept d ON e.dept_id = d.id
相关文章:
07、MySQL-多表查询
目录 1、内连接 1.1 隐式内连接 1.2 显式内连接 2、外连接 2.1 左外连接 2.2 右外连接 3、自连接 4、联合查询 5、子查询 5.1 标量子查询 5.2 列子查询 5.3 行子查询 5.4 表子查询 1、内连接 概念:相当于查询A、B表交集的部分数据 1.1 隐式内连接 语法&…...
20240809 每日AI必读资讯
乒乓球AI机器人赢了人类!正反手灵活转换,擦网球高球都能接 - 谷歌发布首个达到人类竞技水平的机器人Agent,挑战乒乓球赛场。 - 机器人通过学习大量乒乓球状态数据,掌握了正手上旋球、反手瞄准等技能,展现出高速运动…...
《投资的原理》阅读笔记一
这是我准备集中学习投资类书籍后阅读的第8本书,但是是第一本读到一半决定从新开始、每章都写笔记的第一本书。 《投资的原理》的作者陈嘉禾先生是一位资深的价值投资者,书中也是大力弘扬着价值投资,跟我倾向于量化投资方向的想法并不合拍&am…...
金九银十,全网最详细的软件测试面试题总结
前面看到了一些面试题,总感觉会用得到,但是看一遍又记不住,所以我把面试题都整合在一起,都是来自各路大佬的分享,为了方便以后自己需要的时候刷一刷,不用再到处找题,今天把自己整理的这些面试题…...
ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现
一.环境配置 腾讯云的ubuntu操作系统,已经安装有docker 和 vulhub 直接来到 启动环境docker-compose,要在root权限下运行。 docker-compose up -d 若出现等待时间过长的情况,请参考这篇文章http://t.csdnimg.cn/SYhbE 访问http://公网ip:8…...
网络协议四 物理层,数据链路层
从这一节开始学习 五层模型。学习方法是从最底层物理层开始学习 七层模型 五层模型 各个层用的协议,以及加上协议后的称谓 各个层的作用 应用层:可以认为是原始数据,该数据称为 报文,用户数据。 运输层:也叫传输层&am…...
Python知识点:如何使用Twisted进行异步网络编程
Twisted是一个事件驱动的网络编程框架,支持异步编程,适用于处理大量并发网络连接的应用。使用Twisted进行异步网络编程可以分为以下几个步骤: 安装Twisted: 首先需要安装Twisted库,可以使用pip进行安装: pi…...
循环神经网络
一、RNN神经网络 基本网络结构 RNN神经网络数学模型 RNN反向传播 二、LSTM神经网络 LSTM的遗忘门 对数据进行筛选,有的抛弃,有的保留 LSTM的输入门 LSTM输出门 LSTM缓解RNN梯度消失问题...
SQL进阶技巧:有序数据合并问题之如何按照指定的规则对数据进行合并?【详解collect_list函数有序性保证】
目录 0 问题描述【小红书面试题】 1 数据准备 2 问题分析 3 小结 0 问题描述【小红书】 有如下需求,需要将左边的表变换成右边的表,注意字段内容的顺序及对应内容的一致性。 第一个字段为name,第二个字段为subject,第三个字段为score,变换后要求subject按照语文、数学…...
windows和office微软官方免费激活教程
微软提供了windows系统和office的官方免费激活,其实不用去买什么激活码,官方提供了激活方式,完全免费。目前测试没发现什么问题,windows还支持永久激活,比一些乱七八糟的kms激活工具还省心。 github地址:Gi…...
【C++ 面试 - 基础题】每日 3 题(七)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…...
Java面试题精选:消息队列(一)
1、为什么使用消息队列 问题用意: 其实就是想问一下消息队列有哪些使用场景,你项目中什么业务场景用到了消息队列,有什么技术挑战。使用MQ后给你带来了什么好处 规范回答: 消息队列的常见使用场景很多,但比较核心的…...
宝塔面板启用 QUIC 与 Brotli 的完整教程
环境 系统:Ubuntu 22.04.4 LTS x86_64 宝塔版本:7.7.0 (可使用本博客提供的一键安装优化脚本) nginx版本:1.26.1 开放UDP端口 注意:在你的服务器商家那里也要开放443 udp端口 sudo ufw allow 443/udp然后重新加载 UFW 以使新…...
Linux 进程调度(二)之进程的上下文切换
目录 一、概述二、上下文切换的实现1、context_switch2、switch_mm3、switch_to 三、观测进程上下文切换 一、概述 进程的上下文切换是指在多任务操作系统中,当操作系统决定要切换当前运行的进程时,将当前进程的状态保存起来,并恢复下一个要…...
Oracle事物临时表
在Oracle数据库中,事务临时表是一种特殊的表类型,主要用于存储在事务处理过程中产生的临时数据。这些表的数据只对当前会话或事务可见,并且在事务结束时会自动清除。 事务临时表的特点 生命周期: 事务临时表中的数据在事务提交或…...
看图学sql之sql的执行顺序
学完前面的内容,我们已经掌握了基本的sql语法了,那我们学的 select, distinct, from, where,group by, having, order by, limit 他们具体的执行顺序是什么样的呢? 语法: SELECT distinct column1, column2 FROM table1 join …...
百日筑基第四十五天-从JAVA8走到JAVA9
JAVA9新特性 Java 9发布于 2017 年 9 月 21 日 。 快速创建不可变集合 增加了List.of()、Set.of()、Map.of() 和 Map.ofEntries()等工厂方法来创建不可变集合(有点参考 Guava 的味道): List.of("Java", "C"); Set.of…...
力扣第五十七题——插入区间
内容介绍 给你一个 无重叠的 ,按照区间起始端点排序的区间列表 intervals,其中 intervals[i] [starti, endi] 表示第 i 个区间的开始和结束,并且 intervals 按照 starti 升序排列。同样给定一个区间 newInterval [start, end] 表示另一个区…...
跟《经济学人》学英文:2024年08月03日这期 India’s economic policy will not make it rich
India’s economic policy will not make it rich A new World Bank report takes aim at emerging-market growth plans 原文: The developing world has fallen back in love with economic planning. As protectionism sweeps the West, poor countries are n…...
js 深拷贝、浅拷贝深度解析
赋值操作: let obj{a:1,b:[1,2,3],c:{m:2}}let newObjobjnewObj.a2newObj.b.push(4)newObj.c.m3console.log(obj,newObj); 将一个对象赋值给一个变量,其实就是将这个对象在栈内存中的引用地址复制给了这个变量,这两个对象指向堆内存中的同一个…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
