首先了解笛卡爾積的概念
select
emp.ename,emp.deptno,dept.deptno
from emp ,dept
;
笛卡爾積的發生條件
(1)沒有連線條件
(2)連線條件不對
執行上面的sql**就會產生 的查詢數=單獨查詢emp表的資料數*單獨查詢dept表產生的資料多表連線寫法步驟
非等值連線
查詢每個員工的姓名,工資,工資等級
select
e.ename, e.sal, s.grade
from
emp e, salgrade s
where
e.sal
between
s.losal
and
s.hisal
;
自身連線
select
worker.ename 『wname』,manager.ename 『lname』
from
emp worker, emp manager
where
worker.mgr = manager.empno
;
交叉連線
自然連線
select
empno,ename,sal,deptno,loc
from
emp
natural
join
dept
;
using字句
select
e.ename,e.ename,e.sal,deptno,d.loc
from
emp e
join
dept d
using
(deptno)
where
deptno =
20;
有定義可以知道自然連線和using子句是不能同時使用的
使用using子句建立連線時,應注意以下幾點:
on子句
on子句可以提高**的可讀性。
select
e.empno, e.ename, e.deptno, d.deptno, d.loc
from
emp e
join
dept d
on(e.deptno = d.deptno)
;
select
e.ename,d.dname,d.loc,s.grade
from
emp e
join
dept d
on e.deptno and d.deptno
join
salgrade s
on e.sal between s.losal and s.hisal
where
d.loc =
'chicago'
;
將連線條件分離出來實現解耦的目的
外部連線
select
e.ename,e.deptno,d.loc
from
emp e
left
outer
join
dept d
on(e.deptno = d.deptno)
;
select
e.ename,e.deptno,d.loc
from
emp e
right
outer
join
dept d
on(e.deptno = d.deptno)
;
MySQL資料庫 多表連線查詢
多表連線查詢 注意 使用連線技術建議將表經行重新命名!explain 檢索連線是否達標 內連線 語法1 from 表1 inner join 表2 on 主鍵字段 外來鍵字段 where 條件表示式 語法2 from 表1,表2 where 主鍵字段 外來鍵字段 and 條件表示式 三個表連線 fr...
mysql資料庫 多表查詢(表連線查詢
交叉連線的結果為笛卡爾積,所有連線方式都會先臨時生成笛卡爾積表。語法格式 select 查詢字段 from 表一 corss join 表二 nysql預設的連線方式為內連線。語法格式 select 查詢字段 from 表一 inner join 表二 on 表一.關係字段 表二.關係字段 wher...
資料庫多表連線查詢
一 多表查詢 多表查詢,又稱表聯合查詢,即一條sql語句涉及到的表有多張,資料通過特定的連線進行聯合顯示。1 笛卡爾積 在數學中,兩個集合x和y的笛卡尓積 cartesian product 又稱直積,表示為x y.假設集合a 集合b 則兩個集合的笛卡爾積為。在資料庫中,如果直接查詢倆張表,那麼其查...