1. 程式人生 > >mysql之連線查詢(多表查詢)

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

 

1      連線查詢(多表查詢)

1.1交叉連線

語法:

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

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

例:/*交叉連線(表1條數*表2條數)*/

SELECT * FROM emp JOIN dept;

SELECT * FROM emp;

SELECT * FROM dept;

 

存在假資料 emp中每條記錄跟dept中的資料都匹配一遍。

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

1.2         內連線

語法:

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

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

 

On後面加連線條件

當兩個表中欄位名相同的情況下 前面加表名

 

1.3 左【外】連線

形式: 

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

說明:

1,這裡,left是關鍵字。

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

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

 

1.4右連線

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

形式: 

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

說明:

1      這裡,right是關鍵字。

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

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

 

1.5         全【外】連線

形式:

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

說明:

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

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

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

1.6 連線查詢

原始資料:

1:找出索尼4G手機所屬類別名稱:

 

2,找出所有屬於手機數碼的產品:

 

1.6  子查詢

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

1找出索尼4G手機所屬類別名稱:

 

2找出所有屬於手機數碼的產品

 

使用in子查詢

in的基本語法形式為:

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

則in子查詢就是:

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

含義:

表示該運算元(欄位值) 等於 該子查詢的其中任意一個,就算滿足條件。

找出所有屬於手機數碼或腦辦公的產品: