!!!查詢時要注意笛卡爾積:新增合適的條件
!!!查詢時要注意資料重複:用distinct
!!!查詢時要注意別名的使用:給列設定別名要用as,給表設定別名不需用as。給表設定別名後,查詢語句中只能使用別名不能使用原表名
各類連線查詢方式:
select table1.
column
, table2.
column
from table1
[,table2 where table1.column_name = table2.column_name]
--簡單的自連線
[,table2 where table1.column_name between table2.low and table2.heigh]
--連線查詢也可實現非等值查詢
[cross
join table2]
|--可得到兩表的笛卡爾積
[natural
join table2]
|--自然連線,自動以兩表中的同名列為條件建立等值連線
[join table2 using
(column_name)]|
--以特定列為條件建立等值連線的自然連線,列名前不能寫表名字首
[inner
join table2 on
(table1.column_name = table2.column_name)]|
--內連線,常用
[left
|right
|full
outer
join table2 on
(table1.column_name = table2.column_name)
]--左/右/全外連線
舉例:在dyaq表中查詢qlrmc='小明『的所有資料。但dyaq表中無qlrmc欄位,有bdcdyh欄位。qlr表中有qlrmc欄位和bdcdyh欄位。
select
distinct s.
*from dyaq s inner
join
(select
*from qlr where qlrmc='小明』) t on s.bdcdyh=t.bdcdyh
參考: 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 則兩個集合的笛卡爾積為。在資料庫中,如果直接查詢倆張表,那麼其查詢結果就...