【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, mangagerid
                            from emp
                            where 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;

二、总结

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

flutter聊天界面-Text富文本表情emoji、url、号码展示

flutter聊天界面-Text富文本表情emoji、url、号码展示 Text富文本表情emoji展示&#xff0c;主要通过实现Text.rich展示文本、emoji、自定义表情、URL等 一、Text及TextSpan Text用于显示简单样式文本 TextSpan它代表文本的一个“片段”&#xff0c;不同“片段”可按照不同的…

Matlab画等构造图

clc;clear;close all; data xlsread(TOPBRENT等T0构造.xlsx); x data(:,1) xmax max(x); xmin min(x); y data(:,2) ymax max(y); ymin min(y); z data(:,3); N 45; …

IDEA使用插件绘制UML类图+PlantUML语法讲解

安装 IDEA安装插件 安装完插件记得重启一下IDEA 安装Graphviz&#xff08;亲测win11可以使用&#xff09; 安装完插件之后&#xff0c;还需要安装Graphviz才可以渲染图形。 Graphviz安装包下载地址 安装过程很简单&#xff0c;直接双击或者管理员身份运行即可&#xff0c;注…

Docker中部署Redis集群与部署微服务项目的详细过程

目录 一、使用Docker部署的好处二、Docker 与 Kubernetes 对比三、Redis集群部署实战四、Spring Boot项目 打包镜像?小结 一、使用Docker部署的好处 Docker的好处在于&#xff1a;在不同实例上运行相同的容器 Docker的五大优点&#xff1a; 持续部署与测试、多云服务平台支…

微信小程序开发与应用——字体样式设置

要求&#xff1a;设置字体样式。 1、打开微信开发者工具&#xff0c;创建一个小程序&#xff0c;如下&#xff1a; 2、设置小程序的项目名称和路径&#xff0c;并选择开发语言为JavaScript&#xff0c;如下&#xff1a; 3、小程序的主体部分由三个文件组成&#xff0c;且都要…

VS2019+Qt5.15 在线显示百度地图

1.Qt5.15编译程序需要选择mscv2019 Release版本 2.需要到百度地图开发平台注册并获取到开发者key 3.显示地图是JS与Qt的交互过程&#xff0c;显示地图的html文件&#xff1a; <!DOCTYPE html> <html><head> <meta name"viewport" content&q…

基于ubuntu的驱动开发

一般的linux驱动开发都是基于交叉编译来进行的&#xff0c;本文尝试着从另一个角度&#xff1a;基于ubuntu的本地驱动开发来学习一下驱动的开发 一、驱动的开发与编译 1.1、编写驱动文件 #include <linux/init.h> #include <linux/module.h> static int hello_i…

深入理解Linux网络——内核是如何接收到网络包的

文章目录 一、相关实际问题二、数据是如何从网卡到协议栈的1、Linux网络收包总览2、Linux启动1&#xff09;创建ksotfirqd内核线程2&#xff09;网络子系统初始化3&#xff09;协议栈注册4&#xff09;网卡驱动初始化5&#xff09;网卡启动 3、迎接数据的到来1&#xff09;硬中…

Gradio库中的Model3D模块:实时上传和展示3D模型

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

结合具体场景举例说明chatgpt预训练模型中Tokenization的原理

假设我们有一个场景&#xff0c;Alice想向Chatbot询问一部电影的推荐。她发送了一条消息&#xff1a;“你好&#xff0c;能给我推荐一部好看的电影吗&#xff1f;” 在这个场景中&#xff0c;Chatbot使用了ChatGPT预训练模型。首先&#xff0c;Chatbot需要对Alice的消息进行Tok…

OpenCV读取一张8位无符号三通道图像并显示

#include <iostream> #include <opencv2/imgcodecs.hpp> #include <opencv2/opencv.hpp> #include

c++编写网络爬虫

c爬虫项目 实现图形化界面UI 安装easyX&#xff08;需要用的graphisc.h&#xff09; 我之前的文章详细写到过如何安装。是这篇文章提到的&#xff1a;传送门 easyx官网 创建图形化界面 #define WINDOW_WIDTH 482 #define WINDOW_HEIGHT 300 void initUI() {initgraph(WINDO…

SwiftUI的优缺点

2019年WWDC大会上&#xff0c;苹果在压轴环节向大众宣布了基于Swift语言构建的全新UI框架——SwiftUI&#xff0c;开发者可通过它快速为所有的Apple平台创建美观、动态的应用程序。推荐大量使用struct代替类。 SwiftUI 就是⼀种声明式的构建界面的用户接口工具包。 SwiftUI使用…

机器学习与深度学习——自定义函数进行线性回归模型

机器学习与深度学习——自定义函数进行线性回归模型 目的与要求 1、通过自定义函数进行线性回归模型对boston数据集前两个维度的数据进行模型训练并画出SSE和Epoch曲线图&#xff0c;画出真实值和预测值的散点图&#xff0c;最后进行二维和三维度可视化展示数据区域。 2、通过…

SpringBoot + Vue前后端分离项目实战 || 五:用户管理功能后续

系列文章&#xff1a; SpringBoot Vue前后端分离项目实战 || 一&#xff1a;Vue前端设计 SpringBoot Vue前后端分离项目实战 || 二&#xff1a;Spring Boot后端与数据库连接 SpringBoot Vue前后端分离项目实战 || 三&#xff1a;Spring Boot后端与Vue前端连接 SpringBoot V…

企业内部安全:利用 ADAudit Plus 管理与加强安全审计

在现代数字化时代&#xff0c;企业面临着日益复杂和不断变化的安全威胁。为了保护敏感数据、遵守合规要求以及防范内部威胁&#xff0c;企业需要有效的安全审计解决方案。ADAudit Plus 是一款强大而全面的安全审计工具&#xff0c;可以帮助企业管理和加强内部安全。 ADAudit Pl…

Jenkins持续集成,在Linux中安装最新版Jenkins(详细)

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

git学习1

打标签 与其他版本控制系统&#xff08;VCS&#xff09;一样&#xff0c;Git 可以给仓库历史中的某一个提交打上标签&#xff0c;以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点&#xff08; v1.0 、 v2.0 等等&#xff09;。 列出标签 在 Git 中列出已有的…

SpringCloud:微服务技术

一、认识微服务&#xff1a; 首先&#xff0c;微服务架构不等于SpringCloud&#xff0c;微服务架构是一种经过良好架构设计的分布式架构方案&#xff0c; &#xff0c;它将应用构建成一系列按业务领域划分模块的&#xff0c;小的自治服务&#xff0c;并解决服务拆分所产生的各种…

github搜索技巧笔记

一、了解 GitHub Watch按钮 Watch可以理解为关注的意思&#xff0c;默认情况下是Not watching&#xff0c;当选择Watch后&#xff0c;你会收到这个GitHub项目的所有动态。比如&#xff1a;有人发起pull request或者issue等。接收动态方式包括个人通知中心或者邮箱。 如果某个…