本文的重点是“连接子句(join_clause)”,而不是表连接本身。本文内容
- 本文使用的表和其数据
- Oracle 11g R1(11.1) 连接子句(join_clause)
- 内连接(Inner Joins)
- 交叉连接(Cross Joins)
- 外连接(Outer Joins)
- 自然连接(Natural Joins)
- 参考资料
本文使用的表和其数据
Oracle 11g R1(11.1) 连接子句(join_clause)
使用适当的连接子句(join_clause)可以获得连接数据的一部分。使用
inner_cross_join_clause 语法可以指定一个内连接(inner joins)或交叉连接(cross joins);使用
outer_join_clause 语法可以指定一个外连接。当要连接更多的表时,可以使用括号来覆盖默认的优先级,如下面语法:SELECT ... FROM a JOIN (b JOIN c) ...<!--CRLF-->说明:该 SQL 会先连接 b 和 c,然后,将结果再与 a 连接。
内连接(Inner Joins)
“内连接”只返回满足连接条件的行。
INNER 关键字 显示指定一个内连接。
JOIN 关键字 显示说明将执行一个连接。使用该语法可以代替
FROM 子句连接语法,即在
FROM 子句用逗号分隔“表”的表达式,而在
WHERE 子句写连接条件。
ON 条件 使用
ON 子句指定连接条件。该连接条件独立于任何检索,或是
WHERE 子句中的过滤条件。即若要参照非同名的列进行等值连接,或想设置任意的连接条件,可以使用
ON 子句。
示例1:select emp.empno, emp.ename, dept.dname, dept.loc<!--CRLF-->from emp<!--CRLF--> inner join dept on (emp.deptno = dept.deptno)<!--CRLF--> order by emp.empno<!--CRLF-->执行结果:
说明:- EMP 表共有14个员工,其中3个员工没有部门。因此,结果只包含有所属部门的员工,没有无部门的员工。
USING (字段名) 当你要指定一个列的等值连接,且这个列是两个表共有的,那么,可以在
USING column 子句指定该列。只有两个表具有相同列时,才能使用这个子句。该子句,当内连接中的列时,不会用表名或表别名验证列名。
示例2:select emp.empno, emp.ename, dept.dname, dept.loc<!--CRLF-->from emp<!--CRLF--> inner join dept<!--CRLF--> using (deptno)<!--CRLF--> order by emp.empno<!--CRLF-->结果与示例 1 相同。
Oracle 11g Release 1 (11.1) Data Pump 导入模式Oracle 10g 及之后导出/导入(Datapump Export/Import)工具相关资讯 Oracle高级培训
- delete表的数据后恢复 (08/30/2012 08:59:58)
- 使用ASH信息,发现高CPUsession (08/14/2012 07:21:32)
- 如何阅读Oracle Errorstack Output (08/14/2012 07:15:47)
| - Oracle Apps Patching:adpatch( (08/16/2012 15:41:37)
- 话说V$SQL_MONITOR (08/14/2012 07:19:54)
- Oracle Apps DBA工具:ADADMIN使用 (08/14/2012 07:00:09)
|
本文评论 查看全部评论 (0)