SQL连接用于在两个或多个表之间建立关系。常见的连接方式有笛卡尔连接和自连接。
1.笛卡尔连接:
笛卡尔连接也称为交叉连接,是指将一张表中的每一行与另一张表中的每一行进行匹配,生成的结果集是两个表的行数的乘积。笛卡尔连接一般用于数据挖掘和大数据分析中。
实例1:假设我们有一个学生表students和一个课程表courses,它们的数据如下所示:
students表:
id | name |
---|---|
1 | Tom |
2 | Jerry |
3 | Mickey |
4 | Donald |
courses表:
id | course |
---|---|
1 | Math |
2 | English |
3 | Physics |
4 | Chemistry |
如果我们想要列出所有学生与所有课程的组合,可以使用笛卡尔连接:
SELECT *
FROM students, courses;
以上SQL语句将返回一个包含16行的结果集,其中每一行都是一组学生与课程的组合。
2.自连接:
自连接是指在一张表中通过使用别名,将其与自身连接。自连接常用于处理具有层次结构的数据表,例如组织架构和树形结构。
实例2:假设我们有一个员工表employees,它的数据如下所示:
employees表:
id | name | manager_id |
---|---|---|
1 | Tom | 3 |
2 | Jerry | 3 |
3 | Mickey | 4 |
4 | Donald | NULL |
如果我们想要查找每个员工的直接上级的姓名,可以使用自连接:
SELECT e.name, m.name AS manager
FROM employees e
LEFT JOIN employees m
ON e.manager_id = m.id;
以上SQL语句将返回一个包含4行的结果集,其中每一行表示一个员工以及他的直接上级的姓名。如果一个员工没有上级,则他的manager值为NULL。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SQL – 连接(笛卡尔连接和自连接) - Python技术站