当前课程知识点:数据库系统原理与开发 > 第3章 数据库操作SQL语言 > 3.4 数据查询SQL语句 > 3.4.3 多表关联查询
同学们,大家好!
我是主讲教师陆鑫
本节将学习数据库课程
第3.4小节 数据查询SQL语句的多表关联查询
本节学习目标如下:
1)掌握子查询与多表关联查询
2)掌握内连接关联多表查询
3)掌握外连接关联多表查询
下面开始学习数据查询SQL语句的多表关联查询
一、子查询与多表关联
在实际应用中
通常需要关联多表才能获得所需的信息
在SELECT查询语句中
可使用子查询方式实现多表关联查询
子查询SQL语句基本格式如下:
例如 在选课管理系统数据库中
希望能检索出“计算机学院”的教师名单
该操作需要关联教师信息表Teacher和学院信息表College
才能获得这些数据
这里可采用子查询方法实现两表关联查询
其查询SQL语句如下
数据查询SQL语句及执行结果:
将该SQL语句提交数据库服务器执行
其操作界面如下
在数据库管理工具查询编辑页面中
输入查询SQL语句
然后点取“运行”按钮
若该SQL语句正确执行
则该页面的数据输出框显示结果集数据
二、使用连接关联多表查询
在使用多个表查询时
子查询只有在结果数据均来自一个表的情况下才有用
但如果需要从两个或多个表中获取结果数据
就不能使用子查询
而需要采用连接关联多表查询
连接关联多表查询SQL语句基本格式如下
在连接关联多表查询SQL语句中
关系表之间通过主键与外键的关联实现连接
查询结果数据集来自多个表中的属性列
例如 在选课管理系统数据库中
希望获得各个学院的教师信息列表
包括学院名称、教师编号、教师姓名、教师性别、职称等信息
要求按学院名称、教师编号分别排序输出
其查询SQL语句如下
首先输出指定列
FROM 教师表和学院表
加入WHERE子句条件
加入排序条件
数据查询SQL语句及执行结果如下:
将该SQL语句提交数据库服务器执行
其操作界面如下
在数据库管理工具查询编辑页面中
输入查询SQL语句
然后点取“运行”按钮
若该SQL语句正确执行
则该页面的数据输出框显示结果集数据
三、SQL JOIN …ON连接查询语句
在SQL语言中
实现多表连接关联查询还可以使用JOIN…ON关键词的SQL语句格式
其中两表连接关联查询的JOIN…ON的SQL语句格式如下:
JOIN…ON语句还可以支持多于两个表的连接关联查询
例 在选课管理系统数据库中
希望获得各个学院的教师信息
包括学院名称、教师编号、教师姓名、教师性别、职称等信息
要求按学院名称、教师编号分别排序输出
其查询SQL语句如下:
首先输出目标列数据
指定从教师表连接学院表
加入连接条件
加入排序条件
数据查询SQL语句及执行结果如下:
将该SQL语句提交数据库服务器执行
其操作界面如下
在数据库管理工具查询编辑页面中
输入查询SQL语句
然后点取“运行”按钮
若该SQL语句正确执行
则该页面的数据输出框显示结果集数据
四、外部连接
前节介绍的多表连接方式在SELECT查询语句称为内部连接
在一些特殊情况下
如关联表中一些行的主键与外键不匹配
查询结果集就会丢失部分数据
例如 在选课管理数据库中
希望查询所有开设课程的学生选课情况
包括课程名称、任课教师、选课人数
这需要关联课程信息表COURSE、教师信息表TEACHER
开课计划表PLAN、选课注册信息表REGISTER
其连接查询的SQL语句如下:
首先输出课程名称、教师
以及选课人数
从课程表连接开课计划表
加入教师表
加入注册表
按照课程名称、教师姓名进行分组
数据查询SQL语句及执行结果:
将该SQL语句提交数据库服务器执行
其操作界面如下
在数据库管理工具查询编辑页面中
输入查询SQL语句
然后点取“运行”按钮
若该SQL语句正确执行
则该页面的数据输出框显示结果集数据
问题:在上面的内连接查询中
只能找出有学生注册的课程名称和选课人数
但不能找出没有学生注册的课程名称
在SQL 应用中
有时候也希望输出那些不满足连接条件的元组数据
这时,可使用JOIN…ON外连接方式实现
其实现外连接有三种形式
具体如下:
左连接
即使没有与右表关联列值匹配
也从左表返回所有的行
右连接
即使没有与左表关联列值匹配
也从右表返回所有的行
全连接
同时进行左连接和右连接
就返回所有行
例如 在选课管理系统数据库中
希望能查询所有开设课程的学生选课情况
包括课程名称、任课教师、选课学生人数
这需要关联课程信息表COURSE、开课计划表CPLAN
教师信息表TEACHER、选课注册信息表REGISTER
若使用左外连接查询
该JOIN…ON连接查询的SQL语句如下:
输出课程名称、教师姓名
计数选课人数
指定从课程表连接开课计划表
连接教师表
左外连接注册表
按照课程名称、教师姓名进行分组
数据查询SQL语句及执行结果:
将该SQL语句提交数据库服务器执行
其操作界面如下
在使用左外连接的查询中
结果集包括所有开设课程的选课人数
即便一些课程选课人数为0
好了,本节学习结束!
-1.1 数据库及其系统概念
-1.2 数据库技术发展
-1.3 数据库应用系统
-1.4 典型数据库管理系统
-1.5 PostgreSQL对象-关系数据库系统软件
-第1章 数据库系统概论--本章单元测试
-2.1 关系及其相关概念
-2.2 关系模型原理
-2.3 PostgreSQL数据库关系操作实践
-第2章 数据库关系模型--本章单元测试
-3.1 SQL语言概述
-3.2 数据定义SQL语句
-3.3 数据操纵SQL语句
-3.4 数据查询SQL语句
-3.5 数据控制SQL语句
-3.6 视图SQL语句
-3.7 PostgreSQL数据库SQL实践
-第3章 数据库操作SQL语言--本章单元测试
-4.1 数据库设计概述
-4.2 E-R模型方法
-4.3 数据库建模设计
-4.4 数据库规范化设计
-4.5 数据库设计模型SQL实现
-4.6 基于Power Designer的数据库设计建模实践
--4.6 基于Power Designer的数据库设计建模实践
-第4章 数据库设计与实现--本章单元测试
-5.1 数据库管理概述
-5.2 事务管理
--5.2 事务管理
-5.3 并发控制
-5.4 安全管理
-5.5 数据库备份与恢复
-5.6 PostgreSQL数据库管理项目实践
-第5章 数据库管理--本章单元测试
-6.1 数据库连接技术
-6.2 数据库存储过程
-6.3 数据库触发器
-6.4 数据库游标
-6.5 嵌入式SQL编程
-第6章 数据库应用编程--本章单元测试
-7.1 NoSQL数据库概述
-7.2 列存储数据库
-7.3 键值对数据库
-7.4 文档型数据库
-7.5 图形数据库
-7.6 HBase数据库项目实践
-第7章 NoSQL数据库技术--本章单元测试
-期末测试--期末测试