MySQL的自然联结+外部联结(左外连接,右外连接)+内部联结
生活随笔
收集整理的這篇文章主要介紹了
MySQL的自然联结+外部联结(左外连接,右外连接)+内部联结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【0】README 0.1)本文旨在review MySQL的自然聯結+外部聯結(左外連接,右外連接)+內部聯結?的相關知識;
【1】自然聯結 1)自然聯結定義:無論何時對表進行聯結,應該至少有一個列出現不止一個表中(被聯結的列)。標準的聯結返回所有數據,甚至相同的列多次出現。自然聯結排除多次出現,使每個列只返回一次;(干貨——自然聯結的作用就是排除多次出現,使每個列只返回一次)
看個荔枝) 自然連接怎么連接? 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結果是(就是用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
以下部分文字描述轉自:http://www.cnblogs.com/sysu-blackbear/p/4157295.html 【supplement】測試前的準備 1)假設有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 (左外聯結)sql語句如下:? select*from A left join B on A.aID = B.bID 對以上結果的分析(Analysis) A1)left join是以A表的記錄為基礎的,A可以看成左表,B可以看成右表,left join是以左表為準的. A2)換句話說,左表(A)的記錄將會全部表示出來,而右表(B)只會顯示符合搜索條件的記錄(例子中為: A.aID = B.bID). B表記錄不足的地方均為NULL;
【3】right join (右外聯結) 【4】內聯結 sql語句如下: select*from A innerjoin B on A.aID = B.bID 對以上結果的分析(Analysis): A1)很明顯,這里只顯示出了 A.aID = B.bID的記錄.這說明inner join并不以誰為基礎,它只顯示符合條件的記錄. ? A2)LEFT JOIN操作用于在任何的 FROM 子句中,組合來源表的記錄。使用 LEFTJOIN 運算來創建一個左邊外部聯接。左邊外部聯接將包含了從第一個(左邊)開始的兩個表中的全部記錄,即使在第二個(右邊)表中并沒有相符值的記錄。 A3)語法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2 A3.1)說明:table1, table2參數用于指定要將記錄組合的表的名稱。 A3.2)field1, field2參數指定被聯接的字段的名稱。且這些字段必須有相同的數據類型及包含相同類型的數據,但它們不需要有相同的名稱。 A3.3)compopr參數指定關系比較運算符:"=", "<", ">", "<=", ">=" 或 "<>"。 A3.4)如果在INNER JOIN操作中要聯接包含Memo 數據類型或 OLE Object 數據類型數據的字段,將會發生錯誤。 Attention)left和right是外連接,Inner是內連接。(left join=left outer join,right join=right outer join)
【1】自然聯結 1)自然聯結定義:無論何時對表進行聯結,應該至少有一個列出現不止一個表中(被聯結的列)。標準的聯結返回所有數據,甚至相同的列多次出現。自然聯結排除多次出現,使每個列只返回一次;(干貨——自然聯結的作用就是排除多次出現,使每個列只返回一次)
看個荔枝) 自然連接怎么連接? 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結果是(就是用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
以下部分文字描述轉自:http://www.cnblogs.com/sysu-blackbear/p/4157295.html 【supplement】測試前的準備 1)假設有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 (左外聯結)sql語句如下:? select*from A left join B on A.aID = B.bID 對以上結果的分析(Analysis) A1)left join是以A表的記錄為基礎的,A可以看成左表,B可以看成右表,left join是以左表為準的. A2)換句話說,左表(A)的記錄將會全部表示出來,而右表(B)只會顯示符合搜索條件的記錄(例子中為: A.aID = B.bID). B表記錄不足的地方均為NULL;
【3】right join (右外聯結) 【4】內聯結 sql語句如下: select*from A innerjoin B on A.aID = B.bID 對以上結果的分析(Analysis): A1)很明顯,這里只顯示出了 A.aID = B.bID的記錄.這說明inner join并不以誰為基礎,它只顯示符合條件的記錄. ? A2)LEFT JOIN操作用于在任何的 FROM 子句中,組合來源表的記錄。使用 LEFTJOIN 運算來創建一個左邊外部聯接。左邊外部聯接將包含了從第一個(左邊)開始的兩個表中的全部記錄,即使在第二個(右邊)表中并沒有相符值的記錄。 A3)語法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2 A3.1)說明:table1, table2參數用于指定要將記錄組合的表的名稱。 A3.2)field1, field2參數指定被聯接的字段的名稱。且這些字段必須有相同的數據類型及包含相同類型的數據,但它們不需要有相同的名稱。 A3.3)compopr參數指定關系比較運算符:"=", "<", ">", "<=", ">=" 或 "<>"。 A3.4)如果在INNER JOIN操作中要聯接包含Memo 數據類型或 OLE Object 數據類型數據的字段,將會發生錯誤。 Attention)left和right是外連接,Inner是內連接。(left join=left outer join,right join=right outer join)
總結
以上是生活随笔為你收集整理的MySQL的自然联结+外部联结(左外连接,右外连接)+内部联结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑怎么进行屏幕检测(怎么检查电脑屏幕)
- 下一篇: 电脑自带截图工具英文(电脑自带截图工具英