有两种连接方式,inner join和outer join
其中outer join又分为三种:
- left outer join
- right outer join
- full outer join
下面通过实际例子来理解记录:
用到的数据库表格如下:
1 选择为部门号为5的所有员工的姓名、工作开始日期和工作头衔。
select E.F_NAME,E.L_NAME, JH.START_DATE, J.JOB_TITLE
from EMPLOYEES as E
INNER JOIN JOB_HISTORY as JH on E.EMP_ID=JH.EMPL_ID
INNER JOIN JOBS as J on E.JOB_ID=J.JOB_IDENT
where E.DEP_ID ='5'
因为工作开始日期在表JOB_HISTORY中,工作头衔在表JOBS中,所以这条查询需要连接三张表,即使用两次inner join。注意:因为from子句后的第一个表是EMPLOYEES,所以后面使用on来表示连接桥梁的时候,等号左边都必须是EMPLOYEES表。
2 对EMPLOYEES和DEPARTMENT表执行左外连接,并为所有员工选择员工id、姓氏、部门id和部门名。结果集包含所有员工,但只包含出生在1980年之前的员工的部门名称。
elect E.EMP_ID,E.L_NAME,E.DEP_ID,D.DEP_NAME
from EMPLOYEES AS E
LEFT OUTER JOIN DEPARTMENTS AS D ON (E.DEP_ID=D.DEPT_ID_DEP
AND YEAR(E.B_DATE) < 1980)
注:使用join关键字,用on来表示连接桥梁的时候,可以使用on关键字来进行更加复杂的条件限制连接。
查询结果: