av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)/技術(shù)文章
文章詳情頁(yè)

SQL Server數(shù)據(jù)庫(kù)連接查詢的種類及其應(yīng)用

瀏覽:153日期:2023-11-05 18:20:59

在數(shù)據(jù)庫(kù)開發(fā)方面,通過單表所表現(xiàn)的實(shí)現(xiàn),有時(shí)候需要組合查詢來找到我們需要的記錄集,這時(shí)候我們就會(huì)用到連接查詢。

連接查詢主要包括以下幾個(gè)方面:

內(nèi)連接

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

StudentID StudentName StudentAge

----------- ----------------- -----------

1 張三 25

2 李四 26

3 王五 27

4 趙六 28

5 無名氏 27

以上是表Student,存放學(xué)生基本信息。

BorrowBookID BorrowBookName StudentID BorrowBookPublish

-------------------

1 馬克思主義政治經(jīng)濟(jì)學(xué) 1 電子工業(yè)出版社

2 毛澤東思想概論 2 高等教育出版社

3 鄧小平理論 3 人民郵電出版社

4 大學(xué)生思想道德修養(yǎng) 4 中國(guó)鐵道出版社

5 C語(yǔ)言程序設(shè)計(jì) NULL 高等教育出版社

以上是表BorrowBook,存放學(xué)生所借的書。

以上兩張表是通過StudentID進(jìn)行關(guān)聯(lián),在這里先執(zhí)行內(nèi)聯(lián)連語(yǔ)句:

Select Student.StudentName,Student.StudentAge,BorrowBook.BorrowBookName,BorrowBook.BorrowBookPublish

From Student

Inner Join BorrowBook

On Student.StudentID = BorrowBook.StudentID

上面這個(gè)語(yǔ)句也可以寫成

Select Student.StudentName,Student.StudentAge,BorrowBook.BorrowBookName,BorrowBook.BorrowBookPublish

FROM Student,BorrowBook

WHERE Student.StudentID = BorrowBook.StudentID

其中,Inner Join是SQL Server的缺省連接,可簡(jiǎn)寫為Join。在Join后面指定具體的表作連接。On后面指定了連接的條件。

運(yùn)行的結(jié)果如下:

tudentName StudentAge BorrowBookName BorrowBookPublish

--------------

張三 25 馬克思主義政治經(jīng)濟(jì)學(xué) 電子工業(yè)出版社

李四 26 毛澤東思想概論 高等教育出版社

王五 27 鄧小平理論 人民郵電出版社

趙六 28 大學(xué)生思想道德修養(yǎng) 中國(guó)鐵道出版社

(所影響的行數(shù)為 4 行)

根據(jù)查詢的結(jié)果來進(jìn)行分析:

如果多個(gè)表要做連接,那么這些表之間必然存在著主鍵和外鍵的關(guān)系。所以需要將這些鍵的關(guān)系列出,就可以得出表連接的結(jié)果。在上例中,StudentID是Student表的主鍵,StudentID又是BorrowBook表的外鍵,這兩個(gè)表的連接條件就是Student.StudentID = BorrowBook.StudentID,對(duì)比查詢結(jié)果可以得知,內(nèi)連接查詢只查詢出主鍵StudentID在另張表中存在的記錄,像Student表中的第五條記錄,因?yàn)樵贐orrowBook表中StudentID不存在,像BorrowBook表中的第五條記錄StudentID為Null,對(duì)應(yīng)的Student表中沒有記錄,所以就不會(huì)顯示。所以內(nèi)連接就是將參與的數(shù)據(jù)表中的每列與其它數(shù)據(jù)表的列相匹配,形成臨時(shí)數(shù)據(jù)表,并將滿足數(shù)據(jù)項(xiàng)相等的記錄從臨時(shí)數(shù)據(jù)表中選擇出來。

內(nèi)連接查詢操作列出與連接條件匹配的數(shù)據(jù)行,它使用比較運(yùn)算符比較被連接列的列值。內(nèi)連接分三種:

1) 等值連接:在連接條件中使用等于號(hào)(=)運(yùn)算符比較被連接列的列值,其查詢結(jié)果中列出被連接表中的所有列,包括其中的重復(fù)列。

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

3) 自然連接:在連接條件中使用等于(=)運(yùn)算符比較被連接列的列值,但它使用選擇列表指出查詢結(jié)果集合中所包括的列,并刪除連接表中的重復(fù)列。

例如對(duì)于用不等值連接語(yǔ)句:

Select Student.StudentName,Student.StudentAge,BorrowBook.BorrowBookName,BorrowBook.BorrowBookPublish

From Student

Inner Join BorrowBook

On Student.StudentID <> BorrowBook.StudentID

StudentName StudentAge BorrowBookName BorrowBookPublish

----------------

李四 26 馬克思主義政治經(jīng)濟(jì)學(xué) 電子工業(yè)出版社

