Mysql資料庫多表連線查詢完整版

2021-09-14 04:19:07 字數 2123 閱讀 3125

首先了解笛卡爾積的概念

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