首页 > 数据库 >知识不成体系?这篇Mysql数据库将成为你的解忧杂货店!(子查询)

知识不成体系?这篇Mysql数据库将成为你的解忧杂货店!(子查询)

时间:2024-07-01 13:29:27浏览次数:3  
标签:employees Mysql 解忧 查询 运算符 杂货店 DEPARTMENT e1 ID

 欢迎来到@一夜看尽长安花 博客,您的点赞和收藏是我持续发文的动力

对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论的问题可联系我:[email protected] 。发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

    专栏:

文章概述:对mysql的 子查询命令的详细介绍&对应的习题&注意点

关键词:Mysql    子查询

本文目录

子查询简介

单行子查询

多行子查询

1、ANY 运算符 

2.ALL运算符

3.子查询中的空值

子查询练习

  • 子查询简介

子查询是一个 SELECT 语句,它是嵌在另一个 SELECT 语句中的子句。使用子查询可以用简单的语句构建功能强大的语句

#查询与Fox同一部门的同事,并显示他们的名字与部门ID。

select e.LAST_NAME,e.DEPARTMENT_ID FROM employees e
where e.DEPARTMENT_ID=
(select e1.DEPARTMENT_ID from employees e1 where e1.last_name='Fox');

单行子查询

单行子查询是从内查询返回一行的查询。在该子查询类型中用一个单行操作符。

#查询Fox的同事,但是不包含他自己。

select empl.last_name from employees emplwhereempl.department_id
=(selecte.department_id from employees ewheree.last_name='Fox') and
empl.last_name<>'Fox';  

多行子查询


 

子查询返回多行被称为多行子查询。对多行子查询要使用多行运算符而不是单行运算符

1、ANY 运算符 

ANY 运算符比较一个值与一个子查询返回的任意一个值。

  1. < ANY 意思是小于最大值。
  2. > ANY 意思是大于最小值。
  3. = ANY 等同于 IN or 的关系

2.ALL运算符

ALL运算符比较一个值与子查询返回的全部值。

  1. < ALL意思是小于最小值。
  2. > ALL意思是大于最大值。

NOT运算符可以与IN运算符一起使用。

3.子查询中的空值

(子查询)内查询返回的值含有空值,并因此整个查询无返回行,原因是用大于、小于或不等于比较Null值,都返回null。所以,只要空值可能是子查询结果集的一部分,就不能用NOT IN运算符。NOT IN运算符相当于<> ALL (不等于谁并且不等于谁并且不等于谁)。

注意,空值作为一个子查询结果集的一部分,如果使用IN操作符的话,不是一个问题。IN操作符相当于=ANY。

#in括号里是多结果用in 判断所有符合内函数结果的条件

SELECT emp.last_name 
FROM employees emp 
WHERE emp.employee_id 
IN 
(SELECT mgr.manager_id 
FROM employees mgr
); 


 

#查找各部门收入为部门最低的那些雇员。显示他们的名字,薪水以及部门ID

select em.last_name,em.salary,em.department_id from employees em where
em.salary in(select min(e.salary) from employees e group by e.department_id)
group by em.department_id; 


 

  • 子查询练习

1、

#写一个查询显示与Zlotkey在同一部门的雇员的last name和hire date,结果中不包括Zlotkey。

SELECT
e1.LAST_NAME,e1.HIRE_DATE
FROM employees e1
where e1.DEPARTMENT_ID=
(select e.DEPARTMENT_ID 
FROM employees e
where e.LAST_NAME='Zlotkey'
)
AND e1.LAST_NAME<>'Zlotkey'; 

2、

#创建一个查询显示所有其薪水高于平均薪水的雇员的雇员号和名字。按薪水的升序排序。

SELECT
e1.EMPLOYEE_ID,e1.LAST_NAME
FROM employees e1
WHERE e1.SALARY>
(
select AVG(e.SALARY)
from employees e
)
ORDER BY e1.SALARY;

3、

#写一个查询显示所有工作在有任一雇员的名字中包含一个u的部门的雇员的雇员号和名字

SELECT
e1.EMPLOYEE_ID,e1.LAST_NAME
FROM employees e1
WHERE e1.DEPARTMENT_ID IN
(SELECT e.DEPARTMENT_ID
FROM employees e 
WHERE e.LAST_NAME like '%u%'
)

4、

#.显示所有部门地点号(department location ID )是1700的雇员的last name、department number和job ID。

SELECT
e.LAST_NAME,e.DEPARTMENT_ID,e.JOB_ID
FROM employees e
WHERE e.DEPARTMENT_IDIN
(SELECT
d.DEPARTMENT_ID
FROM departments d
WHERE d.LOCATION_ID=1700)   

