题目: 查询各部门名称及对应的经理名称
分析: 部门名称在哪里有,在部门表Dept里面有;
经理名称只有在EMP表里有,所以这两张表要做关联。然后谁为主表?
Q: 部门名称要不要全部显示,即便没有对应的岗位,例如Salesman,Manager?
A: 部门表为主表,要全部显示。
SELECT D.DEPTNO,E.EMPNO,E.ENAME,E.JOB FROM DEPT D
LEFT JOIN EMP E
ON D.DEPTNO = E.DEPTNO;
Q: 为什么两个查询间不一样?
一个是部门40空值,一个却没有部门40.
And 是 ON 一并处理,依旧让Dept 主表上的所有Deptno 返回。
Where 是分布处理,是合并后再筛选指定的条件,但同时会屏蔽原来主表上潜在的空字段
{我们可以从Min(sal)测试一下,用最小值的SAL时候,如果部门20的最低工资是1450,那么在它会同样返回部门30里拥有同样工资}
SELECT D.DEPTNO,E.EMPNO,E.ENAME,E.JOB FROM DEPT D
LEFT JOIN EMP E
ON D.DEPTNO = E.DEPTNO
AND E.JOB = 'MANAGER';
SELECT D.DEPTNO,E.EMPNO,E.ENAME,E.JOB FROM DEPT D
LEFT JOIN EMP E
ON D.DEPTNO = E.DEPTNO
WHERE E.JOB = 'MANAGER';