MySQL的自然联结+外部联结(左外连接,右外连接)+内部联结
生活随笔
收集整理的這篇文章主要介紹了
MySQL的自然联结+外部联结(左外连接,右外连接)+内部联结
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
【0】README 0.1)本文旨在review MySQL的自然聯(lián)結(jié)+外部聯(lián)結(jié)(左外連接,右外連接)+內(nèi)部聯(lián)結(jié)?的相關(guān)知識;
【1】自然聯(lián)結(jié) 1)自然聯(lián)結(jié)定義:無論何時對表進行聯(lián)結(jié),應(yīng)該至少有一個列出現(xiàn)不止一個表中(被聯(lián)結(jié)的列)。標(biāo)準(zhǔn)的聯(lián)結(jié)返回所有數(shù)據(jù),甚至相同的列多次出現(xiàn)。自然聯(lián)結(jié)排除多次出現(xiàn),使每個列只返回一次;(干貨——自然聯(lián)結(jié)的作用就是排除多次出現(xiàn),使每個列只返回一次)
看個荔枝) 自然連接怎么連接? R表 S表 A B C D B E 1 a 3 2 c 7 2 b 6 3 d 5 3 c 7 1 a 3 <span style="font-family: SimSun; background-color: rgb(255, 255, 255);"> ?</span> step1)自然連接是第一步R×S結(jié)果是(就是用R表中的每一項乘以S表中的每一項):A B C D B E 1 a 3 2 c 7 1 a 3 3 d 5 1 a 3 1 a 3 2 b 6 2 c 7 2 b 6 3 d 5 2 b 6 1 a 3 3 c 7 2 c 7 3 c 7 3 d 5 3 c 7 1 a 3 step2)選擇R.B=S.B的記錄: R.A R.B R.C S.D S.B S.E 1 a 3 1 a 3 3 c 7 2 c 7 step3)然后去掉相同且值也相同的B屬性,最后R∞S的值為: A B C D E1 a 3 1 33 c 7 2 7
以下部分文字描述轉(zhuǎn)自:http://www.cnblogs.com/sysu-blackbear/p/4157295.html 【supplement】測試前的準(zhǔn)備 1)假設(shè)有A,B兩個表: // 表A記錄如下 aID aNum 1 a2010 2 a2011 3 a2012 4 a2012 5 a2013 // 表B記錄如下: bID bName 1 b2010 2 b2011 3 b2012 4 b2013 8 b2014
【2】left join (左外聯(lián)結(jié))sql語句如下:? select*from A left join B on A.aID = B.bID 對以上結(jié)果的分析(Analysis) A1)left join是以A表的記錄為基礎(chǔ)的,A可以看成左表,B可以看成右表,left join是以左表為準(zhǔn)的. A2)換句話說,左表(A)的記錄將會全部表示出來,而右表(B)只會顯示符合搜索條件的記錄(例子中為: A.aID = B.bID). B表記錄不足的地方均為NULL;
【3】right join (右外聯(lián)結(jié)) 【4】內(nèi)聯(lián)結(jié) sql語句如下: select*from A innerjoin B on A.aID = B.bID 對以上結(jié)果的分析(Analysis): A1)很明顯,這里只顯示出了 A.aID = B.bID的記錄.這說明inner join并不以誰為基礎(chǔ),它只顯示符合條件的記錄. ? A2)LEFT JOIN操作用于在任何的 FROM 子句中,組合來源表的記錄。使用 LEFTJOIN 運算來創(chuàng)建一個左邊外部聯(lián)接。左邊外部聯(lián)接將包含了從第一個(左邊)開始的兩個表中的全部記錄,即使在第二個(右邊)表中并沒有相符值的記錄。 A3)語法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2 A3.1)說明:table1, table2參數(shù)用于指定要將記錄組合的表的名稱。 A3.2)field1, field2參數(shù)指定被聯(lián)接的字段的名稱。且這些字段必須有相同的數(shù)據(jù)類型及包含相同類型的數(shù)據(jù),但它們不需要有相同的名稱。 A3.3)compopr參數(shù)指定關(guān)系比較運算符:"=", "<", ">", "<=", ">=" 或 "<>"。 A3.4)如果在INNER JOIN操作中要聯(lián)接包含Memo 數(shù)據(jù)類型或 OLE Object 數(shù)據(jù)類型數(shù)據(jù)的字段,將會發(fā)生錯誤。 Attention)left和right是外連接,Inner是內(nèi)連接。(left join=left outer join,right join=right outer join)
【1】自然聯(lián)結(jié) 1)自然聯(lián)結(jié)定義:無論何時對表進行聯(lián)結(jié),應(yīng)該至少有一個列出現(xiàn)不止一個表中(被聯(lián)結(jié)的列)。標(biāo)準(zhǔn)的聯(lián)結(jié)返回所有數(shù)據(jù),甚至相同的列多次出現(xiàn)。自然聯(lián)結(jié)排除多次出現(xiàn),使每個列只返回一次;(干貨——自然聯(lián)結(jié)的作用就是排除多次出現(xiàn),使每個列只返回一次)
看個荔枝) 自然連接怎么連接? R表 S表 A B C D B E 1 a 3 2 c 7 2 b 6 3 d 5 3 c 7 1 a 3 <span style="font-family: SimSun; background-color: rgb(255, 255, 255);"> ?</span> step1)自然連接是第一步R×S結(jié)果是(就是用R表中的每一項乘以S表中的每一項):A B C D B E 1 a 3 2 c 7 1 a 3 3 d 5 1 a 3 1 a 3 2 b 6 2 c 7 2 b 6 3 d 5 2 b 6 1 a 3 3 c 7 2 c 7 3 c 7 3 d 5 3 c 7 1 a 3 step2)選擇R.B=S.B的記錄: R.A R.B R.C S.D S.B S.E 1 a 3 1 a 3 3 c 7 2 c 7 step3)然后去掉相同且值也相同的B屬性,最后R∞S的值為: A B C D E1 a 3 1 33 c 7 2 7
以下部分文字描述轉(zhuǎn)自:http://www.cnblogs.com/sysu-blackbear/p/4157295.html 【supplement】測試前的準(zhǔn)備 1)假設(shè)有A,B兩個表: // 表A記錄如下 aID aNum 1 a2010 2 a2011 3 a2012 4 a2012 5 a2013 // 表B記錄如下: bID bName 1 b2010 2 b2011 3 b2012 4 b2013 8 b2014
【2】left join (左外聯(lián)結(jié))sql語句如下:? select*from A left join B on A.aID = B.bID 對以上結(jié)果的分析(Analysis) A1)left join是以A表的記錄為基礎(chǔ)的,A可以看成左表,B可以看成右表,left join是以左表為準(zhǔn)的. A2)換句話說,左表(A)的記錄將會全部表示出來,而右表(B)只會顯示符合搜索條件的記錄(例子中為: A.aID = B.bID). B表記錄不足的地方均為NULL;
【3】right join (右外聯(lián)結(jié)) 【4】內(nèi)聯(lián)結(jié) sql語句如下: select*from A innerjoin B on A.aID = B.bID 對以上結(jié)果的分析(Analysis): A1)很明顯,這里只顯示出了 A.aID = B.bID的記錄.這說明inner join并不以誰為基礎(chǔ),它只顯示符合條件的記錄. ? A2)LEFT JOIN操作用于在任何的 FROM 子句中,組合來源表的記錄。使用 LEFTJOIN 運算來創(chuàng)建一個左邊外部聯(lián)接。左邊外部聯(lián)接將包含了從第一個(左邊)開始的兩個表中的全部記錄,即使在第二個(右邊)表中并沒有相符值的記錄。 A3)語法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2 A3.1)說明:table1, table2參數(shù)用于指定要將記錄組合的表的名稱。 A3.2)field1, field2參數(shù)指定被聯(lián)接的字段的名稱。且這些字段必須有相同的數(shù)據(jù)類型及包含相同類型的數(shù)據(jù),但它們不需要有相同的名稱。 A3.3)compopr參數(shù)指定關(guān)系比較運算符:"=", "<", ">", "<=", ">=" 或 "<>"。 A3.4)如果在INNER JOIN操作中要聯(lián)接包含Memo 數(shù)據(jù)類型或 OLE Object 數(shù)據(jù)類型數(shù)據(jù)的字段,將會發(fā)生錯誤。 Attention)left和right是外連接,Inner是內(nèi)連接。(left join=left outer join,right join=right outer join)
總結(jié)
以上是生活随笔為你收集整理的MySQL的自然联结+外部联结(左外连接,右外连接)+内部联结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑怎么进行屏幕检测(怎么检查电脑屏幕)
- 下一篇: MySQL的source命令不加分号和d