準備工作:新建兩張表 表一:student 填充內容:編號,姓名,班級 表二:school 填充內容:編號,班級,專業 這兩張表建好了,意為班級選課表,兩張表沒有任何主外鍵的關係,下麵進行內聯,左聯,右聯,全聯的實驗 一, 內聯接. 關鍵字:INNER JOIN 語法:SELECT * from 表 ...
準備工作:新建兩張表
表一:student
填充內容:編號,姓名,班級
表二:school
填充內容:編號,班級,專業
這兩張表建好了,意為班級選課表,兩張表沒有任何主外鍵的關係,下麵進行內聯,左聯,右聯,全聯的實驗
一, 內聯接.
關鍵字:INNER JOIN
語法:SELECT * from 表一 INNER JOIN 表二 on 表一.屬性=表二.屬性
使用上面的語法來試一下:SELECT * from student INNER JOIN school on student.class=school.class
輸出結果:
這條sql語句用了內連接的關鍵字,並將兩表中的class屬性進行了鏈接,得出了以上的結果,發現結果的得出是有後面具體鏈接屬性來控制的,我下麵將數據修改看下得到什麼結果
修改數據:school,student沒有更改
繼續執行上面的語句:
現在得出的數據結果可以看出通過內聯接,只有後面屬性值對應時,才會顯示出兩表對應的數據,如果沒有對應的屬性值,其他數據就不會被顯示,也就是student與school內聯接,只會取出class相同的欄位,而不會取出其他數據!
二, 左聯接.
關鍵字:LEFT JOIN
語法:SELECT * From 表一 LEFT JOIN 表二 ON 表一.屬性=表二.屬性
測試:SELECT * from student LEFT JOIN school on student.class=school.class
結果:
可以看出左聯接就是以左表為主,會顯示出左表的全部數據,而與其連接的表會根據欄位的匹配顯示對應數據,也就是說首先取出student表中所有數據,然後再加上與student與school表class欄位匹配的數據!
三,右聯接.
關鍵字:RIGHT JOIN
語法:SELECT * FROM 表一 RIGHT JOIN 表二 ON 表一.屬性=表二.屬性
測試:SELECT * FROM student RIGHT JOIN school ON student.class=school.class
結果:
可以看出,右鏈接與左聯接雷同,會取出school中的全部數據,再取出與其class欄位相匹配的數據,關於右鏈接不多解釋!
四,全聯接.
MySQL不支持完全鏈接,在這裡可以通過 UNION ALL 將左聯和右聯的結果合併實現全聯接
測試:SELECT * from student LEFT JOIN school on student.class=school.class
UNION ALL
SELECT * FROM student RIGHT JOIN school ON student.class=school.class
結果:
也就是說完全鏈接就是左聯接和右連接的合併,兩邊都會通過欄位匹配一遍獲取數據,通過union all將結果和合併,這就是完全鏈接狀態!
關於建表,和sql語句已經在隨筆中寫出了,實驗的話直接copy使用,謝謝!