ORACLE 多表连接与子查询
Oracle表连接
SQL/Oracle使用表连接从多个表中查询数据
语法格式:
select 字段列表 from table1,table2 where table1.column1 = table2.column2;
说明:
在where子句中指定连接条件
当被连接的多个表中存在同名字段时,必须在该字段前加上"表名"作为前缀.
连接的类型
Oracle8i之前的表连接:
等值连接(Equijoin)
非等值连接(Non-Equijoin)
外连接(Outer join):-->左外连接-->右外连接
自连接(Self join)
Oracle9之后新引入的连接形式(支持SQL99规范)
交叉连接(Cross join)
自然连接(Natural join)
使用Using子句建立连接
使用on子句建立连接
外连接(Outer join):-->左外连接-->右外连接-->全外连接
等值连接(Equijoin)
select empno,ename,sal,emp.deptno,dname from emp,dept where emp.deptno = dept.deptno;
多表连接中:
- 可使用AND操作符增加查询条件
- 使用表别名可以简化查询
- 使用表名(表别名)前缀可提高查询效率
- 为了连接n个表,至少需要n-1个连接条件
非等值连接(Non-Equijoin)
外连接(Outer join)
使用外连接可以看到参与连接的某一方不满足连接条件的记录
外连接运算符为(+)
传统的外连接分为左外连接和右外连接两种
语法格式:
select 字段列表 from table1,table2 where table1.column1( + ) = table2.column2;
select 字段列表 from table1,table2 where table1.column1 = table2.column2( + );