数据库实验报告(六)

news/2024/10/17 10:25:04/

实验报告(六)

1、实验目的

(1)    掌握关联查询的用法

(2)    掌握集合查询的区别和用法

(3)    掌握EXISTS的用法

2、实验预习与准备

(1)    了解ANY,ALL的用法

(2)    了解Max,Min,In与ANY,ALL的等价规则

(3)    了解子查询的使用限制

(4)    了解非关联子查询的特点

(5)    了解关联子查询的特点

3、实验内容及步骤

(1)       查询入学成绩比本班平均入学成绩高的学生学号,姓名,班级和入学成绩(使用关联子查询)

select s.sno,s.sname,s.clno,sc.scorefrom student s,score scwhere sc.score > (select avg(score) from score) and s.sno=sc.sno;

(2)       查询没有选修“010002”号课程的学生姓名(使用Exists)

 

SELECT DISTINCT s.sno, s.sname
FROM student s
WHERE NOT EXISTS (SELECT *FROM score scWHERE sc.sno = s.sno AND sc.cno = '010002'
);

(3)  查询至少选修了姓名为“耿明”的学生所选修课程中一门课的学生的学号和姓名(使用Exists)

 

SELECT DISTINCT s.sno, s.sname
FROM student s
WHERE EXISTS (SELECT *FROM score scWHERE sc.sno = s.snoAND EXISTS (SELECT *FROM score sc2WHERE sc2.sno = '耿明'AND sc2.cno = sc.cno)
);

(4) 查询教授过张丹丹老师教授过的所有班级的教师姓名(使用Exists)

 

SELECT DISTINCT t.tname
FROM teacher t
WHERE EXISTS (SELECT *FROM class clWHERE EXISTS (SELECT *FROM course_class ccWHERE cc.tno = t.tnoAND cc.clno = cl.clno)AND EXISTS (SELECT *FROM course_class cc2WHERE cc2.tno = '张丹丹'AND cc2.clno = cl.clno)
);

(5) 查询入学成绩最高的和最低的学生的学号、姓名和入学成绩(集合查询)

 

select sno,sname,point from student where point=(select MAX(point) from student) or point=(select MIN(point) from student);

(6)查询期末平均成绩在85分以上的学生学号、姓名和出生日期

 

SELECT s.sno, s.sname, s.birth
FROM student s
JOIN score sc ON s.sno = sc.sno
GROUP BY s.sno, s.sname, s.birth
HAVING AVG(sc.score) > 85;

(7)查询每门课程最高分的学生的学号

SELECT cno, MAX(score) AS max_score
FROM score
GROUP BY cno;

(8)查询既选修了“大学英语”又选修了“金融学”的学生学号(至少写出使用连接查询、嵌套查询两种方法。思考:如果还要查询学生姓名呢?

SELECT s.sno
FROM student s
JOIN score sc1 ON s.sno = sc1.sno
JOIN score sc2 ON s.sno = sc2.sno
JOIN course c1 ON sc1.cno = c1.cno
JOIN course c2 ON sc2.cno = c2.cno
WHERE c1.cname = '大学英语' AND c2.cname = '金融学';

(9)查询没有任何学生选修的课程编号和课程名称及学分(写出使用外连接, in+非关联子查询和exists+关联子查询三种方法)

-- Using LEFT JOIN
SELECT c.cno, c.cname, c.credit
FROM course c
LEFT JOIN score sc ON c.cno = sc.cno
WHERE sc.sno IS NULL;-- Using IN with a subquery
SELECT cno, cname, credit
FROM course
WHERE cno NOT IN (SELECT cnoFROM score
);-- Using EXISTS with a subquery
SELECT c.cno, c.cname, c.credit
FROM course c
WHERE NOT EXISTS (SELECT *FROM score scWHERE sc.cno = c.cno
);


http://www.ppmy.cn/news/1222827.html

相关文章

BlockCanary

卡顿检测框架,比如Activity Service ,BroadcastResoleve等,或者有延时执行造成卡顿 针对这些情况进行监控 引用: 初始化: 捕获异常结果: 源码: 使用双重锁的单例模式,enable 跳转到通知 主线程的监视器 Loop循环调用消息 根据dispathMessage判断是否造成卡顿,也就是消息的间…

未来服务器操作系统的趋势与展望

摘要: 随着云计算、大数据和人工智能不断的发展,服务器操作系统也需要随之进行新一轮的升级。本文通过分析当前服务器操作系统的现状,探讨了未来服务器操作系统的趋势和展望,并针对一些关键问题提出了解决方案。 一、引言 服务器…

使用postman测试

第一步: 第二步: 第三步:添加请求 第四步:填写请求 代码实现自动关联的位置: 为相关联的接口设置环境: 使用设置的环境变量: 参数化实现测试:测试脚本中仅测试数据不一样&#xff…

探索arkui(1)--- 布局(线性/层叠/弹性)

前端开发布局是指前端开发人员宣布他们开发的新网站或应用程序正式上线的活动。在前端开发布局中,开发人员通常会展示新网站或应用程序的设计、功能和用户体验,并向公众宣传新产品的特点和优势。前端开发布局通常是前端开发领域的重要事件,吸…

SQLMAP --TAMPER的编写

跟着师傅的文章进行学习 sqlmap之tamper脚本编写_sqlmap tamper编写-CSDN博客 这里学习一下tamper的编写 这里的tamper 其实就是多个绕过waf的插件 通过编写tamper 我们可以学会 在不同过滤下 执行sql注入 我们首先了解一下 tamper的结构 这里我们首先看一个最简单的例子…

C++知识点梳理:C++ templates

c模板包括&#xff1a;类模板、类&#xff08;非模板类和模板类&#xff09;方法模板、函数模板、别名模板、变量模板。 类模板模板参数列表说明&#xff1a; 1&#xff09;类定义 仅模板参数列表声明&#xff0c;template<>行。 类名后无需参数说明<>。 2&#xf…

idea查看UML类图

idea查看UML类图 一、如何查看UML类图 1.1 选择需要查看的类或者包&#xff0c;鼠标右键&#xff0c;选择Diagrams->Show Diagram 1.2 对于UML类图中的包&#xff0c;选中后点击鼠标右键-> Expand Nodes(展开节点) 展开前 展开后 1.3 展开后分布比较凌乱&#xff…

2023年第九届数维杯国际大学生数学建模挑战赛A题

2023年第九届数维杯国际大学生数学建模挑战赛正在火热进行&#xff0c;小云学长又在第一时间给大家带来最全最完整的思路代码解析&#xff01;&#xff01;&#xff01; A题思路解析如下&#xff1a; 完整版解题过程及代码&#xff0c;稍后继续给大家分享~ 更多题目完整解析点…