网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 数据库技术 > Oracle > PL/SQL > Oracle9i表连接  

Oracle9i表连接

2005-12-19  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏

OracleOracle9i SQL 做了一些很重要的改进,包括一些令人兴奋的新特点,支持15的数量级和ISO99中的SQL标准。作为Oracle的补充,它包括以下新的TABLE JOIN的句法结构:

网管有家www.bitscn.net

 

网管论坛bbs_bitsCN_com

CROSS IN——它在两个表格中创建了一个卡迪尔列,就象是在Oracle8i中没写WHERE时那样。 网管u家u.bitscn@com

  中国网管论坛bbs.bitsCN.com

NATURAL JOIN——这是一个很有用的Oracle9i的句法,它通过从WHERE子句中移动连接标准来改善SQL的稳定性

网管bitscn_com

 

中国网管论坛bbs.bitsCN.com

USING子句——它可以通过名字来具体指定连接

网管有家bitscn.net

 

网管u家u.bitsCN.com

ON子句——这个句法允许在两个表格中为连接具体指定栏目的名头 网管朋友网www_bitscn_net

  网管有家bitscn.net

LEFT OUTER JOIN——它返回表格中左边的行和右边的数值,如果没有搭配的行的话,则返回零 中国网管联盟bitsCN.com

  网管网www_bitscn_com

RIGHT OUTER JOIN——它返回表格中右边的行和左边的数值,如果没有搭配的行的话,则返回零

网管网www_bitscn_com

 

网管朋友网www_bitscn_net

FULL OUTER JOIN——它返回的是两个表格中所有的行,用零填满每一个空格。这在Oracle8i中则没有相应的此种句法 网管u家bitscn.net

 

网管u家u.bitsCN.com

大多数改进都是为了让那些非Oracle的请求以快速的进入Oracle数据库而引进的,并且必须记住这些只是句法上的不同,ISO99标准并没有给Oracle9i SQL带来任何新的功能。

网管u家bitscn.net

 

网管u家u.bitsCN.com

The CROSS JOIN 网管联盟bitsCN@com

Oracle中,CROSS JOIN产生了一个“卡迪尔的产物(Cartesian product)”,就象是在连接两个表格时忘记加入一个WHERE子句一样

网管u家u.bitsCN.com

select last_name,dept_id

网管u家u.bitsCN.com

from emp,depts;

网管网www.bitscn.com

 

网管网www_bitscn_com

Oracle9i中,我们使用CROSS JOIN 来达到相同的结果 网管论坛bbs_bitsCN_com

select last_name.dept_id

中国网管联盟bitsCN.com

from emp 网管有家www.bitscn.net

CROSS JOIN dept;

网管朋友网www_bitscn_net

  网管有家bitscn.net

NATURAL JOIN 网管有家www.bitscn.net

  网管bitscn_com

我喜欢NATURAL JOIN的原因在于它能够通过在两个表格中配对的栏目的名头来自动的检查join。它同时还简化了Oracle9i SQL,由于where子句仅仅只能过滤谓语,当然,NATURAL JOIN要求在每一个表格中的栏目的名字相同。很有意思的是,这种特性甚至在没有主要的或是外来的关键词作为参考是也能起作用 网管u家u.bitsCN.com

 

网管u家www.bitscn.net

Oracle8i, 网管u家u.bitsCN.com

Select book_title, sum(quantity) 网管bitscn_com

From book, sales

中国网管论坛bbs.bitsCN.com

Where book.book_id = sales.book_id

网管u家u.bitsCN.com

group by book_title; 网管有家www.bitscn.net

 

网管联盟bitsCN_com

Oracle9i

网管网www_bitscn_com

Select book_title, sum(quantity) 网管朋友网www_bitscn_net

from book 网管u家u.bitsCN.com

natural join sales

中国网管联盟bitsCN.com

group by book_title; 网管有家www.bitscn.net

 

网管有家bitscn.net

USING子句 网管u家u.bitscn@com

  网管网www_bitscn_com

假如几个栏目有同样的名字,而你又不想用所有的这些栏目来连接的时候,你就可以用USING子句。在USING子句中所列的栏目的句子中不会有任何的修饰词,包括where子句也不会有

网管bitscn_com

  网管有家www.bitscn.net

Oracle8i 网管朋友网www_bitscn_net

select dept_id, city 网管联盟bitsCN_com

from departments, locations 网管u家www.bitscn.net

where departments.location_id = location.location_id;

网管有家bitscn.net

  网管有家bitscn.net

Oracle9i 中国网管联盟bitsCN.com

select department_name, city

网管有家bitscn.net

from departments

网管下载dl.bitscn.com

JOIN locations

网管网www.bitscn.com

USING (location_id);

网管联盟bitsCN_com

  网管网www.bitscn.com

ON子句

网管u家www.bitscn.net

  网管u家www.bitscn.net

ON子句被用于当在两个表格中的栏目名字不搭配时来连接表格。而连接条件就是where子句中的过滤条件

网管bitscn_com

  网管网www_bitscn_com

Oracle8i

网管联盟bitsCN_com

select department_name, city

网管联盟bitsCN_com

from department, location 网管u家u.bitscn@com

where department.location_id = location.loc_id;

网管网www.bitscn.com

 

网管u家u.bitsCN.com

Oracle9i 网管u家www.bitscn.net

select department_name, city 网管u家u.bitscn@com

from department d 网管网www_bitscn_com

JOIN location l

中国网管联盟bitsCN.com

ON (d.location_id = l.id); 网管u家www.bitscn.net

  网管有家bitscn.net

易变的连接

网管bitscn_com

  网管下载dl.bitscn.com

易变的连接就是两个以上的表格被连接所用的。ISO SQL 1999标准通常假设表格从左至右连接,连接的条件是能够为现在的连接或以前的与左边的连接相关联的栏目提供参考。

网管u家u.bitscn@com

  网管u家www.bitscn.net

Oracle8i

网管有家bitscn.net

select emp_id, city_name, dept_name 网管bitscn_com

from location l, department d, emp e 网管有家bitscn.net

where d.location_id = l.location_id

网管bitscn_com

and d.department_id = e.department_id; 网管有家www.bitscn.net

  网管u家bitscn.net

Oracle9i 中国网管论坛bbs.bitsCN.com

select emp_id, city_name, dept_name 中国网管论坛bbs.bitsCN.com

from locations l 网管朋友网www_bitscn_net

JOIN departments d ON (d.location_id = l.location_id) 网管u家u.bitscn@com

JOIN employees e ON (d.department_id = e.department_id); 网管联盟bitsCN_com

 

网管网www_bitscn_com

新的OUTER JOIN句法 网管bitscn_com

 

网管有家bitscn.net

ISO99标准把复杂的加号从Oracle outer join中拿出去,并使得outer join SQL更容易理解。 网管u家bitscn.net

 

网管联盟bitsCN_com

LEFT OUTER JOIN 中国网管联盟bitsCN.com

 

网管网www.bitscn.com

LEFT OUTER JOIN中,会返回所有左边表格中的行,甚至在被连接的表格中没有可配对的栏目的情况下也如此。在下边的例子中,返回了所有雇员的姓,甚至包括了那些没有分配到部门的雇员。

网管有家www.bitscn.net

  中国网管论坛bbs.bitsCN.com

Oracle8i 网管联盟bitsCN_com

select last_name, dept_id

网管有家www.bitscn.net

from emp e, dept d

网管网www_bitscn_com

where e.department_id = d.department_id(+);

中国网管论坛bbs.bitsCN.com

  网管u家u.bitsCN.com

Oracle9i

网管联盟bitsCN@com

select last_name, dept_id

中国网管论坛bbs.bitsCN.com

from emp

网管网www.bitscn.com

LEFT OUTER JOIN Dept

网管网www_bitscn_com

ON e.dept_id = d.dept_id; 网管论坛bbs_bitsCN_com

 

网管有家www.bitscn.net

RIGHT OUTER JOIN 网管网www.bitscn.com

  中国网管论坛bbs.bitsCN.com

RIGHT OUTER JOIN中返回的是表格中所有右边的行,甚至在被连接的表格中没有可配对的栏目的情况下也如此。在这个例子中,返回了所有部门的ID,包括那些没有一个雇员的的部门。

网管下载dl.bitscn.com

  网管朋友网www_bitscn_net

Oracle8i 网管有家www.bitscn.net

select last_name, d.dept_id 网管网www_bitscn_com

from employees e, departments d

中国网管联盟bitsCN.com

where e.department_id(+) = d.department_id; 网管u家u.bitsCN.com

  网管网www.bitscn.com

Oracle9i

网管u家www.bitscn.net

select last_name, d.dept_id

网管u家u.bitsCN.com

from employees e 网管u家www.bitscn.net

RIGHT OUTER JOIN departments d 网管u家u.bitscn@com

ON (e.department_id = d.department_id);

网管有家bitscn.net

 

网管有家bitscn.net

总结

网管u家www.bitscn.net

  中国网管联盟bitsCN.com

ISO99标准是Oracle改进SQL工具的另一个例子。NATURAL JOIN LEFT OUTER JOIN RIGHT OUTER JOIN是这些改进中最受欢迎的,它们分别简化了SQL句法以及消除了对于复杂句法(比如+)的需要。 网管朋友网www_bitscn_net

TAGs   连接   JOIN   表格   from   select   OUTER   Oracle9i   返回   没有      
 上一篇:sql 存储过程分页   下一篇:利用SQL语句完成位操作
相关文章列表
Oracle9i表连接 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.PL/SQL - 嵌套游标 cursor-PLSQL
2.用一个实例讲解Oracle数据库的PL/SQL语句
3.PL/SQL----触发器-PLSQL
4.mysql存储过程写法—动态参数运用-PLSQL
5.PL/SQL Developer导出分区索引脚本-PLSQL
6.PL/SQL collection— table() 函数-PLSQL
7.SQL Server 2005 中的架构与用户-PLSQL
8.Oracle数据库维护常用SQL语句集合(2)-P
9.Oracle数据库维护常用SQL语句集合(3)-P
10.再议SQL Server临时表和表变量-PLSQL
最新推荐文章:
1.与数据库无关的处理放到数据库以外来实现
2.Oracle 10g第2版新特性之SQL和PL/SQL
3.通过PL/SQL访问Web Services
4.菜鸟学oracle - 用PL/SQL画直方图
5.重新编译PLSQL中无效对象或指定对象
6.Oracle高级技巧
7.深入了解Oracle 10g新的多重集运算符
8.在SQL中删除重复记录(多种方法)
9.Oracle:PL/SQL中怎样使用Array
10.数据库手册:速查Oracle函数列表
网管论坛交流:
·大家来开心一下吧---看了会很开心的东西-
·中国人不可不知道的知识
·@@小鹏◎◎小鹏同志与某位女明星亲密接触
·◎◎小鹏◎◎发现不明生物,居然正在交配
·[图文]^^^版主是什么?????
·泡论坛的女人是好女人
·做个“水性杨花”的女人
·献给mm俱乐部的所有mm
·深圳一集团企业电脑基础应用培训教程
·■■■■十一遊玩照■■■■■