先來看一下,內鏈接的語法:html
SELECT XXX FROM XXX INNER JOIN XXX ON XXX;程序員
這裏 INNER 能夠省略,在上一篇博客中咱們對於笛卡爾積現象的研究中(http://www.cnblogs.com/cdf-opensource-007/p/6507678.html)用到的就是內鏈接,但這並不能說明笛卡爾積算法只是適用於內鏈接,笛卡爾積算法針對的是表之間數據行的匹配次數,跟內鏈接仍是外鏈接無關,至於查詢結果與你的查詢條件有關係,在本文中將對這一算法和內、外鏈接的區別加以說明。算法
內鏈接指的是把錶鏈接時表與表之間匹配的數據行查詢出來,就是兩張表之間數據行匹配時,要同時知足ON語句後面的條件才行。spa
左鏈接和右鏈接,又叫左外鏈接和右外鏈接。code
咱們來看一下左鏈接的語法htm
SELECT XXX FROM XXX LEFT OUTER JOIN XXX ON XXXblog
左鏈接的意思是,不管是否符合ON語句後面的錶鏈接條件都會把左邊那張表的記錄所有查詢出來,右邊的那張表只匹配符合條件的數據行。右鏈接則與之相反(這裏一樣OUTER 能夠省略)。開發
下面咱們以左鏈接爲例,來看一下這個匹配的過程。有兩張表商品表goods和訂單表order_table。博客
SELECT * FROM goods g LEFT JOIN order_table ot ON g.id = ot.goods_id
數據行間的匹配以此類推。table
最終結果是:
藍線部分表示兩張表數據行之間的匹配符合 ON g.id = ot.goods_id,虛線則表示不符合匹配條件,咱們看到步驟二中,即便左邊的表跟右邊的表沒有一行數據可以匹配的,左邊的表的數據行仍是會出如今鏈接以後的臨時表中,而這時右邊的數據行的內容用Null填充。根據分析咱們還能夠看到,數據行之間匹配的次數仍是符合笛卡爾積。
最後說一點,咱們做爲程序員,研究問題仍是要仔細深刻一點的。當你對原理了解的有夠透徹,開發起來也就駕輕就熟了,不少開發中的問題和疑惑也就迎刃而解了,並且在面對其餘問題的時候也可作到舉一反三。固然在開發中沒有太多的時間讓你去研究原理,開發中要以實現功能爲前提,可等項目上線的後,你有大把的時間或者空餘的時間,你大可去刨根問底,深刻的去研究一項技術,爲以爲這對一名程序員的成長是很重要的事情。