MYSQL学习之子查询(表连接查询)以及权限控制

在上一篇博客里我们详细的介绍了MySQL语言的DDL(数据定义语言) 和 DML(数据操作语言),那么在这篇博客中我们要对上次的DML进行补充;同时我们要介绍DCL(数据控制语言);

子查询

在学习子查询的开始我们由这样一个问题来引出;
我们现在有一张员工表emp,该表中包含员工的编号,姓名,薪资,入职日期等等信息;
假如我们现在想在这张表中查询最高薪资员工的员工信息,那按照我们之前学的知识来说,我们可能会这么写:

select max(sal),e.* from emp e;

乍一看这么写没什么错,我们获得最高工资和最高工资的人的所有信息,可是实际上它是有问题的,会报错;我们想一下,如果我们的表中有两个人同时有着最高的工资,那我们按照上面的语句查询就会发现我们获得的最高工资是一行,而对应的人信息却需要输出两行;这显然是不行的;这时候我们就需要用到子查询了;

  • 子查询定义:
    子查询允许把一个查询嵌套在另一个查询当中。
    子查询,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询。
    子查询可以包含普通select可以包括的任何子句,比如:distinct、 group by、order by、limit、join和union等;但是对应的外部查询必须是以下语句之一:select、insert、update、delete、set或 者do。
    说的通俗一点,子查询就是把一个查询语句的结果当作另一个查询语句的条件;

  • 子查询的分类
    根据子查询返回值的数量,将子查询可以分为标量子查询和多值子查询。

  1. 标量子查询:返回单一值的标量,最简单的形式。
    也就是将子查询的结果当作一个值
  2. 表子查询:返回的结果集是 N 行 N 列
    也就是将子查询的结果当作一张表

标量子查询

这时候我们再看上面的问题,用了子查询我们就可以这么做:
首先我们要获得表中的最高工资是多少;

select max(sal) from emp;

在这里插入图片描述
这句话获得了表中的最高工资,我们看到是5000;
那现在我们想获得工资是500

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值