MySQL数据库实例教程实训4_MySQL数据库实验四:嵌套查
询
实验四 嵌套查询
⼀、实验⽬的
掌握SELECT语句的嵌套使⽤,实现表的复杂查询,进⼀步理解SELECT语句的⾼级使⽤⽅法。
⼆、实验环境
三、实验⽰例
1、 查询与“刘晨”在同⼀个系学习的学⽣。
SELECT Sno,Sname,Sdept
FROM Student
WHERE Sdept IN
mysql高级教程视频
(SELECT Sdept
FROM Student
WHERE Sname= ‘ 刘晨 ’);
⽤⾃⾝连接完成
SELECT S1.Sno,S1.Sname,S1.Sdept
FROM Student S1,Student S2
WHERE S1.Sdept = S2.Sdept AND
S2.Sname = '刘晨';
2、查询选修了课程名为“信息系统”的学⽣学号和姓名
SELECT Sno,Sname ③ 最后在Student关系中
FROM Student 取出Sno和Sname
WHERE Sno IN
(SELECT Sno ② 然后在SC关系中出选
FROM SC 修了3号课程的学⽣学号
WHERE Cno IN
(SELECT Cno ① ⾸先在Course关系中出
FROM Course “信息系统”的课程号,为3号
WHERE Cname= ‘信息系统’
)
);
3、检索学C2课程的学号与姓名。
SELECT S#,SNAME FROM S
WHERE S# = SOME(SELECT S# FROM SC WHERE C# ='C2');
4、 检索⾄少有⼀门成绩超过学⽣S4⼀门成绩的学
⽣学号。
SELECT DISTINCT S# FROM SC
WHERE SCORE > SOME(SELECT SCORE FROM SC WHERE S#='S4');
5、 检索不学C2课程的学⽣姓名与年龄。
SELECT SNAME,AGE FROM S
WHERE S# <> ALL(SELECT S# FROM SC
WHERE C#= 'C2');
6、 检索平均成绩最⾼的学⽣学号。
SELECT S# FROM SC
GROUP BY S#
HAVING AVG SCORE >=
ALL(SELECT AVG(SCORE) FROM SC
GROUP BY S#);
7、查询所有选修了1号课程的学⽣姓名。
SELECT Sname
FROM Student
WHERE EXISTS
(SELECT *
FROM SC
WHERE Sno=Student.Sno AND Cno= ' 1 ');
8、 查询没有选修1号课程的学⽣姓名。
SELECT Sname
FROM Student
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE Sno = Student.Sno AND Cno='1');
9、查询选修了全部课程的学⽣姓名。
SELECT Sname
FROM Student
WHERE NOT EXISTS
(SELECT *
FROM Course
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE Sno= Student.Sno
AND Cno= Course.Cno
)
);
四、实验内容与步骤
1、检索WANG同学不学的课程的课程号。
2、 检索学号⽐WANG同学⼤,⽽年龄⽐他⼩的学⽣姓名。
3、 求年龄⼤于⼥同学平均年龄的男学⽣姓名和年龄。
4、 求年龄⼤于所有⼥同学年龄的男学⽣姓名和年龄。
5、检索全部学⽣都选修的课程的课程号与课程名。
6、检索选修课程包含LIU⽼师所授课程的学⽣学号。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论