no、Sname、Sage、Ssex、Sdept);教师关系 T(Tno、Tname、Tsex、Tage、Prof、Dept);课程关系 C(Cno、Cname、Tno、Sdept)。试构造以下SQL查询语言:1.列出所有选修了“002”号课程的同学的学号及姓名;2.列出“刘教授”所授课程的课程号和课程名;3.找出和“黄”姓教师拥有相同专业的教师;4.查询所有同时选修了“周”老师所授课程的同学的学号、姓名。".
本次SQL查询练习题涉及教学数据库中三个关系:学生关系S(Sno、Sname、Sage、Ssex、Sdept)、教师关系T(Tno、Tname、Tsex、Tage、Prof、Dept)和课程关系C(Cno、Cname、Tno、Sdept)。针对这些关系,我们试构造以下SQL查询语言:
1. 列出所有选修了“002”号课程的同学的学号及姓名
SELECT Sno, Sname
FROM S
WHERE Sno IN (SELECT Sno
FROM S, C
WHERE S.Sno = C.Sno and C.Cno = '002');
这个查询语句首先从学生关系S中选取学号和姓名,然后使用子查询来筛选出选修了002号课程的学生。通过IN子句将两个查询结果关联起来,最终得到所有选修了“002”号课程的同学的学号和姓名。
2. 列出“刘教授”所授课程的课程号和课程名
SELECT C.Cno, C.Cname
FROM C, T
WHERE T.Tname = '刘教授' and T.Tno = C.Tno;
这个查询语句从课程关系C和教师关系T中选取课程号和课程名,然后通过T.Tname = '刘教授'来筛选出刘教授所授课程的信息。
3. 找出和“黄”姓教师拥有相同专业的教师
SELECT T.Tname
FROM T
WHERE T.Dept = (SELECT Dept
FROM T
WHERE Tname LIKE '黄%');
这个查询语句首先通过子查询筛选出姓黄的教师所在的部门,然后在教师关系T中找出具有相同专业的教师。
4. 查询所有同时选修了“周”老师所授课程的同学的学号、姓名
SELECT S.Sno, S.Sname
FROM S, C, T
WHERE S.Sno = C.Sno and C.Tno = T.Tno
and T.Tname = '周'
and S.Sno IN (SELECT Sno
FROM S, C
WHERE S.Sno = C.Sno and C.Tno = T.Tno);
这个查询语句通过多表连接将学生关系S、课程关系C和教师关系T关联起来,然后通过多层嵌套的子查询来筛选出同时选修了“周”老师所授课程的同学的学号和姓名。
以上SQL查询语言的构造涉及了多表连接、子查询和条件筛选等操作,对于理解和掌握SQL查询语言的基本语法和用法具有一定的帮助。希望通过这些练习题,能够加深大家对SQL查询语言的理解和掌握,提高数据库操作的能力和水平。