多关系数据查询:从两表连接到综合应用

输入 SQL → 逐行配对 → 判断保留谁 → 看最终结果

情境导入 · 教务管理

“学号为 s5 的学生选了哪些课?”

假设你是教务管理员,校长提出了这个问题。你打开数据库,发现学生的姓名保存在学生表 s 中,选课记录保存在选课表 sc 中。

信息分别放在两张表里,怎样查出“谁选了什么课”?关键是找到两表共同的学号 sno,让同一名学生的信息配上对。

这就是多关系数据查询:通过共同字段,把不同表中的相关信息连接起来。

一、两张表的连接方式
01 / 05 · 内连接

INNER JOIN:只有配对成功才保留

同学号找得到选课记录,才把两张表的数据合成一行。

1输入 SQL,看每句在做什么

可修改语句,再点击“执行 SQL”
同一个查询,两种连接写法

两种语句都用学号匹配,得到的查询结果完全一样。

点击一种写法,下方 SQL 会切换。JOIN + ON 把连接关系写得更清楚;WHERE 把两表的连接条件放在筛选子句中。这里讨论的是内连接。

SQL 输入框使用本页的学生表 s 和选课表 sc
支持本页示例中的连接语句与字段。

2按“下一步”看逐行配对

同一行高亮,表示当前正在比较的记录
左表:学生表 s3 名学生
sno 学号sn 姓名
连接条件 ON
s.sno = sc.sno
比较学号是否相同
右表:选课表 sc4 条选课记录
sno 学号cno 课程
s9 有一条选课记录,但学生表中没有 s9。
准备执行
点击“执行 SQL”开始

先看左表和右表的数据,再逐步查看哪些行会进入结果。

0 / 0 步

3结果是怎么一行行生成的?

等待执行
点击“执行 SQL”并逐步演示,结果会出现在这里。