MySQL查询操作(2)

MySQL查询操作(2)

5 统计查询

5.1 单字段分组统计

eg1: 查询每个部门的人数
在这里插入图片描述

eg2: 查询每个部门的部门名称,部门人数,平均工资
如下若使用左连接,我们可以看到结果中少了一个部门,因此正确的做法是使用右连接。
在这里插入图片描述

通过右连接解决eg2的问题,并将无人的部门平均工资null设为0输出:
在这里插入图片描述

5.2 多字段分组统计

eg: 查询每个部门的部门编号,部门名称,部门人数、平均工资
在这里插入图片描述

注:上述语法在MySQL中正确,但在Oracle中语法不正确,在Oracle中必须最后再加一个d.deptNo。由此可见,GROUP BY和ORDER BY后面是可以加多个字段的。
在这里插入图片描述

5.3 HAVING

HAVING一般和GROUP BY一起使用,用于完成分组之后的二次筛选工作。

eg1: 查询所有工资大于2000元的职位名称,平均工资,员工人数
在这里插入图片描述
eg2: 求出部门人数大于5人的部门,要求显示部门名称,部门编号,部门人数
在这里插入图片描述

6 子查询

子查询是在指一个完整的查询语句中,嵌套若干个不同功能的小查询,从而完成一个复杂的查询。

6.1 子查询返回单行单列数据

eg: 查询基本工资比Allen低的员工信息
想要完成这个查询,首先需要查询出Allen的工资,然后将它当做一个条件再去查询。
在这里插入图片描述

6.2 子查询返回单行多列数据

eg: 查询与员工7566从事同一工作且领导相同的全部员工信息
想要完成这个查询,首先需要查询出员工7566从事的工作以及他的领导,然后将它当做一个条件再去查询。
在这里插入图片描述

6.3 子查询返回多行多列数据

eg: 查询与员工7566,7369从事同一工作且领导相同的全部员工信息
在这里插入图片描述

6.4 在FROM语句中使用子查询

如果子查询返回的数据都是多行多列,则可以将其当做一张数据表,并且这种子查询一般出现在FROM语句中。

eg: 查询每个部门的部门编号,部门名称,部门人数,平均工资
在这里插入图片描述

6.5 在WHERE语句中使用子查询

如果返回的数据是单行单列,也可以在WHERE语句中使用子查询。
eg: 查询部门名称为accounting的所有员工信息
在这里插入图片描述

6.6 在SELECT语句中使用子查询

注:此方式的效率极低。

eg: 查询每个员工的部门名称
在这里插入图片描述

7 分页

在使用查询语句时,通常要返回前几条或中间某几行数据,这时可以利用LIMIT来完成。LIMIT语句可以被用于强制SELECT语句返回指定的记录数。
LIMIT接受一个或两个数字参数,参数必须是整数常量。如果给定两个参数,第一个参数是指定第一个返回记录行的偏移量(从0开始),第二个参数是指定返回记录行的最大数目。

语法如下:

SELECT 字段 FROMLIMIT 偏移量,数量

eg1: 查询emp表的前3条数据
在这里插入图片描述

eg2: 在emp表中从第3行开始查询5条数据
在这里插入图片描述

8 练习题

针对MySQL查询操作有相应的60道经典练习题。习题答案的SQL文件下载地址为:https://download.csdn.net/download/weixin_43263961/10693935

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值