sql 連接查詢 子查詢 聯合查詢


連接查詢(多表查詢)
基本含義
連接就是指兩個或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 ....;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM