【MySQL】不就是子查询

前言

今天我们来学习多表查询的下一个模块——子查询,子查询包括了标量子查询、列子查询、行子查询、表子查询,话不多说我们开始学习。

 目录

前言

 目录

一、子查询

1. 子查询的概念

2. 子查询语法格式 

2.1 根据子查询结果不同可以分为:

2.2 根据子查询位置分为:

2.3 标量子查询概念

2.4 标量子查询练习 

2.3 列子查询概念

​2.4 列子查询练习

2.5 行子查询概念

2.6 行子查询练习 

2.7 表子查询概念

二、总结


一、子查询

1. 子查询的概念

SQL语句中嵌套使用select语句,称为嵌套查询,又称为子查询。

2. 子查询语法格式 

select * from 表1  where column1=(select column1 from 表2);

子查询外部的语句可以是insert/update/delete/select 的任何一个。 

2.1 根据子查询结果不同可以分为:

标量子查询:子查询结果为单个值

列子查询:子查询结果为一列

行子查询:子查询结果为一行

表子查询:子查询结果为多行多列

2.2 根据子查询位置分为:

select id from dept where name='市场部';

where之后

from之后

select之后

2.3 标量子查询概念

  子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式,这种子查询成为标量子查询。常用的操作符:= 、<>(不等于)、 >、 >=、 <、<= 。

2.4 标量子查询练习 

2.4.1 查询 "市场部" 的所有员工的信息(使用的是上期的表结构)

a.查询"市场部"部门id

select id from dept where name='市场部';

b.根据市场部门id查询员工信息

select * from emp where dept_id=4;

a.b.合二为一

select * from emp where dept_id=(select id from dept where name='市场部');

2.4.2 查询杜甫入职之后的员工信息

a.查询杜甫的入职日期

select entrydate from emp where name='杜甫';

b.查询指定日期之后入职的员工信息

select * from emp where entrydate>'0120-01-01';

合二为一

select * from emp where entrydate>(select entrydate from emp where name='杜甫');

2.3 列子查询概念

子查询返回的结果是一列(可以是多行),这种子查询称为列子查询。

常用的操作符:IN 、NOTIN、ANY 、SOME 、ALL

2.4 列子查询练习

2.4.1 查询研发部和市场部所有员工的信息

a.查询研发部和市场部的部门ID

select id from dept where name='市场部'or name='研发部';

b.根据部门id查询员工信息

select * from emp where dept_idin(2,3);

合二为一

select *
from emp
where dept_id in (select id from dept where name = '市场部' or name = '研发部');

2.4.2 查询比市场部所有人工资都高的员工信息

a.查询所有市场部人员工资

select salary from emp where dept_id=(select id from dept where name='市场部');

b.查询比市场部所有员工工资都高的员工信息

select * from empwhere salary>all(select salary from emp where dept_id=(select id from dept where name='市场部'));

2.4.3 查询比市场部其中一人工资高的员工信息

select * from emp where salary>any(select salary from emp where dept_id=(select id from dept where name='市场部'));

2.5 行子查询概念

子查询返回的结果是一行(可以是多列),这种子查询称为行子查询。

常用的操作符:= 、<>、IN 、NOT IN

2.6 行子查询练习 

 查询与杜甫的薪资及直属领导相同的员工信息

2.6.1 行子查询

select *
from emp
where (salary, mangagerid) = (select salary, mangagerid from emp where name = '杜甫');

2.7 表子查询概念

子查询返回的结果是多行多列,这种子查询称为表子查询。

常用的操作符:IN

2.7.1 查询与李白杜甫置位相同和薪资相同的员工信息

select *
from emp
where (job, mangagerid) in (select salary, mangageridfrom empwhere name = '李白'or name = '杜甫');

2.7.2 查询入职日期是’100-01-01‘之后员工的日期信息,其部门信息

a.入职日期是‘100-01-01’之后的信息

select * from emp where entrydate>'100-01-01';

b.查询这部分员工,对应的部门信息 

select e.*,d.* from(select * from emp where entrydate>'100-01-01') e
left join dept on e.dept_id=d.id;

二、总结

   多表查询学到这个时候就结束了,你学会了多表查询了吗?在下一期我们将对多表查询进行综合性的练习课程。希望你能够真正的学会多表查询。期待我们下期再见!

 

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

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

相关文章

vscode修改markdown侧边预览pdf字体等设置

