查询“李琳”老师所授课程的课程名称

本文介绍如何使用SQLjoin查询语句,从teachers、teaching和course三个表中检索出宁波财经学院李琳讲师所授的课程名称。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

10-3 查询“李琳”老师所授课程的课程名称
分数 6
作者 邵煜
单位 宁波财经学院
本题目要求编写SQL语句,
检索出teacher、teaching、course表中“李琳”老师所授课程的课程名称。

提示:请使用join连接查询语句作答。

表结构:
请在这里写定义表结构的SQL语句。例如:

CREATE TABLE teachers (
tno char(3) ,
tname char(8),
ps char(10),
tbirthday date ,
tdept char(16) ,
tsex char(2),
PRIMARY KEY (tno)
) ;

CREATE TABLE teaching (
sid int ,
cterm int,
class char(10) DEFAULT NULL,
cno char(7) NOT NULL,
tno char(3) DEFAULT NULL,
period int DEFAULT NULL,
PRIMARY KEY (sid)
) ;

CREATE TABLE course (
cno char(7) ,
cname varchar(20) NOT NULL,
cpno char(7),
ccredit int NOT NULL,
PRIMARY KEY (cno)
) ;

表样例
请在这里给出上述表结构对应的表样例。例如

teachers表:

tno tname ps tbirthday tdept tsex
001 谭浩强 教授 1958-01-01 计科 男
002 王珊 教授 1962-02-13 计科 女
003 萨师煊 教授 1953-05-01 计科 男
004 严蔚敏 副教授 1968-07-02 软工 女
005 李琳 讲师 1988-11-15 软工 女
006 韩万江 助教 1992-10-17 信管 男
teaching表:

sid cterm class cno tno period
1 1 17物流1 0000011 001 36
2 1 17物流1 0000034 002 72
3 3 17物流1 0000052 003 60
4 1 17物流1 0000027 004 108
5 2 17物流1 0000039 005 36
6 6 17物流1 0000005 006 72
course表:

cno cname cpno ccredit
0000001 数据库OCP考证 NULL 4
0000002 C语言基础 0000027 9
0000003 Linux操作系统 0000013 5
0000010 数据结构 0000002 4
0000039 基础会计 NULL 2
输出样例:
请在这里给出输出样例。例如:

cname
基础会计
代码长度限制
16 KB
时间限制
400 ms
数据库
MySQL
结果输出要求
严格对比顺序与数据

select c.cname from teachers a 
join teaching b 
on a.tno=b.tno 
join course c 
on b.cno=c.cno 
where a.tname='李琳'
### 查询分析 为了查询计算机科学专业的学生“刘晨”所选修的课程名称,可以基于关系代数中的三张(`Student`, `Course`, 和 `SC`),通过嵌套查询实现目标。以下是具体方法: #### SQL 实现 ```sql SELECT DISTINCT cname FROM Course WHERE cno IN ( SELECT cno FROM SC WHERE sno IN ( SELECT sno FROM Student WHERE sname = '刘晨' AND smajor = '计算机科学' -- 这里限定专业为计算机科学 ) ); ``` 此查询的核心逻辑在于逐步筛选符合条件的数据集: - 首先,在子查询中定位名为“刘晨”的学生记录,并进一步过滤其所属专业是否为“计算机科学”。这一步的结果是一个满足条件的学生编号集合[^1]。 - 接着,利用上述学生编号集合,查找这些学生对应的已选课程编号集合[^2]。 - 最终,依据查得的课程编号集合,从 `Course` 中提取具体的课程名称。 #### 结果解释 如果数据集中存在匹配项,则返回的是所有由“刘晨”且属于“计算机科学”专业所选修的课程名称;如果没有找到任何匹配项,则结果为空。 --- ### 示例验证 假设数据库中有以下数据结构和内容: - **Student** :存储学生基本信息 (sno, sname, smajor); - **SC** :记录学生的选课情况 (sno, cno, grade); - **Course** :描述每门课程的信息 (cno, cname)。 | sno | sname | smajor | |-----------|-------|-------------| | 201215122 | 刘晨 | 计算机科学 | | sno | cno | grade | |-----------|-------|-------| | 201215122 | C001 | 90 | | 201215122 | C002 | 80 | | cno | cname | |-------|------------| | C001 | 数据库 | | C002 | 数学 | 执行以上SQL语句后得到的结果将是: - 数据库 - 数学 这是由于这两门课程均被“刘晨”选修并符合他的专业领域设定[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值