SQL基础–常见多表连接查询
连接查询某些情况下可以减少查询次数,提高效率
等于/不等连接
通过WHERE条件进行连接查询
--相等连接
SELECT e.EMPLOYEE_ID, e.LAST_NAME, d.DEPARTMENT_ID, d.DEPARTMENT_NAME
FROM EMPLOYEES e, DEPARTMENTS d
WHERE e.DEPARTMENT_ID = d.DEPARTMENT_ID;
员工没有对应部门,则不会出现在结果中
外连接
通过(+)进行连接查询,分主表和副表
-- 外连接
SELECT e.EMPLOYEE_ID, e.LAST_NAME, d.DEPARTMENT_ID, d.DEPARTMENT_NAME
FROM EMPLOYEES e, DEPARTMENTS d
WHERE e.DEPARTMENT_ID = d.DEPARTMENT_ID(+);
员工没有部门(没有外键关系时),仍会显示在结果中,只是部门信息为空
自连接
通过连接自身来查询符合条件的结果
-- 自连接
SELECT e1.EMPLOYEE_ID, e1.LAST_NAME, e1.MANAGER_ID , e2.LAST_NAME
FROM EMPLOYEES e1, EMPLOYEES e2
WHERE e1.MANAGER_ID = e2.EMPLOYEE_ID;
SELECT e1.EMPLOYEE_ID, e1.LAST_NAME, e2.EMPLOYEE_ID , e2.LAST_NAME
FROM EMPLOYEES e1, EMPLOYEES e2
WHERE e1.EMPLOYEE_ID = e2.MANAGER_ID;
一般员工和主管新西都存在于员工表中