目录

第1关 带比较运算的子查询

一、本关任务:查询大于所有平均年龄的员工姓名与年龄。

子查询

二、编程要求

三、预期输出:

四、代码

第2关 关键字子查询

一、本关任务:根据要求使用关键字进行查询。

ALL关键字

ANY和SOME关键字

IN关键字

二、编程要求tb_salary表数据:

三、预期输出:

四、代码


第1关 带比较运算的子查询

一、本关任务:查询大于所有平均年龄的员工姓名与年龄。

子查询

子查询是指出现在其他SQL语句内的SELECT子句。

例如:

  1. SELECT * FROM t1 WHERE col1=(SELECT col2 FROM t2);

子查询指嵌套在查询内部,且必须始终出现在圆括号内,子查询可以分为四类:

  • 标量子查询:返回单一值的标量,最简单的形式;

  • 列子查询:返回的结果集是 N 行一列;

  • 行子查询:返回的结果集是一行 N 列;

  • 表子查询:返回的结果集是 NN 列。

带比较运算符的子查询

运算符 说明
> 大于
>= 大于或等于
= 等于
!= 或 <> 不等于
< 小于
<= 小于或等于
  • 带有比较运算符的子查询是指父查询和子查询使用比较运算符连接的嵌套查询;

  • 使用场景:当用户能够确切的知道内层查询返回的是单个值时,可以使用比较运算符。

举个例子,现在有一张employee表数据:

id name dept_id
1 Mary 101
2 Allen 102
3 kevin 101
4 Tom 102
5 Nancy 101

我们查询与Tom在同一个部门的同事id和姓名以及部门id。 1.首先,可以查询Tom所在部门id

2.然后查询dept_id=102的同事id和姓名

将上面两条简单的的SQL语句合并成一个嵌套查询:

二、编程要求

补充代码,查询大于所有平均年龄的员工姓名与年龄。

tb_emp表,数据如下:

id name age
1 Mary 23
2 Allen 21
3 kevin 25
4 Tom 33
5 Nancy 28

三、预期输出:

  1. name age
  2. Tom 33
  3. Nancy 28

四、代码

USE Company;#请在此处添加实现代码
########## Begin ##########
#1.查询大于所有平均年龄的员工姓名与年龄select name,age from tb_emp where age>(select AVG(age)from tb_emp);########## End ##########

第2关 关键字子查询

一、本关任务:根据要求使用关键字进行查询。

相关知识

由于列子查询返回的结果集是 N 行一列,因此不能直接使用 =><>=<=<>这些比较标量结果的操作符。在列子查询中可以使用 ALLANYSOMEIN关键字操作符。

为了完成本关任务,你需要掌握:如何在子查询中使用关键字进行查询。

ALL关键字

ALL必须接在一个比较运算符的后面,表示与子查询返回的所有值比较都为 TRUE则返回TRUE

table1表数据:

col1
2
10

table2表数据:

col2
5
12
20

举个例子:

  1. SELECT col1 FROM table1 WHERE col1 > ALL (SELECT col2 FROM table2)

该查询语句不会返回任何结果,因为col1中没有比col2所有值都大的值。

ANYSOME关键字

ANY与比较操作符联合使用,表示与子查询返回的任何值比较为TRUE ,则返回TRUESOMEANY的别名,一般用的比较少。

仍使用上面二张表的数据:

在子查询中,返回的是table2的所有col2列的结果(5,12,20),然后将table1col1的值与之进行比较,只要大于col2的任何值则为TRUE,因此查询结果为10

IN关键字

  • IN的意思就是指定的一个值是否在这个集合中,如果在就返回TRUE;否则就返回FALSE了,同IN(项1,项2,...);

  • IN= ANY 的别名,二者相同,但 NOT IN 的别名却不是 <> ANY 而是 <> SOME

二、编程要求
tb_salary表数据:

id position salary
1 Java 8000
2 Java 8400
3 Java 9000
4 Python 6500
5 Python 10000

根据提供的数据,在右侧编辑器中补充代码:

  1. 查询薪资表中比Java最高工资高的所有员工职位名称和薪资;

  2. 查询薪资表中比Java最低工资高的所有员工职位名称和薪资;

  3. 查询薪资表中职位为Java的所有员工职位名称和薪资。

三、预期输出:

  1. position salary
  2. Python 10000
  3. position salary
  4. Java 8400
  5. Java 9000
  6. Python 10000
  7. position salary
  8. Java 8000
  9. Java 8400
  10. Java 9000

四、代码

USE Company;
#请在此处添加实现代码
########## Begin ###########1.使用 ALL 关键字进行查询
SELECT position,salary from tb_salary where salary>ALL(select max(salary)from tb_salary where position='Java');
#2.使用 ANY 关键字进行查询
SELECT position,salary from tb_salary where salary>ANY(select MIN(salary)from tb_salary where position='Java');
#3.使用 IN 关键字进行查询
SELECT position,salary from tb_salary where position IN('Java');
########## End ##########

MySQL数据库——子查询相关推荐

  1. mysql数据库子查询的使用_MySQL数据库使用子查询方式更新数据优化及思考

    [环境介绍] 云数据库MySQL 5.7 [背景描述] 业务需要:需要对16370077的表数据进行更新部分数据操作 UPDATE P_MOXXXX_REXXXX SET FISAVAILABLE = ...

  2. MySQL数据库子查询#where、from、exists三大类型子查询总结

    1.什么是子查询? 当一个查询嵌套了另一个查询,把嵌套在里面的查询先执行的查询就称为子查询. 2.什么情况下会使用到子查询? 当一个查询要完成时,需要用到另一个查询的结果才能继续操作,那么这个查询的s ...

  3. MySQL数据库---子查询insert,update,delete语句中嵌套子查询

    十.子查询的使用(重点) 1.子查询:指的是查询语句,嵌套查询语句---->一般是放在where子句中,表示条件. 2.子查询的应用使用场景: 2.1查询过程中,虽然给了条件,但是条件的结果并不 ...

  4. MySQL数据库子查询

    1. 子查询的介绍 在一个 select 语句中,嵌入了另外一个 select 语句, 那么被嵌入的 select 语句称之为子查询语句,外部那个select语句则称为主查询. 主查询和子查询的关系: ...

  5. MySQL数据库-子查询-表联接(内/外)-综合练习

    – 学生信息表 CREATE TABLE students( studentid INT AUTO_INCREMENT PRIMARY KEY,-- 学号 studentName VARCHAR(20 ...

  6. mysql数据库子查询练习_子查询以及sql练习

    无详细内容 无 --1列出emp表中各部门的部门号,最高工资,最低工资--先分组,后计算,SELECT e.deptno AS 部门号, MAX(e.sal) AS 最高工资, MIN(e.sal) ...

  7. mysql联合查询怎么加子查询_MySQL数据库 —子查询,联合查询

    编程之家收集整理的这篇文章主要介绍了MySQL数据库 -子查询,联合查询,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考. <MySQL数据库 -子查询,联合查询>要点: 本文 ...

  8. 查询 oracle_关于oracle和mysql数据库的查询问题

    近期在写mysql数据库报表时,需要给查询排序后的数据增加一列序号,用来统计查询数据的排名,在这里遇到一个视图和排序冲突的问题. Part 1 在oracle数据库中可以直接给查询语句增加一列ROWN ...

  9. 浅谈mysql的子查询

    2019独角兽企业重金招聘Python工程师标准>>> mysql的子查询的优化一直不是很友好,一直有受业界批评比较多,也是我在sql优化中遇到过最多的问题之一,mysql在处理子查 ...

最新文章

  1. elasticsearch 分片恢复经历了哪些步骤?
  2. 使用MapReduce实现join操作
  3. jggrid应用于asp.net
  4. 不要轻信!那些说月过一万的图片!
  5. Ajax请求,跨域小坑
  6. html 形成打印数据,用HTMLTestRunner生成报告,无法打印print的内容
  7. linux安装zlib_Linux zlib和libpng安装(LAMP环境搭建)
  8. ch340串口驱动_关于串口下载问题和超时
  9. flask + 蓝图 用 sqlalchemy 对 mysql 进行 增删查改 的 demo
  10. SpringBoot(六):SpringBoot整合Redis
  11. 距离传感器控制灯泡代码_生迪全彩智能 LED 灯泡体验评测
  12. 金属,塑料,傻傻分不清楚
  13. linux初始:命令行解释器(shell)、权限
  14. 【registry】registry 0.9 源码 在 windows下运行
  15. Shell 扩展的分类
  16. nas服务器改成网站,nas配置web服务器
  17. linux shell脚本 检查IP地址格式
  18. windows7计算机不显示光驱,win7系统检测不到光驱的解决方法
  19. 制作马卡龙渐变海报教程
  20. 路由器选华硕还是tp_路由器,网件的好还是华硕的好?

热门文章

  1. URi和URL和URN之间的关系?
  2. python GMT时间格式转化
  3. Android6.0的phone应用源码分析(3)——phone 拨号UI分析
  4. 第一章:带你探寻微机系统奇经八脉!
  5. Elasticsearch:Multi-match (multi_match) 及 Disjunction max 查询
  6. LINUX基础知识及命令
  7. 一篇关于机器学习的温和指南
  8. 用Python将word文件转换成html
  9. VMware Ubuntu虚拟机扩容 value out of range 问题
  10. JAVA读取EDID