要對這個理解以前,咱們先對相關鏈接來作一個回憶。sql
首先作試驗的兩張表數據以下:student表和對應的grade成績表spa
1:inner join ,inner join能夠理解爲「有效的鏈接」,就是根據on後面的關聯條件,兩張表中都有的數據纔會顯示,下面舉個例子code
SELECT * FROM student stu INNER JOIN grade gra on stu.id = gra.c_stuId
查詢結果以下:blog
能夠看到,id=3的這條數據並無查出來,這是由於在grade裏面,c_stuId並無等於3的這條數據。根據上面也能夠看出,其實 INNER JOIN能夠直接用where來替代。class
2:left join:理解爲「主全顯,後看on」(主表數據不受影響),即主表全顯示,鏈接後的表看on後面的選擇條件,left join後面的條件,並不會影響左表的數據顯示,左表數據會所有顯示出來,鏈接的表若是沒有數據,則所有顯示爲null,看下面例子:基礎
SELECT * FROM student stu LEFT JOIN grade gra on stu.id = gra.c_stuId
結果以下:im
能夠看出,左表student數據所有都顯示出來,而鏈接的表,注意看紅色部分,由於沒有數據,則所有顯示爲null。這也和剛剛說的想符合,鏈接的主表student數據不受影響,全顯示,鏈接後的表數據看on後面的條件。d3
3:right join right join理解爲「主看on,後全顯」(右表數據不受影響),即右表數據所有顯示,主表數據看on後面的選擇條件,看下面例子:數據
1 SELECT 2 * 3 FROM 4 student stu 5 RIGHT JOIN grade gra on stu.id = gra.c_stuId
能夠看出。right join對右邊鏈接的grade表數據沒有影響,所有顯示出來,而對左表的數據則是根據篩選後的條件來顯示,其他的顯示爲null;查詢
綜上,能夠對他們之間的使用有較基礎的理解。