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 |