oracle 连接方式内连接和外连接的区别

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
Oracle+表接方式(内连接-外连接-自连接)+详解.doc6页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
文档加载中...广告还剩秒
需要金币:150 &&
Oracle 表接方式(内连接-外连接-自连接) 详解,内连接详解,oracle 内连接,oracle 内连接查询,oracle 内连接 外连接&/
a&&/th&&td&&/td&&th&&a href=&/s?wd=oracle的内连接
你可能关注的文档:
··········
Oracle 表之间的连接分为三种:
1. 内连接 自然连接
(1)左外连接
左边的表不加限制 (2)右外连接 右边的表不加限制 (3)全外连接 左右两表都不加限制 标准语法: select table1.column,table2.column from table1 [inner | left | right | full ] join table2 on table1.column1
table2.column2;
inner join 表示内连接;
left join表示左外连接;
right join表示右外连接;
full join表示完全外连接;on子句 用于指定连接条件。
如果使用from子句指定内、外连接,则必须要使用on子句指定连接条件; 如果使用(+)操作符指定外连接,则必须使用where子句指定连接条件。
Inner Join
Inner join逻辑运算符返回满足第一个(顶端)输入与第二个(底端)输入联接的每一行。这个和用select查询多表是一样的效果,所以用很少SQL
Select a.id,a.name,b.name from dave a inner join bl b on a.id b.
-- 标准写法 ID NAME NAME 1 dave dave 2 bl bl 1 bl dave 2 dave bl
Select a.id,a.name,b.name from dave a join bl b on a.id b.
-- 这里省略了inner 关键字 ID NAME NAME 1 dave dave 2 bl bl 1 bl dave 2 dave bl
Select a.id,a.name,b.name from dave a,bl b where a.id b.
-- select 多表查询 ID NAME NAME 1 dave dave 2 bl bl 1 bl dave 2 dave bl 从这三个SQL 的结果我们也可以看出,他们的作用是一样的。
1.3 自然连接 Natural join
自然连接是在两张表中寻找那些数据类型和列名都相同的字段,然后自动地将他们连接起来,并返回所有符合条件按的结果。
看一下自然连接的例子
Select id,name from dave ID NAME 1 dave 2 bl
这里我们并没有指定连接的条件,实际上oracle为我们自作主张的将,中的中的连接。也就是实际上相当于
Select dave.id,bl.name From dave join bl on dave.id
bl.id and dave.name bl. ID NAME 1 dave 2 bl
正在加载中,请稍后...内连接和外连接有什么区别?各适用于什么地方?
本回答由提问者推荐
var sogou_ad_id=731547;
var sogou_ad_height=160;
var sogou_ad_width=690;3086人阅读
oracle(3)
数据库(6)
Oracle&表之间的连接分为三种:
1.&内连接自然连接
(1))(右边的表不加限制)(左右两表都不加限制)
3.&自连接(同一张表内的连接)
一.&内连接()
Inner&join内连接的。
还有一点要说明的就是Join&默认就是。&所以我们在写内连接的时候可以省略这个关键字。&
1.2&下面举例来说明内连接:
1.2.1&先创建张测试表并插入数据:
SQL&&select&*&from&
----------&----------
SQL&&select&*&from&
----------&----------
1.2.3&用内链接进行查询:
&&&--&标准写法
&&--&这里省略了关键字
&&--&select&多表查询
&&&从这三个的结果我们也可以看出,他们的作用是一样的。
1.3&自然连接
SQL&&Select&id,name&from&dave&a&natural&join&bl&b;&&
dave表id和字段与表id和字段进行了
因此,我们也可以将自然连接理解为内连接的一种。&
有关自然连接的一些注意事项:
二.&外连接
外连接分为三种:&左外连接,右外连接,全外连接。&对应:。&通常我们省略这个关键字。&写成:。
在左外连接和右外连接时都会以一张表为基表,该表的内容会全部显示,然后加上两张表匹配的内容。&如果基表的数据在另一张表没有记录。&那么列显示为空值(NULL)。&
,也。&关于一些+)操作符只能出现在where子句中,并且不能与outer&join语法同时使用。&where子句中包含有多个条件,则必须在所有条件中都包含(+)操作符+)操作符只适用于列,而不能用在表达式上。+)操作符不能与or和in操作符一起使用。+)操作符只能用于实现左外连接和右外连接
在做实验之前,我们先将dave表和里加一些不同的数据。&以方便测试。&
SQL&&select&*&from&
2.1&左外连接()
左示例中DaveBL它的结果集是Dave表中的数据,在加上表和表匹配的数据。(Dave,而右表(BL。BL
&&&&&&&ID&NAME&&&&&&&&&&&&&&&ID&NAME
---------&----------&----------&----------
&&&&&&&&1&bl&&&&&&&&&&&&&&&&&&1&dave
&&&&&&&&1&dave&&&&&&&&&&&&&&&&1&dave
&&&&&&&&2&dave&&&&&&&&&&&&&&&&2&bl
&&&&&&&&2&bl&&&&&&&&&&&&&&&&&&2&bl
&&&&&&&&3&dba&&&&&&&&&&&&&&&&&3&big&bird
&&&&&&&&4&sf-express&&&&&&&&&&4&exc
&&&&&&&&5&dmm&&&&&&&&&&&&&&&&&&&&&&&&&&&&&--&此处表为,因为没有匹配到
&&&&&&&&8&安庆&&&&&&&&&&&&&&&&&&&&&&&&&&&&&--&此处表为,因为没有匹配到
用()来实现,&这个号可以这样来理解:&表示补充,即哪个表有加号,这个表就是匹配表。所以加号写在右表,左表就是全部显示,故是左连接。
SQL&&Select&*&from&dave&a,bl&b&where&a.id=b.id(+);&&&&--&注意:&用()&就要用关键字
&&&&&&&&ID&NAME&&&&&&&&&&&&&&&ID&NAME
----------&----------&----------&----------
&&&&&&&&&1&bl&&&&&&&&&&&&&&&&&&1&dave
&&&&&&&&&1&dave&&&&&&&&&&&&&&&&1&dave
&&&&&&&&&2&dave&&&&&&&&&&&&&&&&2&bl
&&&&&&&&&2&bl&&&&&&&&&&&&&&&&&&2&bl
&&&&&&&&&3&dba&&&&&&&&&&&&&&&&&3&big&bird
&&&&&&&&&4&sf-express&&&&&&&&&&4&exc
&&&&&&&&&5&dmm
&&&&&&&&&8&安庆
2.2&右外连接()
,是以右表(BL,&显示表的所以记录,在加上和匹配的结果。&.
&&&&--此处左表不足用填充
&&--此处左表不足用填充
用()来实现,&这个号可以这样来理解:&表示补充,即哪个表有加号,这个表就是匹配表。所以加号写在左表,右表就是全部显示,故是右连接。
SQL&&Select&*&from&dave&a,bl&b&where&a.id(+)=b.
&&&&&&&&ID&NAME&&&&&&&&&&&&&&&ID&NAME
----------&----------&----------&----------
&&&&&&&&&1&dave&&&&&&&&&&&&&&&&1&dave
&&&&&&&&&2&bl&&&&&&&&&&&&&&&&&&2&bl
&&&&&&&&&1&bl&&&&&&&&&&&&&&&&&&1&dave
&&&&&&&&&2&dave&&&&&&&&&&&&&&&&2&bl
&&&&&&&&&3&dba&&&&&&&&&&&&&&&&&3&big&bird
&&&&&&&&&4&sf-express&&&&&&&&&&4&exc
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&9&怀宁
2.3&全外连接()
&&&&&左表和右表都不做限制,所有的记录都显示,两表不足的地方用填充。&全外连接不支持()这种写法。
三.&自连接
自连接(self&join)是SQL语句中经常要用的连接方式,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。
scott的schema中有一个表是emp。mgr(经理),并且每一个经理自身也是公司的员工,自身也有自己的经理。
mgr,那么我们就很好写SQL语句。
emp所以我们可以采用:
SQL&&select&work.ename&worker,mgr.ename&&manager&from&scott.emp&work,&scott.emp&mgr
&&2&&where&work.mgr&=&mgr.empno
&&3&&order&by&work.
WORKER&&&&&MANAGER
----------&----------
ADAMS&&&&&&SCOTT
ALLEN&&&&&&BLAKE
BLAKE&&&&&&KING
CLARK&&&&&&KING
FORD&&&&&&&JONES
JAMES&&&&&&BLAKE
JONES&&&&&&KING
MARTIN&&&&&BLAKE
MILLER&&&&&CLARK
SCOTT&&&&&&JONES
SMITH&&&&&&FORD
WORKER&&&&&MANAGER
----------&----------
TURNER&&&&&BLAKE
WARD&&&&&&&BLAKE
已选择行。
各种连接的一个图示:
===========================================
内容整理自网络,如有雷同,纯属巧合,如有侵权,敬请留言告知。
====================================================================
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:82877次
积分:1443
积分:1443
排名:千里之外
原创:48篇
转载:79篇
(3)(15)(19)(5)(30)(20)(1)(13)(24)

我要回帖

更多关于 oracle如何内连接 的文章

 

随机推荐