閱讀461 返回首頁    go 阿裏雲 go 技術社區[雲棲]


SQL連接查詢1 內聯接查詢

在數據庫開發方麵,通過單表所表現的實現,有時候需要組合查詢來找到我們需要的記錄集,這時候我們就會用到連接查詢。

  連接查詢主要包括以下幾個方麵:

  內連接

  內連接一般是我們最常使用的,也叫自然連接,是用比較運算符比較要聯接列的值的聯接。它是通過(INNER JOIN或者JOIN)關鍵字把多表進行連接。我們通過建立兩個表來說明問題:

StudentID StudentName StudentAge
----------- -------------------------------------------------- -----------
1 張三 25
2 李四 26
3 王五 27
4 趙六 28
5 無名氏 27

  以上是表Student,存放學生基本信息。

BorrowBookID BorrowBookName StudentID BorrowBookPublish
----------------------------------------------------------------------------------------------------------------------
1 馬克思主義政治經濟學 1 電子工業出版社
2 毛澤東思想概論 2 高等教育出版社
3 鄧小平理論 3 人民郵電出版社
4 大學生思想道德修養 4 中國鐵道出版社
5 C語言程序設計 NULL 高等教育出版社

  以上是表BorrowBook,存放學生所借的書。

  以上兩張表是通過StudentID進行關聯,在這裏先執行內聯連語句:

Select Student.StudentName,Student.StudentAge,BorrowBook.BorrowBookName,BorrowBook.BorrowBookPublish
From Student
Inner Join BorrowBook
On Student.StudentID = BorrowBook.StudentID

  上麵這個語句也可以寫成

Select Student.StudentName,Student.StudentAge,BorrowBook.BorrowBookName,BorrowBook.BorrowBookPublish
FROM Student,BorrowBook
WHERE Student.StudentID = BorrowBook.StudentID

 其中,Inner Join是SQL Server的缺省連接,可簡寫為Join。在Join後麵指定具體的表作連接。On後麵指定了連接的條件。

  運行的結果如下:

tudentName StudentAge BorrowBookName BorrowBookPublish
--------------------------------------------------------------------------------
張三 25 馬克思主義政治經濟學 電子工業出版社
李四 26 毛澤東思想概論 高等教育出版社
王五 27 鄧小平理論 人民郵電出版社
趙六 28 大學生思想道德修養 中國鐵道出版社

  (所影響的行數為 4 行)

  根據查詢的結果來進行分析:

  如果多個表要做連接,那麼這些表之間必然存在著主鍵和外鍵的關係。所以需要將這些鍵的關係列出,就可以得出表連接的結果。在上例中,StudentID是Student表的主鍵,StudentID又是BorrowBook表的外鍵,這兩個表的連接條件就是Student.StudentID = BorrowBook.StudentID,對比查詢結果可以得知,內連接查詢隻查詢出主鍵StudentID在另張表中存在的記錄,像Student表中的第五條記錄,因為在BorrowBook表中StudentID不存在,像BorrowBook表中的第五條記錄StudentID為Null,對應的Student表中沒有記錄,所以就不會顯示。所以內連接就是將參與的數據表中的每列與其它數據表的列相匹配,形成臨時數據表,並將滿足數據項相等的記錄從臨時數據表中選擇出來。

  內連接查詢操作列出與連接條件匹配的數據行,它使用比較運算符比較被連接列的列值。內連接分三種:

  1) 等值連接:在連接條件中使用等於號(=)運算符比較被連接列的列值,其查詢結果中列出被連接表中的所有列,包括其中的重複列。

  2) 不等連接: 在連接條件使用除等於運算符以外的其它比較運算符比較被連接的列的列值。這些運算符包括> 、> =、 <=、 <、!> 、! <和 <> 。

    3) 自然連接:在連接條件中使用等於(=)運算符比較被連接列的列值,但它使用選擇列表指出查詢結果集合中所包括的列,並刪除連接表中的重複列。

  例如對於用不等值連接語句:

Select Student.StudentName,Student.StudentAge,BorrowBook.BorrowBookName,BorrowBook.BorrowBookPublish
From Student
Inner Join BorrowBook
On Student.StudentID <> BorrowBook.StudentID
StudentName StudentAge BorrowBookName BorrowBookPublish

----------------------------------------------------------------------------------
李四 26 馬克思主義政治經濟學 電子工業出版社
王五 27 馬克思主義政治經濟學 電子工業出版社
趙六 28 馬克思主義政治經濟學 電子工業出版社
無名氏 27 馬克思主義政治經濟學 電子工業出版社
張三 25 毛澤東思想概論 高等教育出版社
王五 27 毛澤東思想概論 高等教育出版社
趙六 28 毛澤東思想概論 高等教育出版社
無名氏 27 毛澤東思想概論 高等教育出版社
張三 25 鄧小平理論 人民郵電出版社
李四 26 鄧小平理論 人民郵電出版社
趙六 28 鄧小平理論 人民郵電出版社
無名氏 27 鄧小平理論 人民郵電出版社
張三 25 大學生思想道德修養 中國鐵道出版社
李四 26 大學生思想道德修養 中國鐵道出版社
王五 27 大學生思想道德修養 中國鐵道出版社
無名氏 27 大學生思想道德修養 中國鐵道出版社

  它就會把兩表所對應不相等的記錄給查詢出來了。

最後更新:2017-04-02 06:51:20

  上一篇:go Dictionary集合
  下一篇:go SQL連接查詢2 外連接(左右聯接查詢)