MySQL数据库实验三 数据高级查询

编程入门 行业动态 更新时间:2024-10-26 23:33:51

MySQL数据库实验三 数据<a href=https://www.elefans.com/category/jswz/34/1770104.html style=高级查询"/>

MySQL数据库实验三 数据高级查询

★观前提示:本篇内容为mysql数据库实验,代码内容经测试过,可能一小部分有所疏漏,也有会不符合每个人实验的要求的地方,因此以下内容建议仅做思路参考,。

一、实验目的

掌握复杂数据查询操作。

二、实验要求

掌握各种连接查询、嵌套查询的使用。

★温馨提示:以下内容均已经过测试,不过难免会有疏漏,但是代码实现大多数思路及实现经测验都是正确的。

三、实现内容及步骤

(1) 查询每个学生及其选课情况。

SELECT student.sname '学生姓名',courseame '已选课'
FROM student,course,sc
WHERE student.sno=sc.sno AND courseo=sco;

(2) 查询每门课的间接先修课。

SELECT came '课程',cpame '先修课'
FROM course c,course cp
WHERE c.cpno=cpo;

(3) 将STUDENT,SC进行右连接。

SELECT student.*,sco,sc.grade
FROM student
RIGHT OUTER JOIN sc
ON student.sno=sc.sno

(4) 查询既选修了2号课程又选修了3号课程的学生姓名、学号。

SELECT student.sno,student.sname
FROM student,sc
WHERE student.sno=sc.sno
AND cno='2' AND sc.sno IN(SELECT sno
FROM sc
WHERE cno='3');

(5) 查询和刘晨同一年龄的学生。

SELECT student.sname '姓名',student.sage '年龄'
FROM student
WHERE student.sage=(
SELECT student.sage
FROM student
WHERE student.sname='刘晨'
);

(6) 选修了课程名为“数据库”的学生姓名和年龄。

SELECT student.sname,student.sage
FROM student,course,sc
WHERE sc.sno=student.sno AND sco=courseo AND courseame='数据库';

(7)查询其他系比IS系任一学生年龄小的学生名单。

SELECT student.*
FROM student
WHERE sage<ANY(SELECT sage FROM student WHERE sdept ='计科') and sdept <>'计科';

(8) 查询其他系中比IS系所有学生年龄都小的学生名单。

SELECT sno,sname
FROM student
WHERE sdept!='计科' AND sage < all(
SELECT sage
FROM student
WHERE sdept='计科'
);

(9) 查询选修了全部课程的学生姓名。

SELECT sname
FROM student
WHERE NOT EXISTS(
SELECT *
FROM course
WHERE NOT EXISTS(
SELECT *
FROM sc
WHERE sc.sno=student.sno and sco=courseo
)
);

(10) 查询计算机系学生及其性别是男的学生。

SELECT sname
FROM student
WHERE ssex='男' AND sdept='计科';

(11) 查询选修课程1的学生集合和选修2号课程学生集合的差集。

SELECT DISTINCT student.*
FROM student,sc
WHERE student.sno NOT IN(
SELECT sno
FROM sc
WHERE sco = 2
)AND sco=1;

(12) 查询李丽同学不学的课程的课程号。

SELECT cno
FROM course
WHERE NOT EXISTS(
SELECT *
FROM sc
WHERE sc.sno=(
SELECT sno
FROM student
WHERE sname='李逍遥'
)AND sco=courseo
);

(13) 查询选修了3号课程的学生平均年龄。

SELECT AVG(sage)
FROM student,sc
WHERE student.sno=sc.sno AND sco='3';

(14) 求每门课程学生的平均成绩。

SELECT sco,avg(sc.grade)
FROM sc
GROUP BY sco;

(15) 统计每门课程的学生选修人数(超过3人的才统计)。要求输出课程号和选修人数,结果按人数降序排列,若人数相同,按课程号升序排列。

SELECT courseo,COUNT(sc.sno)
FROM course,sc
WHERE courseo=sco
GROUP BY courseo
HAVING COUNT(sc.sno)>3
ORDER BY COUNT(sco)DESC,courseo ASC;

(16) 查询学号比刘晨大,而年龄比他小的学生姓名。

SELECT student.sname
FROM student
WHERE student.sno > (
SELECT student.sno
FROM student
WHERE student.sname='刘晨'
) AND student.sage < (
SELECT student.sage
FROM student
WHERE student.sname='刘晨'
);

(17) 求年龄大于所有女同学年龄的男同学姓名和年龄

SELECT student.sname,student.sage
FROM student
WHERE student.sage > all(
SELECT student.sage
FROM student
WHERE student.ssex='女'
)AND ssex='男';
四、实验总结

基本掌握了复杂数据查询操作,在实验中遇到了一些问题,
如:实现的方式不对,没有出现正确结果;
还有个别数据,一开始并没有完善,因此后期进行了修改。
这些问题,随着探索、思考,以及交流,最后都成功得到了解决。并成功掌握了复杂数据查询操作。

2022.6.14记录:Code_流苏(CSDN)
如有任何疑问,评论回复,看到即回,欢迎大家多多交流学习!
★以上实验内容仅供参考。

更多推荐

MySQL数据库实验三 数据高级查询

本文发布于:2024-02-12 00:06:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1684479.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:高级   数据库   数据   MySQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!