王五 27 馬克思主義政治經(jīng)濟(jì)學(xué) 電子工業(yè)出版社

趙六 28 馬克思主義政治經(jīng)濟(jì)學(xué) 電子工業(yè)出版社

無名氏 27 馬克思主義政治經(jīng)濟(jì)學(xué) 電子工業(yè)出版社

張三 25 毛澤東思想概論 高等教育出版社

王五 27 毛澤東思想概論 高等教育出版社

趙六 28 毛澤東思想概論 高等教育出版社

無名氏 27 毛澤東思想概論 高等教育出版社

張三 25 鄧小平理論 人民郵電出版社

李四 26 鄧小平理論 人民郵電出版社

趙六 28 鄧小平理論 人民郵電出版社

無名氏 27 鄧小平理論 人民郵電出版社

張三 25 大學(xué)生思想道德修養(yǎng) 中國(guó)鐵道出版社

李四 26 大學(xué)生思想道德修養(yǎng) 中國(guó)鐵道出版社

王五 27 大學(xué)生思想道德修養(yǎng) 中國(guó)鐵道出版社

無名氏 27 大學(xué)生思想道德修養(yǎng) 中國(guó)鐵道出版社

它就會(huì)把兩表所對(duì)應(yīng)不相等的記錄給查詢出來了。

外連接

外連接主要包括左連接、右連接和完整外部連接。

1)左連接:Left Join 或 Left Outer Join

左連接的結(jié)果集包括LEFT OUTER子句中指定的左表的所有行,而不僅僅是聯(lián)接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關(guān)聯(lián)的結(jié)果集行中右表的所有選擇列表列均為空值(Null)。

我們看對(duì)應(yīng)的SQL語(yǔ)句:

Select Student.StudentName,Student.StudentAge,BorrowBook.BorrowBookName,BorrowBook.BorrowBookPublish

From Student

Left JOIN BorrowBook

On Student.StudentID = BorrowBook.StudentID

運(yùn)行的結(jié)果如下:

StudentName StudentAge BorrowBookName BorrowBookPublish

---------------

張三 25 馬克思主義政治經(jīng)濟(jì)學(xué) 電子工業(yè)出版社

李四 26 毛澤東思想概論 高等教育出版社

王五 27 鄧小平理論 人民郵電出版社

趙六 28 大學(xué)生思想道德修養(yǎng) 中國(guó)鐵道出版社

無名氏 27 NULL NULL

(所影響的行數(shù)為 5 行)

可以看到的是,它查詢的結(jié)果是以左表Student為主,Student對(duì)應(yīng)的StudentID在右表BorrowBook如果不存在的話,就會(huì)用NULL值來代替。

2) 右連接:Right Join 或 Right Outer Join

右連接和左連接相反,它將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值(Null)。

我們看對(duì)應(yīng)的SQL語(yǔ)句

Select Student.StudentName,Student.StudentAge,BorrowBook.BorrowBookName,BorrowBook.BorrowBookPublish

From Student

Right JOIN BorrowBook

On Student.StudentID = BorrowBook.StudentID

運(yùn)行的結(jié)果如下:

StudentName StudentAge BorrowBookName BorrowBookPublish

-------------------

張三 25 馬克思主義政治經(jīng)濟(jì)學(xué) 電子工業(yè)出版社

李四 26 毛澤東思想概論 高等教育出版社

王五 27 鄧小平理論 人民郵電出版社

趙六 28 大學(xué)生思想道德修養(yǎng) 中國(guó)鐵道出版社

NULL NULL C語(yǔ)言程序設(shè)計(jì) 高等教育出版社

(所影響的行數(shù)為 5 行)

可以看到的是,它查詢的結(jié)果是以右表BorrowBook為主,BorrowBook對(duì)應(yīng)的StudentID在左表Student如果不存在的話,就會(huì)用NULL值來代替。

3) 完整外部聯(lián)接:Full Join 或 Full Outer Join

完整外部聯(lián)接返回左表和右表中的所有行。當(dāng)某行在另一個(gè)表中沒有匹配行時(shí),則另一個(gè)表的選擇列表列包含空值。如果表之間有匹配行,則整個(gè)結(jié)果集行包含基表的數(shù)據(jù)值。

我們看對(duì)應(yīng)的SQL語(yǔ)句

Select Student.StudentName,Student.StudentAge,BorrowBook.BorrowBookName,BorrowBook.BorrowBookPublish

From Student

FULL OUTER JOIN BorrowBook

On Student.StudentID = BorrowBook.StudentID

結(jié)果如下:

StudentName StudentAge BorrowBookName BorrowBookPublish -------------------

NULL NULL C語(yǔ)言程序設(shè)計(jì) 高等教育出版社

張三 25 馬克思主義政治經(jīng)濟(jì)學(xué) 電子工業(yè)出版社

李四 26 毛澤東思想概論 高等教育出版社

王五 27 鄧小平理論 人民郵電出版社

