Oracle資料關聯查詢

2021-04-15 12:09:22 字數 2366 閱讀 8411

關聯在oracle資料查詢時會經常用到,靈活的應用關聯可以解決很多實際應用的問題.下面給出一些示例:

建表

create table ab

(

ab_id number(5),

ab_name varchar2(30)

);

create table bb

(

bb_id number(5),

bb_name varchar2(30)

);

插入資料

insert into ab(ab_id,ab_name) values(1,'1ab_name');

insert into ab(ab_id,ab_name) values(2,'2ab_name');

insert into ab(ab_id,ab_name) values(3,'3ab_name');

insert into bb(bb_id,bb_name) values(1,'1bb_name');

insert into bb(bb_id,bb_name) values(2,'2bb_name');

insert into bb(bb_id,bb_name) values(4,'4bb_name');

insert into bb(bb_id,bb_name) values(6,'6bb_name');

等值關聯(全關聯)

select a.ab_id,a.ab_name,b.bb_name from ab a,

bb b

where a.ab_id=b.bb_id;

返回結果

ab_id ab_name bb_name

1 1ab_name 1bb_name

2 2ab_name 2bb_name

返回兩個表中所有能匹配的記錄,不能匹配的記錄不返回。

左關聯

select ab_id,ab_name, bb_name 

from ab a left join bb b

on a.ab_id=b.bb_id;

select ab_id,ab_name, bb_name

from ab a , bb b

where a.ab_id=b.bb_id(+);

返回結果

ab_id ab_name bb_name

1 1ab_name 1bb_name

2 2ab_name 2bb_name

3 3ab_name

返回左邊表的左右記錄,在右邊表中沒有對應記錄的右表字段顯示為空。

右關聯

select ab_id,ab_name, bb_name 

from ab a right join bb b

on a.ab_id=b.bb_id;

select ab_id,ab_name, bb_name

from ab a , bb b

where a.ab_id(+)=b.bb_id;

返回結果:

ab_id ab_name bb_name

1 1ab_name 1bb_name

2 2ab_name 2bb_name

4bb_name

6bb_name

返回右邊表中所有的記錄,在右邊表不能匹配的記錄行上,左邊表對應的字段顯示為空。

完全外關聯

select ab_id,ab_name, bb_name 

from ab a full join bb b

on a.ab_id=b.bb_id;

返回結果

ab_id ab_name bb_name

1 1ab_name 1bb_name

2 2ab_name 2bb_name

3 3ab_name

6bb_name

4bb_name

返回兩個表所有的結果,如果在關聯條件上沒有對應的記錄,那麼將在該列上顯示為空。

全關聯返回的結果集範圍最小。完全外關聯返回的結果範圍最大,是否左關聯和右關聯並集;全關聯是左關聯和右關聯的交集。

Oracle資料關聯查詢

關聯在oracle資料查詢時會經常用到,靈活的應用關聯可以解決很多實際應用的問題.下面給出一些示例 建表 create table ab ab id number 5 ab name varchar2 30 create table bb bb id number 5 bb name varchar...

Oracle資料關聯查詢

關聯在oracle資料查詢時會經常用到,靈活的應用關聯可以解決很多實際應用的問題.下面給出一些示例 建表 create table ab ab id number 5 ab name varchar2 30 create table bb bb id number 5 bb name varchar...

ORACLE關聯查詢

關聯查詢 多張表,而表與表之間是有聯絡的 是通過欄位中的資料的內在聯絡來發生 而不是靠相同的欄位名來聯絡的或者是否有主外來鍵的聯絡是沒有關係的 select dname,ename from emp,dept 笛卡爾積 無意義的 當2個表作關聯查詢的時候一定要寫關聯的條件 n個表 關聯條件一定有n ...