SQL Server 數據庫的連接查詢

今天學習了SQL Server 的連接查詢,來記錄一下。

什麼是連接查詢呢?

就是同時查詢多張表,有內連接查詢,外連接查詢,交叉查詢。而外連接查詢又分左外連接查詢、右外連接查詢和全外連接查詢,但是連接查詢也可以查詢一張表叫自連接查詢。

INNER JOIN:表示內連接,INNER可以省略只寫JOIN

ON:給出連接的條件

JOIN ... ON ...)等同於 (,... where...)


先準備2張用來查詢的表 Table01,Table02:

                  Table01


                                                         Table02



那麼,首先就來說一下多張表的內連接查詢

select Table01.SID ,SName,CID,CContact,CPhone

from Table01 JOIN Table02

ON Table01.SID=Table02.SID

在多表連接查詢時若連接的表中有相同的字段,則在引用時必須在其前面加上表的前綴(查詢Table01中的SID就要寫Table01.SID),若查詢字段在多個表中是唯一的,則可以不加表名前綴。

查詢結果:



接着說一下查詢一張表的自連接查詢吧,其實可以看成是一種另類的內連接。

自連接查詢必須將表指定兩個別名,其實就是複製一張自己的表,使其變成兩張表了。

select S1.SID,S1.SName,S1.SDID,s1.SPostID

from Table01 AS S1 JOIN Table01 AS S2

ON S1.SDID!=S2.SDID and S1.SPostID=S2.SPostID

Table 定義別名 S1和S2

查詢結果:



下面說一下外鏈接查詢,有左連接查詢(LEFT OUTER JOIN),右連接查詢(RIGHT OUTER JOIN)和全連接查詢(FULL OUTER JOIN)。 OUTER 可以省略

先準備2張表,Table01,Table02:

                           Table01                                                         Table02

        


1、左外連接查詢也稱左連接查詢(LEFT OUTER JOIN)

概念:返回左表中的所有行,如果左表中行在右表中沒有匹配行,則右表中所對應的的行爲空值。

select * from  Table01 left join Table02

on Table01.classId = Table02.classId

查詢結果:



2、右外連接查詢也稱右連接查詢(RIGHT OUTER JOIN)

 概念:與左連接相反,返回右表中的所有行,如果右表中行在左表中沒有匹配行,則左表中所對應的的行爲空值

select * from  Table01 right join Table02

on Table01.classId = Table02.classId

查詢結果:



3、全外連接查詢也稱全連接查詢(FULL OUTER JOIN)

概念:返回左表和右表中的所有行。當某行在另一表中沒有匹配行,則另一表行爲空值(先根據左表查右表,查不到的話,右表的行爲空值,等查好後右表剩下的全展示,左錶行全爲空值)

select * from  Table01 full join Table02

on Table01.classId = Table02.classId

查詢結果:



最後一種就是交叉查詢 (CROSS JOIN)也叫笛卡爾積,查詢表使用外鏈接的兩張表Table01,Table02

概念:不帶WHERE條件子句,它將會返回被連接的兩個表的笛卡爾積,就是左表的每一行分別於右表的每一行組合,返回結果的行數等於兩個錶行數的乘積(例如:Table01t和Table02,返回4*4=16條記錄),如果帶where,返回或顯示的是匹配的行數

1、不帶 WHERE:

select * from  Table01 cross join Table02也可以寫成select * from  Table01,Table02

查詢結果 :



2、帶WHERE 子句,先將2個表乘積組合,再根據條件查詢

注:交叉帶條件查詢必須使用 WHERE,不能使用ON

select * from  Table01 CROSS join Table02

WHERE Table01.classId = Table02.classId

查詢結果:



總算寫完了,連接查詢就這些了,看了之後是不是覺得很簡單呢?


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章