sql 連線查詢 子查詢 聯合查詢

2022-08-12 16:54:15 字數 1813 閱讀 5758

連線查詢(多表查詢)

基本含義

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

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

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

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

基本形式

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

交叉連線:

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

交叉連線通常也被叫做「笛卡爾積」

語法:from 表1 [cross] join 表2 ;

內連線:

語法: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這個軟體本身不支援全連線的語法。

子查詢含義:把乙個查詢的結果當作另乙個查詢的條件。

使用in子查詢

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,如果要對整個聯合結果進行排序或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 將多個結果集合並成乙個結果集,前提是列數相同,並且相應的列的型別相同。判斷...