mysql連線查詢例項 例項講解MySQL連線查詢

2021-10-19 19:50:11 字數 2888 閱讀 7398

mysql連線查詢相信大家都有所了解,連線查詢是在資料庫查詢操作的時候肯定要用到的,下面就為您介紹mysql連線查詢的用法,供您參考學習。

首先我們做兩張表:員工資訊表和部門資訊表,在此,表的建立只為講述連線的概念,所以字段非常的簡單

employeetb(員工資訊表):

employeeid employeename deptid

0001 張三 01

0002 李四 01

0003 王五 02

0004 趙六 02

0005 鄭七 null

depttb(部門資訊表)

deptid deptname

01 技術部

02 市場部

03 工程部

我們現在需要進行連線查詢,連線兩張表檢索資料。分別檢索員工資訊表的員工編號、員工姓名和部門資訊表中的部門名稱。

顯然,兩個表的連線條件是 員工表的部門編號=部門表的部門編號

注意:鄭七不屬於任何部門(新來的員工,還沒有分配到任何的部門),而工程部不存在任何的員工(比如是乙個新成立的部門,還沒有員工)

mysql連線查詢:

1、內連線查詢

我們可以有兩種方式,這兩種是等效的

一種是:select e.employeeid,e.employeename,d.deptname from

employeetb as e,depttb as d where

e.deptid=d.deptid

另外乙個是:select e.employeeid,e.employeename,d.deptname from

employeetb as e inner join depttb as d on

e.deptid=d.deptid

檢索的結果都是:

employeeid employeename deptname

0001 張三 技術部

0002 李四 技術部

0003 王五 市場部

0004 趙六 市場部

而「鄭七」和「工程部」的資訊是不會檢索出來。因為採用內連線計算的時候必須要保證連線的條件e.deptid=d.deptid匹配,結果才會被檢索出來。當我們連線兩張檢索資料的時候,檢索的方式是首先逐行掃瞄「員工資訊表」中的記錄,然後根據連線條件來決定此記錄是否被檢索。比如對於張三,這條記錄的deptid是01(部門編號),它在部門表中能找到和它匹配的編號01,而編號01的部門名稱(deptname)是「技術部」所以張三這條記錄會被檢索,最終的結果肯定是:

0001 張三 技術部

同樣,李

四、王五、趙六也能。但是鄭七的部門編號是null,它在部門資訊表中找不到匹配的項(因為部門資訊表中不存在部門編號為null的部門),所以鄭七不會被檢索。

同理,沒有任何人員的部門編號為03,所以工程部的記錄也不會被檢索

2、左外聯結

但是有些情況下,我們需要知道所有員工的資訊,即使他不屬於任何部門。這樣我們就可以採用外連線,在這裡為左外連線,也就是連線中的左表的表中的記錄,無論能不能在右表中找到匹配的項,都要檢索,如果沒有匹配的專案,那麼右表中的字段值為null(空),在這裡就代表,此員工不屬於任何部門。

檢索語句為:

select e.employeeid,e.employeename,d.deptname from employeetb

as e left outer join depttb as d on

e.deptid=d.deptid

檢索的結果都是:

employeeid employeename deptname

0001 張三 技術部

0002 李四 技術部

0003 王五 市場部

0004 趙六 市場部

0005 鄭七 null

但是在這裡,工程部同樣不會被檢索,因為,deptname是在連線的右邊的表中,「工程部」在左表中不存在任何的記錄,所以不會被檢索。這裡關注的是「連線中的左邊的表」

3、右外連線

有時,我們需要知道,全部部門的資訊,即使它沒有任何的員工。在我們的查詢中部門表在連線的右邊,如果我們想知道右邊表中的所有記錄資訊,那麼就可以採用右外連線,如果此記錄在左邊的表中找不到匹配項,則相應字段(employeeid,employeename)為null

檢索語句為:

select e.employeeid,e.employeename,d.deptname from employeetb

as e right outer join depttb as d on

e.deptid=d.deptid

檢索的結果都是:

employeeid employeename deptname

0001 張三 技術部

0002 李四 技術部

0003 王五 市場部

0004 趙六 市場部

null null 工程部

但在這裡,鄭七是不會被檢索了,因為它在右表中找不到匹配項,這裡關注的是「連線中的右邊的表」

4、完全外連線

如果我們想知道所有的記錄呢?無論員工有沒有部門,部門有沒有員工,我們都需要檢索。這裡就可以使用完全外連線。關注連線中的兩部分。如果沒有部門,部門為空,沒有員工,員工資訊為空。

檢索語句為:

select e.employeeid,e.employeename,d.deptname from employeetb

as e full outer join depttb as d on

e.deptid=d.deptid

檢索的結果都是:

employeeid employeename deptname

0001 張三 技術部

0002 李四 技術部

0003 王五 市場部

0004 趙六 市場部

0005 鄭七 null

null null 工程部

mysql連線查詢例項 MySQL連線查詢例項詳解

建立表suppliers create table suppliers s id int not null auto increment,s name char 50 not null,s city char 50 null,s zip char 10 null,s call char 50 not...

mysql連線查詢例項 MySQL連線查詢例項詳解

建立表suppliers create table suppliers s id int not null auto increment,s name char 50 not null,s city char 50 null,s zip char 10 null,s call char 50 not...

MySQL連線查詢例項詳解

建立表suppliers create table suppliers s id int not null auto increment,s name char 50 not null,s city char 50 null,s zip char 10 null,s call char 50 not...