MySQL 連線查詢(多表查詢)

2022-08-13 21:09:09 字數 1880 閱讀 9814

mysql-連線查詢(多表查詢)

連線就是指兩個或2個以上的表(資料來源)「連線起來成為乙個資料來源」。

實際上,兩個表的完全的連線是這樣的乙個過程:

左邊的表的每一行,跟右邊的表的每一行,兩兩互相「橫向對接」後所得到的所有資料行的結果。

注意:連線之後,並非形成了乙個新的資料表,而只是一種「記憶體形態」。

from 表1  [連線方式]  join 表2  [on 連線條件];

連線的結果可以當作乙個「表」來使用。常用有以下幾種連線方式:

實際上,交叉連線是將兩個表不設定任何條件的連線結果。

交叉連線通常也被叫做「笛卡爾積」——數學上可能比較多。

語法:from  表1  [cross]  join  表2  ;     //可見交叉連線只是沒有on條件而已。

cross這個詞也可以省略,還可以使用inner這個詞代替

語法:from  表1  [inner]  join  表2  on  表1.欄位1=表2.欄位2;

含義:找出(過濾)在交叉連線的結果表中的表1的字段1的值等於表2的字段2的值的那些行。

形式:   

from  表1  left  [outer]  join   表2   on  連線條件。

說明:1,這裡,left是關鍵字。

2,連線條件跟內連線一樣。

3,含義是:內連線的結果基礎上,加上左邊表中所有不符合連線條件的資料,相應放右邊表的字段的位置就自動補為「null」值。

右連線跟左連線恰恰相反:

形式:   

from  表1  right  [outer]  join   表2   on  連線條件。

說明:1,這裡,right是關鍵字。

2,連線條件跟內連線一樣。

3,含義是:在內連線的結果基礎上,加上右邊表中所有不符合連線條件的資料,相應本應放左邊表的字段的位置就自動補為「null」值。

形式:from  表1  full  [outer]  join  表2  on  連線條件;

說明:1,含義:其實是左右連線的「並集」(消除重複項),即內連線的結果,加上左表中不滿足條件的所有行(右邊對應補null),再加上,右表中不滿足條件的所有行(左邊對應補null)。

2,mysql中其實不認識全[外]連線語法,即mysql這個軟體本身不支援全連線的語法。

3,此概念在其他資料庫有的存在,了解就可以。

子查詢就是把乙個查詢的結果當作另乙個查詢的條件。

in的基本語法形式為:

where  運算元  in (值1,值2, ....)

則in子查詢就是:

where  運算元  in ( 列子查詢 );

含義:表示該運算元(字段值) 等於 該子查詢的其中任意乙個只,就算滿足條件。

聯合查詢的關鍵字是: union

聯合查詢就是將兩個select語句的查詢結果「層疊」到一起成為乙個「大結果」。

兩個查詢結果的能夠進行「聯合」的先覺條件是:結果字段數相等。

select 語句1

union  [all | distinct]

select 語句2;

說明:1,兩個select語句的輸出段(結果字段)一樣數目一樣,應用中通常型別一樣才有意義。

2,結果集中的字段以第乙個select語句的字段為準。

3,第乙個select語句的字段可以做別名,但如果做別名,則後續的where,group,order等子句應該用該別名。

4,聯合查詢預設是會消除重複項的(distinct),要想不消除,則必須明確些「all」。

5,如果要對整個聯合結果進行排序或limit,則應該對各自的select語句加括號:

(select 語句1)

union

(select 語句2)

order  by .....  limit ....;

mysql多表連線查詢

查詢姓名 部門名 地點 select emp.ename dept.dname,dept.loc from emp,dept where emp.deptno emp.deptno 簡化select ename dname,loc,emp.deptno from emp,dept where emp...

多表查詢(連線查詢)

多表查詢 資料 是多個表,這時注意一定要書寫連線條件。當n個表連線,至少需要n 1個連線條件。注意 1 如何判斷兩個表之間有公共列?型別一致 寬度一致。列名不能作為判斷標準,列名不同也能是公共列 如 emp的empno和emp的mgr 2 如何避免二義性問題?給每個屬性加歸屬。3 注意使用表別名。表...

07 mysql 多表查詢 連線查詢

每個資料庫中可以存放多張表,真正的應用中經常需要從多個資料表中讀取資料 笛卡爾乘積 多表進行連線查詢時沒有任何條件,最終的結果是多表結果數量乘積的現象被稱為笛卡爾積 例如 select e.employeename,d.departmentname from department as d,empl...