標籤:ural 沒有 操作符 使用 指定 注意事項 限制 類型 csharp
Oracle 表之間的串連分為三種:1. 內串連(自然串連)2. 外串連(1)左外串連 (左邊的表不加限制) (2)右外串連(右邊的表不加限制) (3)全外串連(左右兩表都不加限制)3. 自串連(同一張表內的串連)SQL的標準文法:select table1.column,table2.columnfrom 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/Join) 1.1 Inner Join Inner join邏輯運算子返回滿足第一個(頂端)輸入與第二個(底端)輸入聯結的每一行。這個和用select查詢多表是一樣的效果,所以內串連用的很少。還有一點要說明的就是Join 預設就是inner join。 所以我們在寫內串連的時候可以省略inner 這個關鍵字。 1.2 下面舉例來說明內串連:SQL> Select a.id,a.name,b.name from dave a inner join bl b on a.id=b.id; -- 標準寫法SQL> Select a.id,a.name,b.name from dave a join bl b on a.id=b.id; -- 這裡省略了inner 關鍵字SQL> Select a.id,a.name,b.name from dave a,bl b where a.id=b.id; -- select 多表查詢從這三個SQL 的結果我們也可以看出,他們的作用是一樣的。1.3 自然串連(Natural join)自然串連是在兩張表中尋找那些資料類型和列名都相同的欄位,然後自動地將他們串連起來,並返回所有符合條件按的結果。SQL> Select id,name from dave a natural join bl b; 這裡我們並沒有指定串連的條件,實際上oracle為我們自作主張的將,dave表中的id和name欄位與bl表中的id和name欄位進行了串連。也就是實際上相當於SQL> Select dave.id,bl.name From dave join bl on dave.id = bl.id and dave.name=bl.name;因此,我們也可以將自然串連理解為內串連的一種。 有關自然串連的一些注意事項:(1).如果做自然串連的兩個表的有多個欄位都滿足有相同名稱個類型,那麼他們會被作為自然串連的條件。(2).如果自然串連的兩個表僅是欄位名稱相同,但資料類型不同,那麼將會返回一個錯誤。二. 自串連自串連(self join)是SQL語句中經常要用的串連方式,使用自串連可以將自身表的一個鏡像當作另一個表來對待,從而能夠得到一些特殊的資料。樣本:在oracle的scott的schema中有一個表是emp。在emp中的每一個員工都有自己的mgr(經理),並且每一個經理自身也是公司的員工,自身也有自己的經理。下面我們需要將每一個員工自己的名字和經理的名字都找出來。這時候我們該怎麼做呢?如果我們有兩張這樣的表分別教worker和mgr,那麼我們就很好寫SQL語句。Select worker.name,Mgr.nameFrom worker,mgrWhere worker.id = mgr.id; 但現在我們只有一張emp表。所以我們可以採用自串連。自串連的本意就是將一張表看成多張表來做串連。我們可以這樣來寫SQL語句:select work.ename worker,mgr.ename manager from scott.emp work, scott.emp mgr where work.mgr = mgr.empno order by work.ename;
Oracle 表串連方式(1)---