600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > oracle数据库多表查询连接

oracle数据库多表查询连接

时间:2022-12-23 00:05:55

相关推荐

oracle数据库多表查询连接

多表查询连接

一、 多表查询外连接的方式:

(+) 号 外连接

Inner join 内连接

Left outer join --outer 可以省略 外连接

Right outer join

Full outer join

用(+)的语法简洁,容易读懂,但只是ORACLE支持,LEFT JOIN是通用的,其它没有差别

二、 连接的作用:

实例:

create table out_join1(

id_1 varchar2(20),

name_1 varchar2(25)

)

create table out_join2(

id_2 varchar2(20),

name_2 varchar2(25)

)

insert into out_join1 values(1,daniel);

insert into out_join1 values(3,justin);

insert into out_join1 values(5,william);

insert into out_join1 values(6,demon);

insert into out_join1 values(7,david);

insert into out_join2 values(1,c_daniel);

insert into out_join2 values(2,irs);

insert into out_join2 values(3,c_justin);

insert into out_join2 values(4,linda);

insert into out_join2 values(5,c_william);

l 简单的等值连接 称为内连接 取两个表相同的记录

select id_1,id_2 from out_join1 ,

out_join2 where id_1=id_2

select id_1,id_2 from out_join1

inneer join out_join2 on id_1=id_2

结果集为:1,3,5

含义:取id_1=id_2的所有值

l 左连接:使用左连接 和 left join 结果集是相同的

select id_1,id_2, from out_join1 ,

out_join2 where id_1=id_2(+)

select id_1,id_2, from out_join1 left join

out_join2 on id_1=id_2

结果都为

含义:右条件所在的表必须严格进行相等连接条件的匹配,而左条件所在的表除了匹配相等连接条件外,还可以显示无法匹配连接条件的数据!

也称为左外连接。

l 右连接:使用左连接 和 right join 结果集是相同的

select id_1,id_2, from out_join1 ,

out_join2 where id_1(+)=id_2

select id_1,id_2 from out_join1 right join

out_join2 on id_1=id_2

结果集为:

含义:左条件所在的表必须严格进行相等连接条件的匹配,而右条件所在的表除了匹配相等连接条件外,还可以显示无法匹配连接条件的数据!

也称为右外连接.

l FULL OUTER JOIN:全外关联

select id_1,id_2,name_1,name_2 from out_join1 full join

out_join2 on id_1=id_2

结果集为:

含义: 取 两个表的所有记录

三、 外连接的注意事项:

1)你不可以在查询块中使用(+) 当它同时包含 join的from语句中

2)(+)只是在where语句中,并且只能对应一个表或视图的一行字段

3)如果A和B做联接时有多个条件,那么(+)必须完善所有的匹配条件,

如果没有 ,oracle不会警告你~只是结果自然不同的

4)不可以在作出一个表外查询 另张表内查询的(+)联接操作~~

5)不可以用(+)外联接到自己 当然Self Join是可以的

6)含(+)的Where后的注意含(+)的Where后的注意OR不可用

IN不可用 子查询不可用

7) (+)是单向的 a(+)=b(+) 是错误的 可以使用 full join

总结

现在的Outer Join方法是Oracle9i时开始引用的 ANSI标准的联接语法,现在的则比较直观 简单

通过上边Full Join的实现方式 不难看到ANSI的联接语法要比用含Union的(+)的执行效率更高

如果是 三个表关联,必须有两个关联条件 n 表关联必须有n-1个条件

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。