连接查询
概念:
连接查询就是多张数据表进行连接然后查询数据,而连接查询 又分为内连接查询和外连接查询。
内连接查询:只有满足条件的数据才会被显示。
外连接查询:可以控制不满足条件的数据是否显示。
左外连接查询:可以让左表不满足条件的数据也显示。
右外连接查询:可以让右表不满足条件的数据也显示。
全外连接查询:可以让左表和右表不满足条件的数据都行显示。
查询出雇员的编号、姓名、职位、薪资、部门的位置和部门编号
SELECT empno,ename,job,sal,loc,d.deptno
FROM emp e ,dept d
WHERE e.deptno=d.deptno;
代码运行结果如下:
左外连接查询(oracle特有方式)
SELECT empno,ename,job,sal,loc,d.deptno
FROM emp e ,dept d
WHERE e.deptno=d.deptno(+);
代码运行结果如下:
右外连接查询(oracle特有方式)
SELECT empno,ename,job,sal,loc,d.deptno
FROM emp e ,dept d
WHERE e.deptno(+)=d.deptno;
代码运行结果如下:
内连接查询的其他实现方式
使用其他方式实现内连接查询
SELECT empno,ename,job,sal,dname,loc,d.deptno
FROM emp e INNER JOIN dept d ON e.deptno=d.deptno;
代码运行结果如下:
查询出雇员的编号、姓名、职位、部门名称、部门位置、薪资等级
SELECT empno,ename,job,dname,loc,grade
FROM emp e INNER JOIN dept d ON e.deptno=d.deptno
INNER JOIN salgrade s ON e.sal BETWEEN s.losal AND s.hisal;
代码运行结果如下:
通用的外连接查询
使用通用方式实现左外连接查询
SELECT empno,ename,job,sal,dname,loc,d.deptno
FROM emp e LEFT OUTER JOIN dept d ON e.deptno=d.deptno;
代码运行结果如下:
右外连接查询
SELECT empno,ename,job,sal,dname,loc,d.deptno
FROM emp e RIGHT OUTER JOIN dept d ON e.deptno=d.deptno;
代码运行结果如下:
全外连接查询
SELECT empno,ename,job,sal,dname,loc,d.deptno
FROM emp e FULL OUTER JOIN dept d ON e.deptno=d.deptno;
代码运行结果如下:
总结:
1.内连接查询的方式有两种:
- 直接在FROM之后跟上多张数据表,在WHERE条件中去掉笛卡尔积
- 使用INNER JOIN 进行连接,在ON之后去掉笛卡尔积
2.通用的外连接查询
- 左外连接:使用LEFT OUTER JOIN 实现,在ON之后去掉笛卡尔积
- 右外连接:使用RIGHT OUTER JOIN 实现,在ON之后去掉笛卡尔积
- 全外连接:使用FULL OUTER JOIN 实现,在ON之后去掉笛卡尔积