原文地址---> http://www.cnblogs.com/yuteng/articles/1729677.htmlhtml
Left Join / Right Join /inner join相關數據庫
關於左鏈接和右鏈接總結性的一句話:性能
左鏈接where隻影向右表,右鏈接where隻影響左表。htm
Left Joinblog
select * from tbl1 Left Join tbl2 where tbl1.ID = tbl2.ID索引
左鏈接後的檢索結果是顯示tbl1的全部數據和tbl2中知足where 條件的數據。get
簡言之 Left Join影響到的是右邊的表io
Right Jointable
select * from tbl1 Right Join tbl2 where tbl1.ID = tbl2.ID基礎
檢索結果是tbl2的全部數據和tbl1中知足where 條件的數據。
簡言之 Right Join影響到的是左邊的表。
inner join
select * FROM tbl1 INNER JOIN tbl2 ON tbl1.ID = tbl2.ID
功能和 select * from tbl1,tbl2 where tbl1.id=tbl2.id相同。
其餘相關資料
1 .WHERE子句中使用的鏈接語句,在數據庫語言中,被稱爲隱性鏈接。INNER JOIN……ON子句產生的鏈接稱爲顯性鏈接。(其餘JOIN參數也是顯性鏈接)WHERE 和INNER JOIN產生的鏈接關係,沒有本質區別,結果也同樣。可是!隱性鏈接隨着數據庫語言的規範和發展,已經逐漸被淘汰,比較新的數據庫語言基本上已經拋棄了隱性鏈接,所有采用顯性鏈接了。
2 .不管怎麼鏈接,均可以用join子句,可是鏈接同一個表的時候,注意要定義別名,不然產生錯誤!
a> inner join:理解爲「有效鏈接」,兩張表中都有的數據纔會顯示left join:理解爲「有左顯示」,好比on a.field=b.field,則顯示a表中存在的所有數據及a\b中都有的數據,A中有、B沒有的數據以null顯示
b> right join:理解爲「有右顯示」,好比on a.field=b.field,則顯示B表中存在的所有數據及a\b中都有的數據,B中有、A沒有的數據以null顯示
c> full join:理解爲「全鏈接」,兩張表中全部數據都顯示,實際就是inner +(left-inner)+(right-inner)
3 .join能夠分主次表 外聯接有三種類型:徹底外聯,左聯,右聯. 徹底外聯包含兩張表的全部記錄. 左聯是以左邊的表爲主,右邊的爲輔,右聯則相反
4.通常要使得數據庫查詢語句性能好點遵循一下原則:
在作表與表的鏈接查詢時,大表在前,小表在 不使用表別名,經過字段前綴區分不一樣表中的字段 查詢條件中的限制條件要寫在錶鏈接條件前 儘可能使用索引的字段作爲查詢條件
原文地址---->http://blog.sina.com.cn/s/blog_70438d290100qwp4.html
1.內鏈接咱們一般用的鏈接,表表鏈接只顯示交集數據 2.外鏈接分左外鏈接 table1 left outer join on table2 和右外鏈接table1 right outer join on table2 和全鏈接 table1 full outer join on table2 2.1左外鏈接就是在等值鏈接的基礎上加上主表中的未匹配數據 2.2右外鏈接是在等值鏈接的基礎上加上被鏈接表的不匹配數據 2.3全外鏈接是在等值鏈接的基礎上將左表和右表的未匹配數據都加上. 內鏈接:把兩個表中數據對應的數據查出來 外鏈接:以某個表爲基礎把對應數據查出來(全鏈接是以多個表爲基礎)
student表 no name 1 a 2 b 3 c 4 d
grade表 no grade 1 90 2 98 3 95
內鏈接 inner join(查找條件中對應的數據,no4沒有數據不列出來) 語法:select * from student inner join grade on student.no = grade.no 結果 student.no name grade.no grade 1 a 1 90 2 b 2 98 3 c 3 95
左鏈接(左表中全部數據,右表中對應數據) 語法:select * from student left join grade on student.no = grade.no 結果: student.no name grade.no grade 1 a 1 90 2 b 2 98 3 c 3 95 4 d
右鏈接(右表中全部數據,左表中對應數據) 語法:select * from student right join grade on student.no = grade.no 結果: student.no name grade.no grade 1 a 1 90 2 b 2 98 3 c 3 95
全鏈接 語法:select * from student full join grade on student.no = grade.no 結果: no name grade 1 a 90 2 b 98 3 c 95 4 d 1 a 90 2 b 98 3 c 95
注:access 中不能直接使用full join ,須要使用union all 將左鏈接和右鏈接合併後才能夠