5、

#显示每个向King报告的雇员的名字和薪水。

SELECT
e1.LAST_NAME,e1.SALARY
FROM employees e1
where e1.MANAGER_IDIN
(select e.EMPLOYEE_ID
from employees e 
where e.LAST_NAME='King'
) 

6、

#.显示在Executive部门的每个雇员的department number、last name和job ID。

SELECT
e.DEPARTMENT_ID,e.LAST_NAME,e.JOB_ID
FROM employees e
WHERE e.DEPARTMENT_ID=
(select d.DEPARTMENT_ID 
FROM departments d 
WHERE d.DEPARTMENT_NAME='Executive'
);  

标签:employees,Mysql,解忧,查询,运算符,杂货店,DEPARTMENT,e1,ID
From: https://blog.csdn.net/ta683280/article/details/140077385

相关文章

  • 1974Springboot医院远程诊断管理系统idea开发mysql数据库web结构java编程计算机网页源
    一、源码特点 springboot医院远程诊断管理系统是一套完善的信息系统,结合springboot框架和bootstrap完成本系统,对理解JSPjava编程开发语言有帮助系统采用springboot框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。springboot医院远程诊断系统......
  • Mysql模拟数据
    模拟SQL模拟报表数据(每日一条记录)--删除现有临时表(如果存在)DROPTEMPORARYTABLEIFEXISTStemp_citypower_dates;--创建临时表用于生成模拟数据CREATETEMPORARYTABLEtemp_citypower_dates(city_idINT,daytimeDATE,typeINT,powerDECIMAL(1......
  • mysql 主从一致性检测与修复
    percona-toolkit下载需要安装的依赖包[centos7]yum-yinstallperl-Digest-MD5perl-DBIperl-DBD-MySQL--nogpgcheck--disablerepomysql80-community--enablerepomysql57-community原理将一张大表分成多个chunk,每次针对一个chunk进行校验,同时将校验的结果通过REPL......
  • (免费领源码)java#Springboot#mysql物品代拿系统32500-计算机毕业设计项目选题推荐
    摘 要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术开发,Sp......
  • 乌班图Ubuntu 24.04初始化MySQL报错error while loading shared libraries: libaio.so
    由于乌班图24.04LTS已经发布了,因此准备新业务逐步往这上面迁移,毕竟支持有效期比22.04更长准备在24.04上进行MySQL的初始化,因为习惯自定义安装存储目录,所以使用mysql-8.0.37-linux-glibc2.28-x86_64.tar.xz这个最新的二进制版本。按照22.04版本整理的安装笔记进行操作,第一步安装......
  • Mysql表的增删改查详解
    3.表的增删改查创建一个学生表DROPTABLEIFEXISTSstudent;CREATETABLEstudent(idINT,snINTcomment'学号',nameVARCHAR(20)comment'姓名',qq_mailVARCHAR(20)comment'QQ邮箱');单行数据+全列插入插入两条记录,value_list数量必须......
  • 类JPA定制mysql中日志打印
    在类JPA自定义框架中,使用mysql数据库,开发环境可以考虑调整driver:jdbc.driver=net.sf.log4jjdbc.DriverSpy配置:spring.datasource.driver-class-name=net.sf.log4jdbc.DriverSpyspring.datasource.url=jdbc:log4jdbc:mysql://localhost:3306/springboot?useUnicode=true&......
  • MySQL 索引之外的相关查询优化总结
    在这之前先说明几个概念:1、驱动表和被驱动表:驱动表是主表,被驱动表是从表、非驱动表。驱动表和被驱动表并非根据from后面表名的先后顺序而确定,而是根据explain语句查询得到的顺序确定;展示在前面的是驱动表,后面的是非驱动表。2、关联查询的类型非为:内连接(innerjoin)、......
  • “了解MySQL中的enum枚举数据类型“
    目录#开篇1.创建包含枚举类型的表2.插入枚举类型的数据3.查询包含枚举类型的表4.更新枚举类型的数据5.使用枚举类型的好处注意事项示例总结附加#开篇        在数据库中,枚举(ENUM)是一种数据类型,用于存储一组预定义的值。这在某些情况下非常有用,例如......
  • MySQL面试重点-2
    16.MySQL数据引擎:引擎分类:showengines命令查看数据库支持的存储引擎。描述一下InnoDB和MyISAM的区别?**InnoDB存储限制64TB,而MyISAM存储限制256TB;InnoDB支持事物,而MyISAM不支持;InnoDB支持外键,而MyISAM不支持;InnoDB支持行级锁(默认)+表级锁,而MyISAM支持表级锁;InnoDB支持MVCC......