加入:
SQL 中的联接用于在特定条件下组合来自多个表的行,这是两个表的列之间的关系。并且有不同类型的连接,在本文中让我们介绍 INNER JOIN 和 OUTER JOIN 以及它们的区别。
让我们考虑两个表student和location并通过使用不同的连接组合表来查看差异的外观。
表格1 –
student_id | student_name |
12 | Gupta |
16 | Girish |
17 | Gupta |
14 | Kunal |
15 | Krishna |
18 | Satish |
学生
表 2 –
student_id | student_location |
12 | Delhi |
13 | Madras |
15 | Tamil Nadu |
14 | Mumbai |
16 | Telangana |
20 | Punjab |
地点
首先,使用MSSQL作为服务器创建表并将数据插入表中:
- 使用以下查询创建学生表和位置 –
- 使用以下查询将行插入学生表和位置 –
- 使用以下查询查看表 –
连接类型:
1. 内连接
- 平等加入
- 自加入
2. 外连接
- 左加入
- 右加入
- 全面加入
1. 内连接:
当使用内连接时,它只考虑我们想要匹配表的那些属性,如果不匹配,则不会包含在我们的结果表中。
两种类型的内连接 –
- 平等加入 –
它是 Inner Join 的子类别,仅限于表中的相等条件。当且仅当查询中存在相等条件时,才称该联接为 Equi join。
上述两个表上Equi Join的查询:
SELECT * FROM
student
INNER JOIN
location
ON
student.student_id = location.student_id;
输出表——
- 自加入 –
Self Join 将同一张表视为另一个表,并在满足所需条件后输出结果表。
Self Join的查询在上面两个表中:
SELECT s1.student_id ,s1.student_name FROM
student s1
INNER JOIN
student s2
ON
s1.student_name= s2.student_name AND s1.student_id<> s2.student_id;
输出表——
内连接的维恩图表示–
2. 外连接:
在外连接中,我们完全或同时考虑任何表,使得两个表中不匹配的剩余字段保持为 NULL。
三种类型的外连接 –
1. 左连接或(左外连接)-
在左连接中,我们完全考虑左表和右表中匹配的属性(基于条件),以及左表与右表不匹配的属性相对于左表中的列放置为 NULL。
Left Join的查询在上面两个表中:
SELECT * FROM
student
LEFT JOIN
location
ON
student.student_id = location.student_id;
输出表:
左连接的维恩图表示:
对,加入——
在右连接中,我们完全考虑右表和左表中匹配的属性(基于条件),以及右表与左表不匹配的属性相对于右表中的列放置为 NULL .
Right Join的查询在上面两个表中:
SELECT * FROM
student
RIGHT JOIN
location
ON
student.student_id = location.student_id;
输出表——
右连接的维恩图表示 –
完全加入 –
它是左连接和右连接的并集,其中考虑了左表和右表的所有列,其中左表或右表的未匹配或未找到的属性将在结果表中放置为 NULL。
Full Join的查询在上面两个表中:
SELECT * FROM
student
FULL JOIN
location
ON
student.student_id = location.student_id;
输出表——
完整连接的维恩图表示 –