多表連線查詢

2021-10-16 08:24:55 字數 2668 閱讀 9223

一、多表查詢的基礎語法

select table1.

column

, table2.

column

from table1, table2

where table1.

column

= table2.

column

;

二、表與表之間的連線

在oracle中主要有如下3種型別的連線:

1、內連線,這種連線但會即滿足a表又滿足b表的行,只有(join)的條件滿足才返回,否則不會返回任何資料。

2、外連線,外連線是內連線的擴充套件,外連線返回符合條件的行,同時可以根據指定的條件返回不滿足連線條件的左邊錶行或者右邊的錶行。外連線又分為左外連線和右外連線。

3、自連線,是指乙個表連線到自身,比如emp表中每個員工屬於乙個經理,經理的員工編號也存在於emp表中,因此可以說是mgr和emp是自連線關係

三、內連線

內連線又稱為等值連線或者簡單連線,它用來連線來個或多個表,一般使用乙個表的主鍵等於另乙個表外來鍵(也有可能是主鍵,倆個表主鍵一致)。

select table1.

column

, table2.

column

from table1, table2

where table1.

column

= table2.

column

;

四、外連線

--右外連線

select table1.

column

, table2.

column

from table1, table2

where table1.

column(+

)= table2.

column

;--左外連線

select table1.

column

, table2.

column

from table1, table2

where table1.

column

= table2.

column(+

);

(+)外連線語法是oracle特有的連線格式。放在哪個表後面講返回哪個表的所有資料。需要注意一下:

1、不能使用outer join的ansi連線語法使用(+)建立連線語法。

2、(+)僅能出現在where子句中,並且只能用於乙個表或者檢視的一列,因此如果a表和b需要使用多個列作為連線條件時,,必須要在所有的這些條件上新增(+)操作符,如果不指定,oracle是做是乙個內連線查詢,並且沒有任何的警告和錯誤提示表示這是乙個外連線錯誤。

3、(+)操作符僅能作用於乙個列,不能用於乙個表示式。

包含(+)操作符的where條件中不能包含其他使用or邏輯操作符的條件。

4、where條件不能使用in 比較條件比較乙個別標記了(+)的列。

ansi的外連線語法如下

select table1.

column

, table2.

column

from table1 --from子句僅包含乙個表

[left

|right

|full

outer

join table2 --使用連線子句連線到另乙個表

on( table1.column_name = table2.column_name )];

--在on子句中指定查詢條件

left 左連線

right 右連線

full outer 全連線,這種連線實際上包含了左右倆邊的資料,類似於講左右連線的資料進行了union合併。

五、自引用連線

六、交叉連線

交叉連線在ansi sql 中又稱為cross join,它會返回來個表上的所有行的笛卡爾乘積,也就是乙個表的資料行與另乙個表資料行相乘的結果。

語法:

select a.column_name 

from (select a.column_name, b.column_name

from

table a

cross

join

table b)

;

七、自然連線

自然連線指可以讓連線完全自動基於有匹配資料型別和名字的表列進行自動連線,這種連線成為自然連線,使用natural join關鍵字。

語法:

select a.column1, a.column2

from

table a natural

join talbe b

where 條件;

在倆個表中具有相同名字的列不能再任何地方用表名或者別名字首進行限制,否則oracle會丟擲ora-25154異常。

多表查詢(連線查詢)

多表查詢 資料 是多個表,這時注意一定要書寫連線條件。當n個表連線,至少需要n 1個連線條件。注意 1 如何判斷兩個表之間有公共列?型別一致 寬度一致。列名不能作為判斷標準,列名不同也能是公共列 如 emp的empno和emp的mgr 2 如何避免二義性問題?給每個屬性加歸屬。3 注意使用表別名。表...

多表連線查詢

1 內連線 inner join 只返回兩個表中所有滿足連線條件的行 2 外連線outer join 除了返回兩個表中所有滿足連線條件的行之外,還返回 某個表中不滿足連線條件的行 3 交叉連線 產生笛卡爾積的連線 如果連線條件使用等號 就可以叫做相等連線 1 使用natural join關鍵字進行內...

多表連線查詢

1.如果乙個查詢需要多個表進行操作,就成為連線查詢。2.連線查詢實際上是通過各個表之間共同列的關聯性來查詢資料的,資料表之間的聯絡是通過表的字段值來體現的。查詢 劉偉 老師所教授的課程,要求列出教師號,教師姓名和課程號 1.方法一 select t.no,tn,cno from t,tc where...