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