您的位置:首页 > 数据库 > Oracle

Oracle连接<二>

2015-08-17 22:26 573 查看
3. 外连接

外连接是指在内连接的基础上,将某个连接表中不符合连接条件的记录加入结果集。根据结果集中所包含不符合连接条件的记录来源的不同,外连接分为左外连接、右外连接、全外连接3中。

(1)左外连接

左外连接是指在内连接的基础上,将连接操作符左侧表中不符合连接条件的记录加入结果集中,与之对应的连接操作符右侧列表用NULL填充。

在Oracle数据库,左外连接的表示方式有两种。

标准SQL语句的连接方式
SELECT table1.column,table2.column[,...]
FROM table1 LEFT JOIN table2[,]
ON table1.column <operator> table2.column[,...];

Oracle扩展的连接方式
SELECT table1.column,table2.column[,...]
FROM table1,table2[,...]

ON table1.column<operator> table2.column(+)[...];

例如,查询10号部门的部门名、员工号、员工名和所有其他部门的名称,语句为

SQL>SELECT dname,empno,ename FROM dept LEFT JOIN emp

ON dept.deptno=emp.deptno AND dept.deptno=10;



SQL>SELECT dname,empno,ename FROM dept,emp

WHERE dept.deptno=emp.deptno(+) AND emp.deptno(+)=10;

(2)右外连接

右外连接是指在内连接的基础上,将连接操作符右侧表中不符合连接条件的记录加入结果集中,与之对应的连接操作符左侧列表用NULL填充。

标准SQL语句的连接方式:
SELECT table1.column, table2.column[,...]
FROM table1, RIGHT JOIN table2 [,...]
ON table1.column<operator> table2.column[...];

Oracle扩展的连接方式:
SELECT table1.column, table2.column[,...]
FROM table1, table2[,...]
WHERE table1.column(+)<operator> table2.column[...];

例如,查询20号部门的部门名称及其员工号、员工名,和所有其他部门的员工名、员工号,语句为

SQL>SELECT empno,ename,dname FROM dept RIGHT JOIN emp

ON dept.deptno = emp.deptno AND dept.deptno=20;



SQL>SELECT empno,ename,dname FROM dept, emp

WHERE dept.deptno(+) =emp.deptno AND dept.deptno(+) =20;

(3)全外连接

全外连接是指在内连接的基础上,将连接操作符两侧表中不符合连接条件的记录加入结果集中。

在Oracle数据库中,全外连接的表示方式为

SELECT table1.column,table2.column[,...]

FROM table1 FULL JOIN table2[,...]

ON table1.column1 = table2.column2[...];

例如,查询所有的部门名和员工名,语句为:

SQL>SELECT dname,ename FROM emp FULL JOIN dept ON emp.deptno = dept.deptno;

注意:(+)操作符仅适用于左外连接和右外连接,而且如果WHERE 子句中包含多个条件,则必须在所有条件中包含(+)操作符。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: