oracle左右连接的另外表示方法-括号加号
2012-03-07 14:11
197 查看
Oracle中可以使用“(+) ”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN
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);
等价于
SELECT e.last_name, e.department_id, d.department_name
FROM employees e, departments d
WHERE e.department_id=d.department_id(+)
结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录。
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
结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。
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的员工记录和没有任何员工的部门记录。
================================================================================================数据表的连接有:
1、内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现
2、外连接: 包括
(1)左外连接(左边的表不加限制)
(2)右外连接(右边的表不加限制)
(3)全外连接(左右两表都不加限制)
3、自连接(连接发生在一张基表内)
select a.studentno, a.studentname, b.classname
from students a, classes b
where a.classid(+) = b.classid;
STUDENTNO STUDENTNAM CLASSNAME
---------- ---------- ------------------------------
1 周虎 一年级一班
2 周林 一年级二班
一年级三班
以上语句是右连接:
即"(+)"所在位置的另一侧为连接的方向,右连接说明等号右侧的所有
记录均会被显示,无论其在左侧是否得到匹配。也就是说上例中,无
论会不会出现某个班级没有一个学生的情况,这个班级的名字都会在
查询结构中出现。
反之:
select a.studentno, a.studentname, b.classname
from students a, classes b
where a.classid = b.classid(+);
STUDENTNO STUDENTNAM CLASSNAME
---------- ---------- ------------------------------
1 周虎 一年级一班
2 周林 一年级二班
3 钟林达
则是左连接,无论这个学生有没有一个能在一个班级中得到匹配的部门号,
这个学生的记录都会被显示。
select a.studentno, a.studentname, b.classname
from students a, classes b
where a.classid = b.classid;
这个则是通常用到的内连接,显示两表都符合条件的记录
总之,
左连接显示左边全部的和右边与左边相同的
右连接显示右边全部的和左边与右边相同的
内连接是只显示满足条件的!
相关文章推荐
- Oracle连接说明-及另外表示方法-括号加号(+)
- oracle左右连接的另一种显示方法—括号加号
- oracle左右连接的另外表示方法
- oracle连接加号(+)的使用方法
- Asp.net连接Oracle 9i失败解决方法
- oracle监听及windows客户端连接 配置方法
- C#连接Oracle中文乱码问题解决方法
- 32位PLSQL developer 连接不上64位Oracle 的解决方法
- PLSQL developer 连接不上64位Oracle 的解决方法
- 查询所有连接到ORACLE服务器的客户端IP地址的方法
- 用JDBC方法连接Oracle和Mysql数据库
- oracle ----左右连接
- Java JDBC Thin Driver 连接 Oracle 三种方法说明
- 4000 jdbc连接Oracle使用SID与SERVICE NAME的方法
- Oracle多行记录合并 连接/聚合字符串的几种方法
- ORACLE数据库SQL优化--->Oracle表连接方法
- oracle中监听程序当前无法识别连接描述符中请求服务 的解决方法
- ORACLE 8i,9i 表连接方法全介绍
- PLSQL无法连接64位Oracle 解决方法
- LInux Oracle本地可以连接远程无法访问解决方法-启动实例-开启监听