SQL 内连接
SQL中的内连接是最常见和最重要的连接类型,允许用户从两个或多个数据库表中访问匹配的数据。
当表之间的连接条件满足时,它将返回它们之间的所有公共行。
内连接的维恩图如下图所示。维恩图的阴影区域显示两个表的交集值:

SQL中INNER JOIN的语法
SELECT Column_Name1, Column_Name2, ….., Column_NameN
FROM Table_Name1 INNER JOIN Table_Name2
ON Table_Name1.Column_Name = Table_Name2.Column_Name;
SQL中内连接的示例
让我们以两个名为 Employee_Details 和 Department 的表来理解内连接的概念。Employee_Details表包含Emp_ID,Emp_Name,Dept_ID和Emp_Salary列。Department表包含Dept_Id和Dept_Name列。
我们可以使用以下两个不同的查询来检查 Employee_Details 和 Department 表的数据:
SELECT * FROM Department;
输出:
| Dept_Id | Dept_Name | 
|---|---|
| 1001 | Finance | 
| 1002 | Marketing | 
| 1003 | Sales | 
| 1004 | Coding | 
| 1005 | Administration | 
SELECT * FROM Employee_Details;
输出:
| Emp_Id | Emp_Name | Dept_Id | Emp_Salary | 
|---|---|---|---|
| 1 | Akshay | 1001 | 23000 | 
| 2 | Ram | 1002 | 24000 | 
| 3 | Balram | 1004 | 25000 | 
| 4 | Yatin | NULL | NULL | 
| 5 | Manoj | 1004 | 23000 | 
| 6 | Sheetal | 1003 | 24000 | 
| 8 | Yogesh | NULL | NULL | 
| 9 | Naveen | NULL | NULL | 
| 10 | Tarun | 1004 | 23000 | 
以下的查询使用结构化查询语言(SQL)中的 INNER JOIN 语法来连接上述两个表:
SELECT 
Employee_Details.Emp_Id, 
Employee_Details.Emp_Name, Department.Dept_Name, Employee_Details.Emp_Salary, 
FROM Department INNER JOIN Employee_Details 
ON 
Department.Dept_ID = Employee_Details.Emp_Id; 
以上 INNER JOIN 查询的解释:
此查询将 Employee_Details 表和 Department 表进行连接,并访问两个表中 Department.Dept_Id = Employee_Details.DeptId 的记录。
它只提取那些在 Employee 表和 Department 表中的 Dept_Id 匹配的员工的详细信息。
如果 Dept_Id 为 NULL 或不匹配,则该行不会显示在输出中。
输出:
| Emp_Id | Emp_Name | Dept_Name | Emp_Salary | 
|---|---|---|---|
| 1 | Akshay | Finance | 23000 | 
| 2 | Ram | Marketing | 24000 | 
| 3 | Balram | Coding | 25000 | 
| 5 | Manoj | Coding | 23000 | 
| 6 | Sheetal | Sales | 24000 | 
| 10 | Tarun | Coding | 23000 | 
极客笔记