文章目录 1.按CtrlShiftP打开命令窗口2.在命令窗口出输入Markdown Preview Enhanced: Customize Css&#xff0c;打开style.less文件 1.按CtrlShiftP打开命令窗口 2.在命令窗口出输入Markdown Preview Enhanced: Customize Css&#xff0c;打开style.less文件 然后在文件内加…

群晖 NAS WebDAV服务手机ES文件浏览器远程访问

文章目录 1. 安装启用WebDAV2. 安装cpolar3. 配置公网访问地址4. 公网测试连接5. 固定连接公网地址6. 使用固定地址测试连接 转载自cpolar极点云文章&#xff1a;群晖NAS搭建WebDAV服务手机ES文件浏览器远程访问 有时候我们想通过移动设备访问群晖NAS 中的文件,以满足特殊需求,…

OpenMMLab OpenMMLab mmdeploy v1.1.0模型部署(一)

一、MMDepoly整体框架 模型部署是指把机器学习训练生成的算法模型&#xff0c;部署到各类云、边、端设备上去&#xff0c; 并使之高效运行&#xff0c;从而将算法模型实际地应用到现实生活中的各类任务中去&#xff0c;从而实现AI的智能化转型。 目前&#xff0c;我们已经支持…

CSS 内容盒子

这章比较重要&#xff0c;会不断更新❗ 文章目录 内容盒子开发者工具的使用border 边框padding 内边距margin 外边距盒子整体尺寸元素默认样式与CSS重置元素分类块级标记行级标记行内块标记 display样式内容溢出裁剪掉溢出部分滚动条 圆角边框 border-radius 内容盒子 提示&am…

Redis进阶 - Redis分片集群

原文首更地址&#xff0c;阅读效果更佳&#xff01; Redis进阶 - Redis分片集群 | CoderMast编程桅杆https://www.codermast.com/database/redis/redis-advance-sharded-cluster.html 搭建分片集群 主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决&a…

探索视频文本特征加速检索解决方案——倒排索引

前言 随着视频内容的不断增加&#xff0c;如何快速准确地检索到所需的视频成为了一个重要的问题。而视频文本特征加速检索解决方案——倒排索引&#xff0c;成为了解决这一问题的有效手段。该技术可以加速文本和视频片段特征匹配、相似度排序过程&#xff01; 定义——何为“…

c++读取文件之---yaml-cpp使用

实际项目总会遇到有很多超参数的情况&#xff0c;用常规的结构体等无法有效的涵盖所有&#xff0c;为了方便用户进行配置使用&#xff0c;因此使用yaml的方式进行编辑配置&#xff0c;因此去调研使用了yaml-cpp的使用方法。 1、yaml-cpp下载和编译 下载方式很简单&#xff0c…

Web安全——DIV CSS基础

DIV CSS基础 一、DIV和CSS样式二、样式表类型2.1 嵌入样式表2.2 外部样式2.3 内联样式 三、注释四、样式选择器组合选择器 五、背景六、边框七、文字属性八、文本属性九、列表十、超链接十一、盒子模型十二、Border 边框margin padding 十三、float 脱离文档流浮动十四、块级元…

nvm安装nodejs-2023年6月29日

nvm安装nodejs-2023年6月29日 cmd命令行&#xff0c;执行如下代码&#xff0c;表示安装最新稳定版本的node,这里默认是国外的node节点服务器 nvm install lts报错的话&#xff0c;找到安装目录&#xff0c;打开settings.txt&#xff0c;添加如下代码 更换node的国内淘宝镜像节…

Selenium教程__使用Select类对象处理下拉框(15)

select标签的下拉框可以使用selenium的 Select模拟下拉框选择操作。 Select需要导入才能使用&#xff0c;导入路径如下 from selenium.webdriver.support.ui import Select 下面以hao123(https://www.hao123.com) 演示下拉框操作 演示代码如下 import time from selenium i…

knife4j 4.1.0(OpenAPI3)实现spring security或shiro权限注解内容显示

前两天写了个knife4j&#xff08;swagger2&#xff09;实现spring security或shiro权限注解内容显示&#xff0c;主要是使用knife4j 2.0.5来实现权限注解内容显示的扩展。 在Spring Boot 3 中只支持OpenAPI3规范&#xff0c;集成knife4j的stater&#xff1a;knife4j-openapi3-…

若隐若现的芯片

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>若隐若现的芯片</title><script src"https://unpkg.co/gsap3/dist/gsap.min.js">…