日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

数据库:内联接,外联接,空值和联接

發布時間:2024/8/23 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库:内联接,外联接,空值和联接 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內聯:???左表的一行和右表的每一行進行比較, 如果左表的一行和右表的一行符合聯條件,則返回為結果集中的一行 ------?? 等效于where條件

當聯接表時,創建的聯接類型影響出現在結果集內的行。可以創建下列聯接類型:

? ?僅顯示兩個聯接表中的匹配行的聯接。(這是查詢設計器中的默認聯接類型。)例如,可以聯接 titles 表和 publishers 表以創建顯示每個書名的出版商名稱的結果集。在內聯接中,結果集內不包含沒有出版商信息的書名,也不包含沒有書名的出版商。這類聯接所得到的 SQL 可能象下面這樣:

·??????????????? SELECT???? title, pub_name ·??????????????? FROM???????? titles INNER JOIN publishers ON titles.pub_id = publishers.pub_id

注意 ? 當創建內聯接時,包含 NULL 的列不與任何值匹配,因此不包括在結果集內。空值不與其它的空值匹配。


???? sql語法:?? select?__ from __ inner join __ on __?
???? linQ語法:???from?__ in?__?? join __ in __ on?__? select __
???? 結果集:???????????????????????????????????????????????????? ?

外聯 (跟內聯的區別是,外聯結至少返回左邊或右表中的所有行)
?????? 1.左向外聯: 返回左表的所有行,如果左表的某行在右表沒有匹配行,則右表返回空,并組合成結果集中的一行,如果有則聯成結果集中的一行

? ? ? ? ?包括第一個命名表("左"表,出現在 JOIN 子句的最左邊)中的所有行。不包括右表中的不匹配行。例如,下面的 SQL 語句說明 titles 表和 publishers 表之間的左向外聯接包括所有的書名,甚至包括那些沒有出版商信息的書名:

·????????????????????? SELECT titles.title_id, ·????????????????????? ???????titles.title, ·????????????????????? ???????publishers.pub_name ·????????????????????? FROM titles LEFT OUTER JOIN publishers ·????????????????????? ????????????ON titles.pub_id ?????????????= publishers.pub_id

?????語法:?? select?__ from __?left outer?join __ on __?
???? 結果集:??????????????????????????????????????????????????????
?????? 2.右向外聯:返回右表的所有行,如果右表的某行在左表沒有匹配行,則左表返回空,并組合成結果集中的一行,如果有則聯成結果集中的一行???

? ? ?包括第二個命名表("右"表,出現在 JOIN 子句的最右邊)中的所有行。不包括左表中的不匹配行。例如,在 titles publishers 表之間的右向外聯接將包括所有的出版商,甚至包括那些在 titles 表中沒有書名的出版商。所得到的 SQL 可能象下面這樣:

·????????????????????? SELECT titles.title_id, ·????????????????????? ???????titles.title, ·????????????????????? ???????publishers.pub_name ·????????????????????? FROM titles RIGHT OUTER JOIN publishers ·????????????????????? ????????????ON titles.pub_id ?????????????= publishers.pub_id


???? 語法:?? select?__ from __?right outer?join __ on __
???? 結果集:?????????????????????????????????????????????????????? ?
?????? 3.完整外部聯:返回左表和右邊的所有行;若不匹配,則一邊有值,一邊為空

? ? ? 包括所有聯接表中的所有行,不論它們是否匹配。例如,titles 表和 publishers 表之間的完整外部聯接顯示所有書名和所有出版商,甚至包括那些在另一個表中沒有匹配值的書名和出版商。

·????????????????????? SELECT titles.title_id, ·????????????????????? ???????titles.title, ·????????????????????? ???????publishers.pub_name ·????????????????????? FROM titles FULL OUTER JOIN publishers ·????????????????????? ????????????ON titles.pub_id ?????????????= publishers.pub_id


???? 語法:?? select?__ from __?full outer?join __ on __
???? 結果集:?????????????????????????????????????????????????????????
交叉聯:返回左表中的每一行,左表中的每一行與右表中的所有行組合,結果集的行數等于左表的行數乘右表的行數

? ?在這類聯接的結果集內,兩個表中每兩個可能成對的行占一行。例如,在通過作者 CROSS JOIN 出版商輸出的結果集內,每個可能的作者/出版商組合占一行。所得到的 SQL 可能象下面這樣:

·??????????????? SELECT * FROM authors CROSS JOIN publishers


???? 語法:?? select?__ from __?cross join __ on __
???? 結果集:??????????????????????????????????????????????????????????
自聯:和自身進行聯?????語法:?? select?__ from __?inner?join __ on __
多表聯:
???? 語法:?? select?__ from __?inner join __ on __ inner join __ on __

?

空值和聯接

如果要聯接的表的列中有空值,則這些空值互相不匹配。如果其中一個聯接表的列中出現空值,只能通過外聯接返回這些空值(除非 WHERE 子句不包括空值)。

下面的兩個表中,每個表在要參與聯接的列中均包含 NULL 值:

table1????????????????????????? table2 a?????????? b?????????????????? c??????????? d -------???? ------????????????? -------????? ------ ????? 1??????? one???????????????? NULL???????? two ?? NULL????? three?????????????????? ?4??????? four ????? 4????? join4

將列 a中的值與列 c中的值進行比較的聯接在包含 NULL 值的列上不能獲得匹配結果:

SELECT * FROM table1 t1 JOIN table2 t2 ?? ON t1.a = t2.c ORDER BY t1.a

只返回列 ac值為 4 的一行:

a?????????? b????? c?????????? d????? ----------- ------ ----------- ------ 4???? ??????join4? 4?????????? four?? ? (1 row(s) affected)

從基表返回的空值和從外聯接返回的空值也很難區分。例如,下面的 SELECT 語句對這兩個表進行左向外聯接:

SELECT * FROM table1 t1 LEFT OUTER JOIN table2 t2 ?? ON t1.a = t2.c ORDER BY t1.a

下面是結果集:

a?????????? b????? c?????????? d????? ----------- ------ ----------- ------ NULL??????? three? NULL??????? NULL 1?????????? one??? NULL??????? NULL 4?????????? join4? 4?????????? four?? ? (3 row(s) affected)

結果并不能使數據中的 NULL 值和表示聯接失敗的 NULL 值容易區分。如果要聯接的數據出現空值,最好用常規聯接將這些空值從結果中省略。

?

參考:

http://www.cnblogs.com/cyberhedgehog/articles/1195523.html

http://www.cnblogs.com/zp89850/archive/2007/06/04/770983.html

轉載于:https://www.cnblogs.com/WayneZeng/p/3352405.html

總結

以上是生活随笔為你收集整理的数据库:内联接,外联接,空值和联接的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。