Answer:等连接(内连接)、非等连接、自连接、外连接(左、右、全)
Orhashjoin/mergejoin/nestloop(clusterjoin)/indexjoin??
ORACLE8i,9i表连接方法。
一般的相等连接:select*froma,bwherea.idb.id;这个就属于内连接。
对于外连接:
Oracle中可以使用“(+)”来表示,9i可以使用LEFT/RIGHT/FULLOUTERJOIN
LEFTOUTERJOIN:左外关联
SELECTe.last_name,e.department_id,d.department_name
FROMemployeese
LEFTOUTERJOINdepartmentsd
ON(e.department_idd.department_id);
等价于
FROMemployeese,departmentsd
WHEREe.department_idd.department_id(+)
结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录。
RIGHTOUTERJOIN:右外关联
RIGHTOUTERJOINdepartmentsd
WHEREe.department_id(+)d.department_id
结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。
FULLOUTERJOIN:全外关联
FULLOUTERJOINdepartmentsd
1/26
结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录和
没有任何员工的部门记录。
ORACLE8i是不直接支持完全外连接的语法,也就是说不能在左右两个表上同时加上(+),下
面是在ORACLE8i可以参考的完全外连接语法
selectt1.id,t2.idfromtable1t1,tablet2wheret1.idt2.id(+)
union
selectt1.id,t2.idfromtable1t1,tablet2wheret1.id(+)t2.id