趙六 28 大學(xué)生思想道德修養(yǎng) 中國(guó)鐵道出版社

無名氏 27 NULL NULL

(所影響的行數(shù)為 6 行)

可以看到的是,它查詢的結(jié)果除了把相對(duì)應(yīng)完全匹配的記錄查出來以后,還會(huì)把左連接及右連接兩種情形都包括,對(duì)應(yīng)的值用NULL值來代替。

交叉連接

交叉連接(CROSS JOIN),就是指不帶W H E R E子句的查詢。在數(shù)學(xué)上,就是表的笛卡爾積。也就是它查詢出來的記錄數(shù)行為兩個(gè)表的乘積,對(duì)應(yīng)記錄也就是為表A*表B。

我們看對(duì)應(yīng)的SQL語(yǔ)句

Select Student.StudentName,Student.StudentAge,BorrowBook.BorrowBookName,BorrowBook.BorrowBookPublish

From Student Cross Join BorrowBook

運(yùn)行的結(jié)果如下:

StudentName StudentAge BorrowBookName BorrowBookPublish

---------------

張三 25 馬克思主義政治經(jīng)濟(jì)學(xué) 電子工業(yè)出版社

李四 26 馬克思主義政治經(jīng)濟(jì)學(xué) 電子工業(yè)出版社

王五 27 馬克思主義政治經(jīng)濟(jì)學(xué) 電子工業(yè)出版社

趙六 28 馬克思主義政治經(jīng)濟(jì)學(xué) 電子工業(yè)出版社

無名氏 27 馬克思主義政治經(jīng)濟(jì)學(xué) 電子工業(yè)出版社

張三 25 毛澤東思想概論 高等教育出版社

李四 26 毛澤東思想概論 高等教育出版社

王五 27 毛澤東思想概論 高等教育出版社

趙六 28 毛澤東思想概論 高等教育出版社

無名氏 27 毛澤東思想概論 高等教育出版社

張三 25 鄧小平理論 人民郵電出版社

李四 26 鄧小平理論 人民郵電出版社

王五 27 鄧小平理論 人民郵電出版社

趙六 28 鄧小平理論 人民郵電出版社

無名氏 27 鄧小平理論 人民郵電出版社

張三 25 大學(xué)生思想道德修養(yǎng) 中國(guó)鐵道出版社

李四 26 大學(xué)生思想道德修養(yǎng) 中國(guó)鐵道出版社

王五 27 大學(xué)生思想道德修養(yǎng) 中國(guó)鐵道出版社

趙六 28 大學(xué)生思想道德修養(yǎng) 中國(guó)鐵道出版社

無名氏 27 大學(xué)生思想道德修養(yǎng) 中國(guó)鐵道出版社

張三 25 C語(yǔ)言程序設(shè)計(jì) 高等教育出版社

李四 26 C語(yǔ)言程序設(shè)計(jì) 高等教育出版社

王五 27 C語(yǔ)言程序設(shè)計(jì) 高等教育出版社

趙六 28 C語(yǔ)言程序設(shè)計(jì) 高等教育出版社

無名氏 27 C語(yǔ)言程序設(shè)計(jì) 高等教育出版社

(所影響的行數(shù)為 25 行)

可以看到的是,它把表Student中的每一行和BorrowBook中的每一條記錄都進(jìn)行關(guān)聯(lián),返回的記錄數(shù)為5*5=25行,即笛卡爾積,它執(zhí)行的語(yǔ)句也就等效于

Select Student.StudentName,Student.StudentAge,BorrowBook.BorrowBookName,BorrowBook.BorrowBookPublish

From Student,BorrowBook

主站蜘蛛池模板: 中文字幕二区 | 欧美日韩综合 | 国产精品99久久久久久动医院 | 精品视频一区二区三区在线观看 | 欧美成人综合 | 日本特黄a级高清免费大片 国产精品久久性 | 黄片毛片在线观看 | 亚洲一级毛片 | 成人免费观看视频 | 国产精品毛片 | 成人在线免费观看 | 黄色一级大片在线观看 | 国产原创在线观看 | 国产剧情一区二区三区 | 婷婷不卡 | 欧美福利网站 | 国产区一区 | 91精品国产91久久久久久密臀 | 最近中文字幕免费 | 91欧美精品成人综合在线观看 | 国产精品美女久久久久久久久久久 | 黄色一级片视频 | 日韩精品成人一区二区三区视频 | 国产精品视频在线观看 | 成人免费福利视频 | 亚洲午夜电影 | 在线免费观看日本视频 | www免费视频 | 久久99精品久久久 | 视频一区二区中文字幕日韩 | 国产日韩亚洲欧美 | 九九热在线观看 | 四虎影视免费观看 | 亚洲综合五月天婷婷 | 自拍视频网站 | 成年人在线 | 日操夜操 | 久草成人| 99精品久久久久久久 | 一区二区日韩 | 超碰国产在线 |