SQL INNER JOIN 語句

在本教程中,您將學(xué)習(xí)如何使用SQL內(nèi)部聯(lián)接從兩個(gè)表中獲取數(shù)據(jù)。

使用內(nèi)部聯(lián)接

INNER JOIN是最常見的連接類型。它僅返回在兩個(gè)聯(lián)接表中都匹配的行。下維恩圖說明了內(nèi)部聯(lián)接的工作方式。

SQL內(nèi)部連接圖

為了容易理解這一點(diǎn),讓我們來看看下面employeesdepartments表。

+--------+--------------+------------+---------+
| emp_id | emp_name     | hire_date  | dept_id |
+--------+--------------+------------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |       4 |
|      2 | Tony Montana | 2002-07-15 |       1 |
|      3 | Sarah Connor | 2005-10-18 |       5 |
|      4 | Rick Deckard | 2007-01-03 |       3 |
|      5 | Martin Blank | 2008-06-24 |    NULL |
+--------+--------------+------------+---------+

+---------+------------------+
| dept_id | dept_name        |
+---------+------------------+
|       1 | Administration   |
|       2 | Customer Service |
|       3 | Finance          |
|       4 | Human Resources  |
|       5 | Sales            |
+---------+------------------+
表: employees
表: departments

現(xiàn)在,假設(shè)您只需要檢索分配給特定部門的那些員工的emp_id ,emp_name,hire_date和dept_name。因?yàn)樵趯?shí)際情況中,可能有些雇員尚未分配到部門,例如我們employees表中的第五名雇員“ Martin Blank” 。但是這里的問題是,如何在同一個(gè)SQL查詢中從兩個(gè)表中檢索數(shù)據(jù)?

如果您看到employees表,您會(huì)注意到它有一個(gè)名為dept_id的列,該列保存每個(gè)雇員分配到的部門的ID,即按技術(shù)術(shù)語來說,employees表的dept_id列是departments表的外鍵, 因此,我們將使用此列作為這兩個(gè)表之間的橋梁。

這是一個(gè)示例,該示例通過使用通用的dept_id列將employee 和departments表連接在一起來檢索員工的id,姓名,雇用日期及其所屬部門。 它不包括未分配給任何部門的那些雇員。

SELECT t1.emp_id, t1.emp_name, t1.hire_date, t2.dept_name
FROM employees AS t1 INNER JOIN departments AS t2
ON t1.dept_id = t2.dept_id ORDER BY emp_id;

提示:聯(lián)接表時(shí),請?jiān)诿總€(gè)列名稱前添加其所屬表的名稱(例如 employees.dept_id,departments.dept_id 或 t1.dept_id,t2.dept_id 如果您使用表別名),以避免萬一不同表中的列存在混淆和歧義的列錯(cuò)誤同名。

注意:為了節(jié)省時(shí)間,可以在查詢中使用表別名代替鍵入長表名。 例如,您可以為employees表賦予別名t1,并使用t1.emp_name而不是employees.emp_name 來引用其列emp_name。執(zhí)行完上述命令后,您將得到如下結(jié)果集:

+--------+--------------+------------+-----------------+
| emp_id | emp_name     | hire_date  | dept_name       |
+--------+--------------+------------+-----------------+
|      1 | Ethan Hunt   | 2001-05-01 | Human Resources |
|      2 | Tony Montana | 2002-07-15 | Administration  |
|      3 | Sarah Connor | 2005-10-18 | Sales           |
|      4 | Rick Deckard | 2007-01-03 | Finance         |
+--------+--------------+------------+-----------------+

正如您看到的,結(jié)果集僅包含具有dept_id值的雇員,并且該值也存在于department表的dept_id列中。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清