目录
3、列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。
一、连接查询(多表查询)
-
内连接 INNER JOIN (取表的并集)
SELECT * FROM EMP;
SELECT * FROM DEPT;
-
标准写法
SELECT E.EMPNO,
E.ENAME,
E.JOB,
E.MGR,
E.HIREDATE,
E.SAL,
E.COMM,
E.DEPTNO,
D.DEPTNO,
D.DNAME,
D.LOC
FROM EMP E
INNER JOIN
DEPT D
ON E.DEPTNO=D.DEPTNO
-
ORACLE写法
SELECT E.*,D.* FROM EMP E,DEPT D
WHERE E.DEPTNO=D.DEPTNO
-
外连接 左连接 右连接 全外连接
-
左连接 LEFT JOIN
-
(以左表为主表,主表数据保留,次表数据能对应上的提取,没有的则去掉)
SELECT E.*,D.*
FROM EMP E
LEFT JOIN
DEPT D
ON E.DEPTNO=D.DEPTNO
SELECT D.*,E.*
FROM DEPT D
LEFT JOIN
EMP E
ON D.DEPTNO=E.DEPTNO
SELECT D.*,E.* FROM DEPT D,EMP E WHERE D.DEPTNO=E.DEPTNO(+)
-
全外连接 FULL JOIN
SELECT D.*,E.* FROM DEPT D
FULL JOIN
EMP E
ON D.DNAME=E.ENAME
二、练习
1、列出所有员工的姓名及其直接上级的姓名。
select Y.ENAME,L.ENAME from EMP Y
left join EMP L on Y.MGR = L.EMPNO