Mysql連線查詢 子查詢 聯合查詢 整理

2022-08-30 05:45:09 字數 1821 閱讀 2147

連線查詢

連線語法的基本形式

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

交叉連線

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

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

內連線:

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

形式:    

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

左[外]連線:

形式:    

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 ....;

連線查詢,子查詢,聯合查詢

交叉連線 實際上,交叉連線是將兩個表不設定任何條件的連線結果。交叉連線通常也被叫做 笛卡爾積 數學上可能比較多。語法 from 表1 cross join 表2 可見交叉連線只是沒有on條件而已。cross這個詞也可以省略,還可以使用inner這個詞代替 例子select from product ...

連線查詢,子查詢,聯合查詢

一,連線查詢 1.交叉連線查詢 這種查詢方式基本不會使用,原因就是這種查詢方式得到的是兩個表的乘積 笛卡兒集 語法就是select from a,b 2.內連線查詢,可以有效的去除笛卡爾集現象 內連線查詢分為兩類 隱式內連線 select from a,b where 條件隱式連線使用別名 sele...

子查詢 聯合查詢和連線查詢

查詢中巢狀查詢。如 select from select cname,cid from tblclass union select dname,did from department as t1 order by cname 將多個結果集合並成乙個結果集,前提是列數相同,並且相應的列的型別相同。判斷...