[转]Oracle 加号外链接

今天在一段oracle的sql语句中看到这样的写法。sql

SELECT ******
FROM   ******
WHERE  ******
       AND r1.attribute13 = h1.employee_num(+) oracle

最后面出现了小括号中间放一个加号的写法,oracle用的时候不长,不知道这是啥意思,因而摆肚一下。竟然是外链接的意思,就是sql server中的left/right (outer)的意思。spa

================server

 

对于外链接,Oracle中可使用“(+)”来表示,标准 sql 可使用LEFT/RIGHT/FULL OUTER JOIN,下面将配合实例一一介绍。 ast

1. LEFT OUTER JOIN:左外关联
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
LEFT OUTER JOIN departments d
ON (e.department_id = d.department_id); sql语句

等价于 co

SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id=d.department_id(+); background


结果为:全部员工及对应部门的记录,包括没有对应部门编号department_id的员工记录。 实例

2. RIGHT OUTER JOIN:右外关联

SELECT e.last_name, e.department_id, d.department_name
FROM employees e
RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id);

等价于

SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id(+)=d.department_id;

结果为:全部员工及对应部门的记录,包括没有任何员工的部门记录。

3. FULL OUTER JOIN:全外关联

SELECT e.last_name, e.department_id, d.department_name
FROM employees e
FULL OUTER JOIN departments d
ON (e.department_id = d.department_id);

结果为:全部员工及对应部门的记录,包括没有对应部门编号department_id的员工记录和没有任何员工的部门记录。说简单点就是哪边少加号放哪边。

要说区别,只能说带括号的加号只能在 oracle 中识别,标准 sql 是不能识别的。

相关文章
相关标签/搜索