MySQL中DQL语言之子查询

MySQL中DQL语言之子查询

  • 一、含义
  • 二、分类
  • 三、示例
    • 1、select后面
    • 2、from后面
    • 3、where或having后面
      • 1、标量子查询
      • 2、列子查询
      • 3、行子查询
    • 4、exists后面

如果你想了解更多关于MySQL的内容,可以查看:MySQL学习目录

一、含义

嵌套在其他语句内部的select语句称为子查询或内查询,外面的语句可以是insert、update、delete、select等,一般select作为外面语句较多外面如果为select语句,则此语句称为外查询或主查询。

二、分类

1、按结果集的行列
标量子查询(单行子查询):结果集为一行一列
列子查询(多行子查询):结果集为多行一列
行子查询:结果集为多行多列
表子查询:结果集为多行多列
2、按出现位置
select后面:仅仅支持标量子查询
from后面:表子查询
where或having后面:标量子查询、列子查询、行子查询
exists后面:标量子查询、列子查询、行子查询、表子查询

三、示例

演示表结构:
MySQL中DQL语言之子查询_第1张图片

1、select后面

特点:仅仅支持标量子查询
演示:查询每个部门的员工个数
MySQL中DQL语言之子查询_第2张图片

2、from后面

特点:将子查询结果充当一张表,要求必须起别名
演示:查询每个部门的平均工资的工资等级
MySQL中DQL语言之子查询_第3张图片

3、where或having后面

特点:
①子查询放在小括号内
②子查询一般放在条件的右侧
③标量子查询,一般搭配着单行操作符使用 > < >= <= = <>
列子查询,一般搭配着多行操作符使用 in、any/some、all
④子查询的执行优先于主查询执行,主查询的条件用到了子查询的结果

1、标量子查询

特点:查询结果只有一行一列
演示:查询最低工资的员工姓名和工资
MySQL中DQL语言之子查询_第4张图片

2、列子查询

特点:查询结果为多行一列
演示:查询所有是领导的员工姓名
MySQL中DQL语言之子查询_第5张图片

3、行子查询

特点:结果集一行多列或多行多列
演示:查询员工编号最小并且工资最高的员工信息
MySQL中DQL语言之子查询_第6张图片

4、exists后面

特点:
exists(完整的查询语句)
结果:1或0
演示:查询有员工的部门名
对比in和exists:

使用in查询
MySQL中DQL语言之子查询_第7张图片
使用exists查询
MySQL中DQL语言之子查询_第8张图片
以上就是关于mysql中DQL语言子查询的介绍,如果有不当之处或者遇到什么问题,欢迎在文章下面留言~
如果你想了解更多关于MySQL的DQL语言内容,可以查看:MySQL学习目录
转载请注明:https://blog.csdn.net/weixin_44662961/article/details/105312125

你可能感兴趣的:(MySQL中DQL语言之子查询)