一文掌握SQL的 joins 語法
SQL 中的不同 JOIN 類型:
1. (INNER)JOIN(內(nèi)連接):返回兩個表中具有匹配值的記錄。
2. LEFT(OUTER)JOIN(左外連接):返回左表中的所有記錄,以及右表中與之匹配的記錄。
3. RIGHT(OUTER)JOIN(右外連接):返回右表中的所有記錄,以及左表中與之匹配的記錄。
4. FULL(OUTER)JOIN(全外連接):返回在左表或右表中有匹配的所有記錄。
現(xiàn)在詳細舉例說明:
假設(shè)我們有兩個表 employees 和 departments:
employee_id | name | department_id |
---|---|---|
1 | Alice | 1 |
2 | Bob | 2 |
3 | David | NULL |
employees表
department_id | department_name |
1 | HR |
2 | Engineering |
3 | Sales |
departments表
INNER JOIN
SELECT employees.name, departments.department_name //要查的字段 FROM employees //表1 INNER JOIN departments ON employees.department_id = departments.department_id; //表2,連接條件
結(jié)果是
name | department_name |
Alice | HR |
Bob | Engineering |
LEFT (OUTER) JOIN
LEFT JOIN 返回左表中的所有記錄,以及右表中匹配的記錄。如果右表中沒有匹配的記錄,則結(jié)果中包含 NULL。
SELECT employees.name, departments.department_name FROM employees LEFT JOIN departments ON employees.department_id = departments.department_id;
結(jié)果是
name | department_name |
Alice | HR |
Bob | Engineering |
David | NULL |
RIGHT (OUTER) JOIN
RIGHT JOIN 返回右表中的所有記錄,以及左表中匹配的記錄。如果左表中沒有匹配的記錄,則結(jié)果中包含 NULL。
SELECT employees.name, departments.department_name FROM employees RIGHT JOIN departments ON employees.department_id = departments.department_id;
結(jié)果是
name | department_name |
Alice | HR |
Bob | Engineering |
NULL | Sales |
FULL (OUTER) JOIN
FULL JOIN 返回兩個表中的所有記錄,當左表或右表中有匹配時返回匹配的記錄。如果沒有匹配,則結(jié)果中包含 NULL。
SELECT employees.name, departments.department_name FROM employees FULL JOIN departments ON employees.department_id = departments.department_id;
name | department_name |
Alice | HR |
Bob | Engineering |
David | NULL |
NULL | Sales |
總結(jié)
- INNER JOIN:只返回兩個表中匹配的記錄。
- LEFT JOIN:返回左表中的所有記錄,以及右表中匹配的記錄。
- RIGHT JOIN:返回右表中的所有記錄,以及左表中匹配的記錄。
- FULL JOIN:返回兩個表中的所有記錄,當左表或右表中有匹配時返回匹配的記錄。
希望這些示例能幫助你更好地理解 SQL 中的不同 JOIN 類型。
到此這篇關(guān)于SQL的 joins 語法的文章就介紹到這了,更多相關(guān)SQL joins 語法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
比較詳細的完美解決安裝sql2000時出現(xiàn)以前的某個程序安裝已在安裝計算機上創(chuàng)建掛起的文件操作。
比較詳細的完美解決安裝sql2000時出現(xiàn)以前的某個程序安裝已在安裝計算機上創(chuàng)建掛起的文件操作。...2007-10-10mssql2005,2008導(dǎo)出數(shù)據(jù)字典實現(xiàn)方法
在項目開發(fā)過程中會用到數(shù)據(jù)字典,本文將詳細介紹mssql2005,2008如何導(dǎo)出數(shù)據(jù)字典,需要了解更多的朋友可以參考下2012-11-11SQL SERVER 將XML變量轉(zhuǎn)為JSON文本
這篇文章主要介紹了SQL SERVER 將XML變量轉(zhuǎn)為JSON文本的相關(guān)資料,需要的朋友可以參考下2016-03-03用SQL語句實現(xiàn)隨機查詢數(shù)據(jù)并不顯示錯誤數(shù)據(jù)的方法
用SQL語句實現(xiàn)隨機查詢數(shù)據(jù)并不顯示錯誤數(shù)據(jù)的方法...2007-11-11SQL Server 數(shù)據(jù)庫索引其索引的小技巧
關(guān)于索引的常識:影響到數(shù)據(jù)庫性能的最大因素就是索引。由于該問題的復(fù)雜性,我只可能簡單的談?wù)勥@個問題,不過關(guān)于這方面的問題,目前有好幾本不錯的書籍可供你參閱。我在這里只討論兩種SQL Server索引,即clustered索引和nonclustered索引2012-06-06mssql insert into 和insert into select性能比較
今天沒事,測了一下insert into和insert into select的性能,沒想到這兩個性能差別這么大。2010-03-03SQL Server 置疑、可疑、正在恢復(fù)等情況分析
有些時候當你重啟了數(shù)據(jù)庫服務(wù),會發(fā)現(xiàn)有些數(shù)據(jù)庫變成了正在恢復(fù)、置疑、可疑等情況,這個時候DBA就會很緊張了,下面是一些在實踐中得到證明的方法2011-12-12用戶 jb51net 登錄失敗。原因: 該帳戶的密碼必須更改
這篇文章主要介紹了用戶jb51net 登錄失敗。原因: 該帳戶的密碼必須更改,需要的朋友可以參考下2015-08-08