
SQL多表连接查询
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
简介:本教程深入浅出地讲解了如何使用SQL进行多表连接查询,包括内连接、外连接等不同类型的连接方式及其应用场景。
SQL 多表连接查询是指在 SQL 语句中将多个表进行关联以获取不同表格中的数据。这种查询可以分为外连接、内连接及交叉连接等多种类型。
一、外连接
1. 左连接(LEFT JOIN)
左连接返回第一个表即左表的所有行,如果该表的某一行与第二个或右表没有匹配项,则结果中对应的部分为空值(NULL)。
SQL 语句:`SELECT * FROM student LEFT JOIN course ON student.ID = course.ID`
执行结果会包含学生信息中的所有记录,并且对于那些未在课程表中有对应的项目,其返回的将是空值(NULL)。
2. 右连接(RIGHT JOIN)
右连接返回第二个或右表的所有行。如果左表中某一行与右表没有匹配项,则结果中对应的部分为空值(NULL)。
SQL 语句:`SELECT * FROM student RIGHT JOIN course ON student.ID = course.ID`
执行结果会包含课程信息中的所有记录,并且对于那些未在学生表中有对应的项目,其返回的将是空值(NULL)。
3. 完全外连接(FULL JOIN)
完全外连接将两个表格的所有行都包括进来。如果右表中某一行没有匹配项,则结果中对应的部分为空值(NULL),同样地,左表中的情况也是如此。
SQL 语句:`SELECT * FROM student FULL JOIN course ON student.ID = course.ID`
执行结果会包含学生和课程信息的全部记录,并且对于那些在对方表格里未找到对应的项目,其返回的将是空值(NULL)。
二、内连接
内连接(INNER JOIN)只返回两个表中满足条件的数据行。
SQL 语句:`SELECT * FROM student INNER JOIN course ON student.ID = course.ID`
执行结果会仅包含那些在学生和课程表格中有对应关系的数据项,即只有当两边都有匹配时才会显示出来。
三、交叉连接
交叉连接(CROSS JOIN)返回的是两个表的笛卡尔积集合。
SQL 语句:`SELECT * FROM student CROSS JOIN course`
四、处理一对多或多对一的关系
在实际应用中,有时需要处理如学生与课程之间的一对多关系。此时可以创建一个中间关联表格来存储这些信息,并通过该表格进行查询操作以获取所需数据。
例如:
SQL 语句:`SELECT s.Name, C.Cname FROM student_course AS sc LEFT JOIN student AS s ON s.Sno = sc.Sno LEFT JOIN course AS c ON c.Cno = sc.Cno`
执行结果会显示学生选课的具体情况,包括了学生的姓名和所选择的课程名称。
全部评论 (0)


