Oracle 多表查詢

2021-09-22 08:57:43 字數 1282 閱讀 1880

oracle - 多表查詢

一、笛卡爾集

笛卡爾集是集合的一種,假設a和b都是集合,a和b的笛卡爾積用a x b來表示,是所有有序偶(a,b)

的集合,其中a屬於a,b屬於b。

1、笛卡爾集的產生條件:

> 省略連線條件

> 連線條件無效

> 所有表中的所以行互相連線

2、避免笛卡爾集的方法:在 where 中加入有效的連線條件

二、內連線和外連線

> 內連線:合併具有同一列的兩個以上的表的行,結果集中不包含乙個表與另乙個表不匹配的行

> 外連線:兩個表在連線過程中除了返回滿足連線條件的行以外還返回左(或右)表中不滿足條件的行,

這種連線稱為左(或右)外連線。沒有匹配的行時,結果表中相應的列為null,外連線的where

子句條件類似於內部連線,但連線條件中沒有匹配行的表的列後面要加外連線運算子,即

用圓括號括起來的加號(+)

1、外連線語法:使用外連線可以查詢不滿足連線條件的資料,外連線的符號是:加號(+)

select table1.name, table2.name

from table1, table2

where table1.id(+) = table2.id;                 // 右外連線

select table1.name, table2.name

from table1, table2

where table1.id = table2.id(+);                 // 左外連線

2、自連線:

select a.name, b.name

from table a, table b

where a.id = b.id;                 // 右外連線

3、等值連線:使用連線在多個表中查詢資料

select table1.name, table2.name

from table1, table2

where table1.id = table2.id;

4、叉集:使用 cross join 子句使連線的表產生叉集

select id,name

from tablename

cross join tablename2;

5、表的別名:使用別名可以在多表查詢時,簡化書寫

select a.name, b.name

from table1 a, table2 b

where a.id = b.id;

Oracle 多表查詢

sql 外連線 sql 按部門統計員工人數 部門號 部門名稱 人數 sql select d.deptno,d.dname,count e.empno 2 from dept d,emp e 3 where d.deptno e.deptno 4 group by d.deptno,d.dname ...

Oracle 多表查詢

等值和不等值連線查詢 為了避免笛卡爾集,可以在 where 加入有效的連線條件。oracle 連線多表查詢 在 where 子句中寫入連線條件。在表中有相同列時,在列名之前加上表名字首 select table1.column,table2.column from table1,table2 whe...

oracle 多表查詢

多表查詢 多表查詢,又稱表聯合查詢,即一條sql語句涉及到的表有多張,資料通過特定的連線進行聯合顯示.笛卡爾積 在數學中,兩個集合x和y的笛卡尓積 cartesian product 又稱直積,表示為x y.假設集合a 集合b 則兩個集合的笛卡爾積為。在資料庫中,如果直接查詢倆張表,那麼其查詢結果就...