Oracle中的连接查询
2011-12-21 11:19
162 查看
一、内连接和外连接
内连接用于返回满足连接条件的记录;而外连接则是内连接的扩展,它不仅会满足连接条件的记录,而且还会返回不满足连接条件的记录
(1)语法: select table1.column,table2.column from table1 [inner|left|right|full]join table2 on table1.column=table2.column;
(3)注意: 如果使用form内、外连接,则必须使用on操作符指定连接条件;如果使用(+)操作符连接,则必须使用where指定连接条件。
1、内连接
内连接查询返回满足条件的所有记录,默认情况下没有指定任何连接则为内连接
例如: select w.fullname, u.unitname from Workers w inner join units u on w.unit_id=u.unit_id;
2、左外连接
左外连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的连接操作符左边表的其他行
例如: select w.fullname, u.unitname from Workers w left join units u on w.unit_id=u.unit_id;
3、右外连接
右外连接查询不仅返回满足调价的所有记录,而且还会返回不满足连接条件的连接操作符右边表的其他行
例如: select w.fullname, u.unitname from Workers w right join units u on w.unit_id=u.unit_id;
4、全连接
全连接查询不仅返回满足调价的所有记录,而且还会返回不满足连接条件的其他行
例如: select w.fullname, u.unitname from Workers w full join units u on w.unit_id=u.unit_id;
5、(+)操作符
在oracle9i之前,当执行外连接时,都是使用连接操作符(+)来完成的,尽管可以使用操作符(+)执行外连接操作,但是oracle9i开始oracle建议使用outer join执行外连接,使用(+)操作符执行外连接
(1)语法: select w.fullname, u.unitname from Workers w, units u where w.unit_id(+) = u.unit_id;
● 当使用(+)操作符执行外连接时,应当将该操作符放在显示较少行(完全满足连接条件行)一端。
● (+)操作符只能出现在where子句中,并且不能与outer join语法同时使用。
● 当使用(+)操作符执行外连接时,如果在where语句中包含多个条件,则必须在所有的条件中都包含(+)操作符。
● (+)操作符只能适用于列,而不能适用于表达式。
● (+)操作符不能与or和in操作符一起使用。
● (+)操作符只能用于左外连接和右外连接,不能用于实现完全连接。
1)、使用(+)操作符执行左外连接
当使用左外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件的左边边的其他行。因为(+)操作符要放到行数较少的一端,所以在where子句中应当将该操作符放到右边表的一端
示例如下: select w.fullname, u.unitname from Workers w, units u where w.unit_id = u.unit_id(+);
2)、使用(+)操作符执行右外连接
当使用右外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件的右边边的其他行。因为(+)操作符要放到行数较少的一端,所以在where子句中应当将该操作符放到左边表的一端
示例如下: select w.fullname, u.unitname from Workers w, units u where w.unit_id(+)
= u.unit_id;
内连接用于返回满足连接条件的记录;而外连接则是内连接的扩展,它不仅会满足连接条件的记录,而且还会返回不满足连接条件的记录
(1)语法: select table1.column,table2.column from table1 [inner|left|right|full]join table2 on table1.column=table2.column;
select table1.column,table2.column from table1 [inner|left|right|full]join table2 on table1.column=table2.column;(2)说明: inner join表示内连接、left join表示左外连接、right join表示右外连接、full join表示全连接;on用于指定连接条件。
(3)注意: 如果使用form内、外连接,则必须使用on操作符指定连接条件;如果使用(+)操作符连接,则必须使用where指定连接条件。
1、内连接
内连接查询返回满足条件的所有记录,默认情况下没有指定任何连接则为内连接
例如: select w.fullname, u.unitname from Workers w inner join units u on w.unit_id=u.unit_id;
select t1.name,t2.name from cip_temps t1 inner join cip_tmp t2 on t1.ID=t2.id;
2、左外连接
左外连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的连接操作符左边表的其他行
例如: select w.fullname, u.unitname from Workers w left join units u on w.unit_id=u.unit_id;
select t1.name,t2.name from cip_temps t1 left join cip_tmp t2 on t1.ID=t2.id;
3、右外连接
右外连接查询不仅返回满足调价的所有记录,而且还会返回不满足连接条件的连接操作符右边表的其他行
例如: select w.fullname, u.unitname from Workers w right join units u on w.unit_id=u.unit_id;
select t1.name,t2.name from cip_temps t1 right join cip_tmp t2 on t1.ID=t2.id;
4、全连接
全连接查询不仅返回满足调价的所有记录,而且还会返回不满足连接条件的其他行
例如: select w.fullname, u.unitname from Workers w full join units u on w.unit_id=u.unit_id;
select t1.name,t2.name from cip_temps t1 full join cip_tmp t2 on t1.ID=t2.id;
5、(+)操作符
在oracle9i之前,当执行外连接时,都是使用连接操作符(+)来完成的,尽管可以使用操作符(+)执行外连接操作,但是oracle9i开始oracle建议使用outer join执行外连接,使用(+)操作符执行外连接
(1)语法: select w.fullname, u.unitname from Workers w, units u where w.unit_id(+) = u.unit_id;
select table1.column,table2.column from table1,table2 where table1.column(+)=table2.column;(2)注意:
● 当使用(+)操作符执行外连接时,应当将该操作符放在显示较少行(完全满足连接条件行)一端。
● (+)操作符只能出现在where子句中,并且不能与outer join语法同时使用。
● 当使用(+)操作符执行外连接时,如果在where语句中包含多个条件,则必须在所有的条件中都包含(+)操作符。
● (+)操作符只能适用于列,而不能适用于表达式。
● (+)操作符不能与or和in操作符一起使用。
● (+)操作符只能用于左外连接和右外连接,不能用于实现完全连接。
1)、使用(+)操作符执行左外连接
当使用左外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件的左边边的其他行。因为(+)操作符要放到行数较少的一端,所以在where子句中应当将该操作符放到右边表的一端
示例如下: select w.fullname, u.unitname from Workers w, units u where w.unit_id = u.unit_id(+);
select t1.name,t2.name from cip_temps t1,cip_tmp t2 where t1.ID=t2.id(+);
2)、使用(+)操作符执行右外连接
当使用右外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件的右边边的其他行。因为(+)操作符要放到行数较少的一端,所以在where子句中应当将该操作符放到左边表的一端
示例如下: select w.fullname, u.unitname from Workers w, units u where w.unit_id(+)
= u.unit_id;
select t1.name,t2.name from cip_temps t1,cip_tmp t2 where t1.ID(+)=t2.id;
相关文章推荐
- ORACLE查询当前连接的用户信息及操作的SQL语句
- Oracle多表连接查询区别
- Oracle已经启动,连接sqlplus后,进行查询,出现下面错误
- mybatis 连接 oracle模糊查询concat关键字
- oracle之连接查询及子查询举例
- oracle 远程连接查询的两种连接方法
- Oracle之sql标准之连接查询汇总
- oracle sql 实现三张表左连接查询
- Oracle中的联合查询-自然连接/外连接/内连接
- oracle 多表查询 左右连接
- Oracle_SQL_day03_ 多表查询之 :连接查询
- ORACLE复杂查询之连接查询
- 【读书笔记】【收获,不止Oracle】不同连接类型表下,驱动顺序对查询性能的影响
- oracle连接查询 内连接 外连接 全连接
- ORACLE 的游标、存储过程、触发器以及表的连接查询
- Oracle查询转换之连接谓词推入
- ORACLE-SQL积累(查询外检约束、记录长度、字段长度、启用禁用触发器、case用法、分组连接函数、查询被锁表)
- Oracle的表连接查询及其内部运行机制
- 如何用eclipse将数据库oracle数据相连接,实现查询数据库中的信息以及更改添加表中内容
- 查询oracle当前连接数