【MySQL】不就是子查询

这篇具有很好参考价值的文章主要介绍了【MySQL】不就是子查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

【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='市场部');

【MySQL】不就是子查询

【MySQL】不就是子查询

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

【MySQL】不就是子查询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 = '研发部');

【MySQL】不就是子查询

【MySQL】不就是子查询

【MySQL】不就是子查询

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='市场部'));

【MySQL】不就是子查询

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

select * from emp where salary>any

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

【MySQL】不就是子查询

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;

【MySQL】不就是子查询

二、总结

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

 【MySQL】不就是子查询文章来源地址https://www.toymoban.com/news/detail-496652.html

到了这里,关于【MySQL】不就是子查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MySQL】不就是子查询

    今天我们来学习多表查询的下一个模块——子查询,子查询包括了标量子查询、列子查询、行子查询、表子查询,话不多说我们开始学习。 前言  目录 一、子查询 1. 子查询的概念 2. 子查询语法格式  2.1 根据子查询结果不同可以分为: 2.2 根据子查询位置分为: 2.3 标量子查

    2024年02月10日
    浏览(36)
  • Mysql时间查询 昨天、今天、上月、本月...

      本文为 【MySQl】 关于时间的查询  📌博主主页:一个肥鲇鱼 👉策略模式之Map+函数式接口:策略模式之Map+函数式接口  👉感受 Lambda 之美:体验一下Lambda之美吧,优雅编程 👉Bean转换工具:Mapstruct使用教程 解释: DATE_SUB函数是MySQL中的一个日期函数,用于在指定的日期上

    2024年02月08日
    浏览(70)
  • MySQL---多表联合查询(上)(多表关系、外键约束、学生成绩多表关系、交叉连接查询)

    1. 多表关系 MySQL 多表之间的关系可以概括为: 一对一:        比如:一个学生只有一张身份证;一张身份证只能对应一学生。        实现原则:在任一表中添加唯一外键,指向另一方主键,确保一对一关系。         一般一对一关系很少见,遇到一对一关系的表最好是

    2024年02月05日
    浏览(56)
  • MySQL表单查询以及多表查询

    1.单表查询 CREATE TABLE `emp`  (   `empno` int(4) NOT NULL,   `ename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,   `job` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,   `mgr` int(4) NULL DEFAULT NULL,   `hiredate` date NOT NULL,   `sai` int(255) NOT NULL,   `comm` int(255) NULL DEFAULT

    2024年02月13日
    浏览(42)
  • MySQL案例——多表查询以及嵌套查询

    MySQL笔记——表的修改查询相关的命令操作 MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明 文章目录 系列文章目录 前言 一 创建数据库 1.1 创建一个部门表 1.2 建一个职务表 1.3 创建一个员工表 1.4 创建一个工

    2024年02月15日
    浏览(42)
  • MySQL-单表、多表查询

    创建表并添加数据 查看表结构和表信息

    2024年01月18日
    浏览(43)
  • mysql多表查询练习

    两个表如图所示 1、查询每个部门的所属员工 根据表中展现的情况,员工表里面是没有人事部的,如果我们使用内连接就看不出具体的情况,人事部会被直接屏蔽掉 这个时候应该使用左连接,将人事部的情况体现出来 2、查询研发部门的所属员工 3、查询研发部和销售部的所

    2024年02月13日
    浏览(52)
  • MySQL笔记-多表查询

    本文标签 : 多表查询  事务四大特性  并发事务问题  事务隔离级别 文章目录 目录 文章目录 一、多表查询 1.多表关系 2.多表查询概念  3.多表查询的分类  4.内连接  5.外连接 6.自连接  7.联合查询  8.子查询   1.标量子查询 2.列子查询 3.行子查询 4.表子查询  9.多表查询案

    2024年02月04日
    浏览(50)
  • MySQL(五)——多表查询

    MySQL(四)——约束 概述:项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本分为三种: 一对多(多对一) 多对多 一对一 一个部门对应多个员工,一

    2024年01月21日
    浏览(24)
  • MySQL-----多表查询(一)

    目录 一.多表关系: 1.1 一对多(多对一): 1.2 多对多: 1.3 一对一: 二.多表查询概述: 三.连接查询: 3.1内连接: 3.2外连接: 3.3自连接查询: 3.4联合查询: 项目开发中, 在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构 ,由于业务之间

    2024年04月27日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包