排序、分页、多表查询

本文详细介绍了SQL查询的基本顺序,包括where、orderby和limit的执行顺序,以及多表查询的重要性。通过实例展示了内连接、外连接(左外、右外)的使用,强调了在多表查询中明确字段来源和使用别名的规范。此外,还提到了SQL99语法中的join on方法,并提及了MySQL中实现满外连接的技巧。最后,探讨了SQL查询的分类,包括等值连接与非等值连接、自连接与非自连接、内连接与外连接。
摘要由CSDN通过智能技术生成

排序数据

如果没有进行排序的操作,那么查询出来的数据就是根据添加的顺序显示的。

使用order by对查询到的数据进行排序操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:
在这里插入图片描述
强调格式
在这里插入图片描述
from先执行,然后执行where,然后执行select,然后再执行order by。
因此列的别名是在执行完where后才执行的,所以列的别名不能在where中使用。

二级排序
在这里插入图片描述
若写成order by department_id,salary 则表示先从对department_id升序排序,department_id相同的情况下再对salary升序排序。
多级排序以此类推…

LIMIT分页操作

limit a,b;其中a表示偏移量,也就是从总数据的第a+1个开始显示,b表示每页显示多少条数据。
在这里插入图片描述
总结公式:
在这里插入图片描述
where …order by…limit 声明顺序
筛选、排序、分页
在这里插入图片描述
MySQL8.0新特性:LIMIT…OFFSET…
就是将limit 偏移量,条目数中的两个变量位置交换了
limit 条目数 offset 偏移量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

多表查询

为什么要使用多表查询?
在这里插入图片描述
利用employees表查询last name为‘Abel’的人的department_id,查到等于80之后
再用department_id在department表中去查询该人的location_id,查到location_id=2500后
再到locations表中去查询该人在哪个城市。

这种做法查询了三次才查到,效率太低,所以后面要用到多表查询。

多表的查询如何实现?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
但这里查询不到department_id为null的员工信息,后面再解决。

如果查询语句中出现了多个表中都存在的字段,则必须指明此字段所在的表。比如这里的department_id同时存在于employees,departments两个表中,所以需要指明。
在这里插入图片描述
建议
从sql优化的角度,建议多表查询时,每个字段前都指明其所在的表。
在这里插入图片描述
注意:如果给表起了别名,一旦在select或where中使用表名,则必须使用该表的别名,而不能再使用表的原名。否则报错。

在这里插入图片描述
总结:如果有n个表实现多表查询,则至少需要n-1个连接条件。否则必定出现迪卡尔积的错误。

多表查询的分类

从三个不同角度分类
角度一:等值连接 vs 非等值连接
角度二:自连接 vs 非自连接
角度三:内连接 vs 外连接

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
举例:
在这里插入图片描述
这是内连接,当employee_id为null时,对应的department_name不会显示出来,当department_id为null时,employee_id不会显示出来。
外连接就是解决这一问题的,可以使这两种情况显示出来。
外连接的分类:
左外连接、右外连接、满外连接。
左外连接:两个表在连接过程中除了返回满足连接条件的行以外还返回左表中不满足条件的行,这种连接称为左连接。
右外连接:两个表在连接过程中除了返回满足连接条件的行以外还返回右表中不满足条件的行,这种连接称为右连接。

在Oracle中这种写法可以,但MySQL中不行:
在这里插入图片描述

SQL99语法实现多表查询

SQL99语法中使用join…on的方式实现多表的查询。这种方式也能解决外连接的问题。MySQL是支持此种方式的。
实现内连接
两个表:
在这里插入图片描述
三个表:
在这里插入图片描述
实现外连接
SQL99语法实现外连接
左外连接:
可以显示出那些还没有部门的员工
在这里插入图片描述
在这里插入图片描述
右外连接只需要把left改成right
可以显示出暂时还没有员工的部门
在这里插入图片描述
满外连接
在这里插入图片描述
在这里插入图片描述
那么MySQL怎么实现满外连接呢?
要用到union:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
七种join的实现
在这里插入图片描述
在这里插入图片描述
满外连接
在这里插入图片描述
在这里插入图片描述
实现右下图
在这里插入图片描述

SQL99语法新特性

知识的拓展,会用前面的就行,这里只需要了解
自然连接
不够灵活,会强制将所有字段相同的进行等值连接
在这里插入图片描述
USING
在这里插入图片描述
在这里插入图片描述

课后练习
在这里插入图片描述
第三个勘误:select里面的d.department_id改成e.department_id

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值