连接查询
连接查询:也可以叫跨表查询,需要关联多个表进行查询
连接查询分类
根据语法出现的年代来划分的话,包括:
SQL92
SQL99
根据表的连接方式来划分,包括:
内连接:
等值连接
非等值连接
自连接
外连接:
左外连接(左连接)
右外连接(右连接)
全连接
笛卡尔积现象:当两张表进行连接查询的时候,没有任何条件进行限制,最终的查询结果条数是两张表记录条数的乘积。
示例
显示每个员工信息,并显示所属的部门名称
正确应该是
以上查询也称为 “内连接”,只查询相等的数据(连接条件相等的数据)
内连接和外连接
内连接:
假设A和B表进行连接,使用内连接的话,凡是A表和B表能够匹配上的记录查询出来,这就是内连接。AB两张表没有主副之分,两张表是平等的。
外连接:
假设A和B表进行连接,使用外连接的话,AB两张表中有一张表是主表,一张表是副表,主要查询主表中 的数据,捎带着查询副表,当副表中的数据没有和主表中的数据匹配上,副表自动模拟出NULL与之匹配。
外连接分类
左外连接(左连接):表示左边的这张表是主表。
右外连接(右连接):表示右边的这张表是主表。
示例
显示员工信息,并显示所属的部门名称,如果某一个部门没有员工,那么该部门也必须显示出来
右连接
左连接
以上两个查询效果相同
子查询
select语句当中嵌套select语句,被嵌套的select语句是子查询。
示例
查询哪些人的薪水高于员工的平均薪水,需要显示员工编号,员工姓名,薪水
实现思路:
- 取得平均薪水
select avg(sal) from emp;
2.取得大于平均薪水的员工
select empno, ename, sal from emp where sal > (select avg(sal) from emp);