掌握SQL连接查询:交叉、内、外连接详解及实例

0 下载量 39 浏览量 更新于2024-08-28 收藏 269KB PDF 举报
本章节主要讲解了6_2数据查询中的连接查询技术,这是SQL中处理多表数据交互的重要方法。连接查询根据连接类型可分为三种:交叉连接、内连接和外连接。 1. **交叉连接(Non-Restricted Join)** - 交叉连接(也称为笛卡尔积)是两个表中的所有记录进行无条件配对,生成的结果集包含了第一个表中的每一行与第二个表中的每一行的组合,但这种操作可能产生大量无关的记录,因为没有特定的连接条件,且效率较低,实际应用价值不大。 - 例如,`SELECT 列名 FROM 表名1 cross join 表名2` 的语句,如`SELECT 学号, 姓名, ... FROM 学生 cross join 班级`,结果将包含所有学生与所有班级的组合,包括没有实际关联的记录。 2. **内连接** - 内连接只保留两个表中满足连接条件的记录,分为等值连接(自然连接)和非等值连接。 - **等值连接(Natural Join)**: - 如`SELECT 列名 FROM 表名1 inner join 表名2 on 表名1.列名 = 表名2.列名`,例如查询学生和班级的匹配关系:`SELECT 学号, 姓名, ... FROM 学生 inner join 班级 on 学生.班级代码 = 班级.班级代码`,只显示有班级代码匹配的学生。 - **非等值连接**: - 当连接条件包含非等于(<>)等其他运算符时,用于连接不完全相等的记录,用得较少。 3. **自连接** - 自连接是指一个表与自身进行连接,常用于查找表内的相关数据。例如,查询与特定个体(如'李冬冬')同专业的教师信息:`SELECT Y.教师编号, Y.姓名, Y.专业 FROM 教师 X, 教师 Y WHERE X.专业 = Y.专业 AND X.姓名 = '李冬冬' AND Y.姓名 <> '李冬冬'`,通过别名区分不同的教师表。 4. **外连接** - 外连接允许至少一方的记录在结果集中存在空值(NULL),分为左外连接、右外连接和全外连接。 - 左外连接(LEFT OUTER JOIN)确保至少显示左侧表的所有记录,如果右侧没有匹配,则左侧记录右侧列显示NULL。例如,`SELECT 列名 FROM 表名1 left outer join 表名2 on 表名1.列名 = 表名2.列名`,用于查找每个学生的班级信息,即使某些学生未分配到班级也会显示。 总结来说,连接查询是数据库管理中不可或缺的技能,理解并熟练运用这些连接类型能够帮助我们有效地处理和分析多表数据,提升数据分析的效率和准确性。