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 則兩個集合的笛卡爾積為。在資料庫中,如果直接查詢倆張表,那麼其查詢結果就...