1.distinct 去重
------->去重后
2.连接查询
什么叫连接查询?一张表叫单表查询,多张表叫多表查询
1)表连接分类
内连接又分为 等值连接,非等值连接,自连接
外连接分为左外连接,右外连接
很显然,我们必须添加限制条件来避免笛卡尔积的出现
通过笛卡尔积得出,表连接的次数越多,效率越低,尽量避免表的连接次数
1)1)等值连接
SQL92语法
SQL99语法
查询结果与92语法一样
(inner)join + 表名 : 说明内连接一个表 inner可以省略
on + 条件
SQL92语法缺点:
结构不清晰,和后期进一步筛选条件,都放到了where后面,即我后面想使用where条件将无法使用
SQL99语法优点:
表连接是独立的,连接之后,如果想进一步筛选,往后添加where条件
1)2)非等值连接
条件不是一个等量关系,被称为非等值连接
1)3)自连接
必须将一张表变成两张表
内连接特点:两张表没有主次关系,平等的,完成能够匹配的条件数据查询出来
1)4)外连接
表中含有null值,内连接查询时将无法查询出来,这时候我们得用到左外连接
左外连接和右外连接的区别
left代表什么:表示将join关键字左边的表看成主表;
例如上图,拿emp e 表作为主表,主要是将这张主表的数据全部显示出来,顺便查询关联右表
右外连接则是将dept d 作为主表,将此表的数据全部显示出来,顺便查询关联左表emp e
多表连接
语法:
注意:一条sql可以内连接和外连接混合使用
3.子查询
select语句中嵌套select,被嵌套的select语句被称为子查询
这样子查询就会报错,因为where子句不能直接使用聚合函数
两条语句并成一条
这就是我们所谓的子查询
同时子查询可以嵌套在所有语句里面
4.合并集合
union
这样子查询效率低
5.分页查询
实现效果
提高用户体验感
语法:
起始是0,显示5条数据
注意:limit 只能用在order by 后面
DQL大总结