文理学院数据库技术应用实验报告9

文理学院数据库技术应用实验报告9

实验名称数据库子查询实验日期2024年11月15日
课程名称数据库技术应用实验项目数据库子查询的使用

一、实验目的

要求,通过sql脚本导入数据库,并在stuinfo数据库中对数据进行查询。使用select子查询进行查询操作。

stuinfo数据库脚本如下:

create database stuinfo;
USE stuinfo;
CREATE TABLE student (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
sNo CHAR(10) NOT NULL,
sName VARCHAR(20) NOT NULL,
sex CHAR(2),
birthday DATE,
deptName VARCHAR(30),
remark VARCHAR(80)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;CREATE TABLE course (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
cNo CHAR(5) NOT NULL,
cName VARCHAR(30) NOT NULL,
credit TINYINT UNSIGNED,
remark VARCHAR(100)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;CREATE TABLE score (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
sId INT UNSIGNED NOT NULL,
cId INT UNSIGNED NOT NULL,
grade TINYINT UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;INSERT INTO student (id, sNo, sName, sex, birthday, deptName, remark) VALUES
(1, '1308013101', '陈斌', '男', '1993-03-20', '软件131', NULL),
(2, '1308013102', '张洁', '女', '1996-02-08', '软件131', NULL),
(3, '1308013103', '郑先超', '男', '1994-04-25', '软件131', NULL),
(4, '1308013104', '徐孝兵', '男', '1994-08-06', '软件131', NULL),
(5, '1308013105', '王群', '女', '1995-03-27', '软件131', NULL),
(6, '1309122501', '刘威', '男', '1994-07-13', '网络131', NULL),
(7, '1309122502', '沈雁斌', '男', '1994-05-28', '网络131', NULL),
(8, '1309122503', '杨群', '女', '1995-10-18', '网络131', NULL),
(9, '1309122504', '蒋维维', '男', '1994-10-19', '网络131', NULL),
(10, '1309122505', '杨璐', '女', '1995-09-26', '网络131', NULL),
(11, '1312054901', '王林林', '男', '1994-04-16', '机电131', NULL),
(12, '1312054902', '杨一超', '男', '1994-08-27', '机电131', NULL),
(13, '1312054903', '张伟', '男', '1995-01-03', '机电131', NULL),
(14, '1312054904', '田翠萍', '女', '1994-10-20', '机电131', NULL),
(15, '1312054905', '周伟', '男', '1995-09-10', '机电131', NULL);INSERT INTO course (id, cNo, cName, credit, remark) VALUES
(1, '01001', 'C语言程序设计', 5, '计算机类专业课程'),
(2, '01002', '数据结构', 4, '计算机类专业课程'),
(3, '01003', 'Java程序设计', 4, '计算机类专业课程'),
(4, '02001', '网络基础', 3, '计算机类专业课程'),
(5, '02002', '数据库原理及应用', 4, '计算机类专业课程'),
(6, '02003', '操作系统', 4, '计算机类专业课程'),
(7, '09001', '机械设计基础', 5, NULL),
(8, '09002', '机械制造基础', 4, NULL),
(9, '09003', '机械制图', 4, NULL);INSERT INTO score (id, sId, cId, grade) VALUES
(1, 1, 1, 72),
(2, 1, 2, 56),
(3, 1, 3, 77),
(4, 2, 1, 85),
(5, 2, 2, 73),
(6, 2, 3, 90),
(7, 3, 1, 79),
(8, 4, 1, 82),
(9, 5, 1, 63),
(10, 6, 4, 84),
(11, 6, 5, 92),
(12, 6, 6, 71),
(13, 11, 7, 87),
(14, 11, 8, 90),
(15, 11, 9, 95);

二、实验原理

Select子查询

三、实验设备、材料

mysqlNavicat软件

四、实验步骤

1、查询课程编号(cnocourse表),课程名称(cnamecourse表)及对应的成绩(gradescore表)

SELECT * FROM course;
SELECT * FROM score;
SELECT * FROM student;SELECT course.cNo, course.cName, score.grade
FROM course
JOIN score ON course.id = score.id;

2、查询学生姓名(snamestudent表)、课程名称(cnamecourse表)及对应的成绩(gradescore表);

SELECT * FROM course;
SELECT * FROM score;
SELECT * FROM student;SELECT student.sName, course.cName, score.grade
FROM score
JOIN student ON score.id = student.id
JOIN course ON score.id = course.id;

3、查询选修了’计算机类专业课程(remark)’学生姓名(cName),学生编号,课程名称及对应成绩

SELECT * FROM course;
SELECT * FROM score;
SELECT * FROM student;SELECT st.sName,st.sNo,co.cName,sc.grade
FROM score sc
JOIN student st ON st.id = sc.sId
JOIN course co ON co.id = sc.cId
WHERE co.remark = '计算机类专业课程';

4、查询在1994年后出生的学生姓名,出生日期、及成绩;

SELECT * FROM course;
SELECT * FROM score;
SELECT * FROM student;SELECT student.sName,student.birthday,score.grade
FROM student JOIN score ON student.id=score.sId
WHERE YEAR(student.birthday) >'1994';

5、查询网络131班学生学号,姓名,班级 ,课程id和成绩;

SELECT student.sNo,student.sName,student.deptName
FROM score JOIN student ON score.sId = student.id
WHERE student.deptName = '网络131';

子查询1:

1、查询成绩最低分及对应学生姓名和课程名称

SELECT student.sName,course.cName,score.grade
FROM score JOIN student ON student.id=score.sId
JOIN course ON course.id=score.sId
WHERE score.grade=(SELECT min(grade)FROM score);

2、查询与学号sno=1308013101的同学,在同一个班级的学生名单。

SELECT * FROM student
WHERE deptname = (SELECT deptname FROM student WHERE sno = '1308013101');

3、查询选修了01001课程且成绩高于该课程平均分的信息:学生学号,姓名,班级,课程编号、名称和成绩。

SELECT * FROM course;
SELECT * FROM score;
SELECT * FROM student;SELECT student.sNo,student.sName,student.deptName,course.cNo,course.cName,score.grade
FROM score
JOIN student ON student.id=score.sId 
JOIN course ON course.id=score.cId
WHERE course.cNo = '01001' AND score.grade > (SELECT AVG(grade) FROM score WHERE cNo = '01001');

子查询2:

1、查询选修了课程编号con=01001的学生名单。

SELECT * FROM student WHERE id in(
SELECT sid FROM score JOIN course
on cid=course.id WHERE cno='01001')

2、查询学号=1308013101 的学生选修的课程信息

SELECT course.*
FROM course
JOIN score ON course.id = score.cId
JOIN student ON score.sId = student.id
WHERE student.sNo = '1308013101';

3、查询没有选修课的女同学名单。

SELECT * FROM student WHERE sex='女' AND
id not in (SELECT sid FROM score);

4、查询有选修课的女同学名单

SELECT * FROM student WHERE sex='女' AND
EXISTS ( SELECT * FROM score WHERE student.id=sid);

5、查询比1308013101同学任何科目分低的全部学生、课程、成绩信息。

SELECT DISTINCT s2.sName AS studentName,c2.cName AS courseName,sc2.grade AS Grade
FROM student s2
JOIN score sc2 ON s2.id = sc2.sId
JOIN course c2 ON sc2.cId = c2.id
WHERE EXISTS (SELECT 1 FROM score sc1 JOIN student s1 ON sc1.sId = s1.idWHERE s1.sNo = '1308013101'AND sc1.cId = sc2.cIdAND sc1.grade > sc2.grade);

6、查询比1308013101所有成绩低的全部学生、课程、成绩信息。

SELECT s.sName AS StudentName, c.cName AS CourseName, sc.grade AS Grade
FROM student s
JOIN score sc ON s.id = sc.sId 
JOIN course c ON sc.cId = c.id
WHERE s.sNo <> '1308013101'AND NOT EXISTS (SELECT 1FROM score sc_AWHERE sc_A.sId = (SELECT id FROM student WHERE sNo = '1308013101')AND sc_A.cId = sc.cIdAND sc_A.grade <= sc.grade);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/886991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu:20.04安装协议逆向工具netzob

创建容器 docker run -d --name ubuntu_env ubuntu:20.04 /bin/bash -c "while true; do sleep 1; done" 63a8f5cf5431a930671ff0e7bb2b667adf001efb05fd7261da244879d2699bec 进入容器 PS E:\src> docker exec -it ubuntu_env /bin/bash 安装常用工具 apt upda…

SpringBoot实现WebSocket

参考链接&#xff1a;https://www.kancloud.cn/king_om/mic_03/2783864 一、环境搭建 1.创建SpringBoot项目&#xff0c;引入相关依赖 <dependencies><!-- Spring Boot核心启动器&#xff0c;引入常用依赖基础 --><dependency><groupId>org.springf…

uni-app快速入门(八)--常用内置组件(上)

uni-app提供了一套基础组件&#xff0c;类似HTML里的标签元素&#xff0c;不推荐在uni-app中使用使用div等HTML标签。在uni-app中&#xff0c;对应<div>的标签是view&#xff0c;对应<span>的是text&#xff0c;对应<a>的是navigator&#xff0c;常用uni-app…

早期超大规模语言模型的尝试——BLOOM模型论文解读,附使用MindSpore和MindNLP的模型和实验复现

背景 预训练语言模型已经成为了现代自然语言处理pipeline中的基石&#xff0c;因为其在少量的标注数据上产生更好的结果。随着ELMo、ULMFiT、GPT和BERT的开发&#xff0c;使用预训练模型在下游任务上微调的范式被广泛使用。随后发现预训练语言模型在没有任何额外训练的情况下任…

【团购核销】抖音生活服务商家应用快速接入②——商家授权

文章目录 一、前言二、授权流程三、授权Url3.1 Url参数表3.2 授权能力表3.3 源码示例 四、授权回调4.1 添加授权回调接口4.2 授权回调接口源码示例 五、实际操作演示六、参考 一、前言 目的&#xff1a;将抖音团购核销的功能集成到我们自己开发的App和小程序中 【团购核销】抖音…

解决 Android 单元测试 No tests found for given includes:

问题 报错&#xff1a; Execution failed for task :testDebugUnitTest. > No tests found for given includes: 解决方案 1、一开始以为是没有给测试类加public修饰 2、然后替换 Test 注解的包可以解决&#xff0c;将 org.junit.jupiter.api.Test 修改为 org.junit.Tes…

gbase8s之mysql的show命令实现

第一步&#xff1a;生成show.sh脚本 cat /home/gbase/show.sh #!/bin/bash #作者&#xff1a;乡村野中医 #创作时间2024-11-21 #脚本名称show.sh function show(){ #echo $# if [ "xdatabases" x$1 ] then echo "select name from sysdatabases;"|…

android 实现答题功能

一、效果 二、实现思路 1、界面实现 实现起来其实不难&#xff0c;首先我们可以看到&#xff0c;界面是由答题进度、题目、选项ABCD组成&#xff0c;现在就是要考虑实现方式&#xff0c;答题进度可以使用Textviewprogressbar实现&#xff0c;题目直接使用Textview&#xff0c;…

正排索引和倒排索引

一、简介 正排索引&#xff1a;一个未经处理的数据库中&#xff0c;一般是以文档ID作为索引&#xff0c;以文档内容作为记录。 倒排索引&#xff1a;Inverted index&#xff0c;指的是将单词或记录作为索引&#xff0c;将文档ID作为记录&#xff0c;这样便可以方便地通过单词或…

Django一分钟:django中收集关联对象关联数据的方法

场景&#xff1a;我有一个模型&#xff0c;被其它多个模型关联&#xff0c;我配置了CASCADE级联删除&#xff0c;我想要告知用户删除该实例之后&#xff0c;哪些关联数据将会被一同删除。 假设我们当前有这样一组模型&#xff1a; class Warehouse(models.Model):""…

卷积神经网络各层介绍

目录 1 卷积层 2 BN层 3 激活层 3.1 ReLU&#xff08;Rectified Linear Unit&#xff09; 3.2 sigmoid 3.3 tanh&#xff08;双曲正切&#xff09; 3.4 Softmax 4 池化层 5 全连接层 6 模型例子 1 卷积层 卷积是使用一个卷积核&#xff08;滤波器&#xff09;对矩阵进…

【工控】线扫相机小结 第四篇

背景 这一片主要是对第三篇继续补充。话说上一篇讲到了两种模式的切换&#xff0c;上一篇还遗留了一个Bug&#xff0c;在这一篇里进行订正&#xff01; 代码回顾 /// <summary>/// 其实就是打开触发/// </summary>void SetLineSacanWorkMode(){-----首先设置为帧…

AI 大模型重塑软件开发的未来

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

【软考】系统架构设计师-计算机系统基础(4):计算机网络

计算机网络功能&#xff1a;数据通信、资源共享、管理集中化、分布式处理、负载均衡 5G高峰速率&#xff1a;10Gbit/s 广域网&#xff08;因特网&#xff09;/城域网/局域网&#xff08;以太网&#xff09; 总线型&#xff1a;利用率低&#xff0c;易冲突&#xff0c;干扰大…

Ultiverse 和web3新玩法?AI和GameFi的结合是怎样

Gamef 和 AI 是我们这个周期十分看好两大赛道之一&#xff0c;(Gamef 拥有极强的破圈效应&#xff0c;引领 Web2 用户进军 Web3 最佳利器。AI是这个周期最热门赛道&#xff0c;无论 Web2的 OpenAl&#xff0c;还是 Web3&#xff0c;都成为话题热议焦点。那么结合 GamefiA1双叙事…

Matlab多输入单输出之倾斜手写数字识别

本文主要介绍使用matlab构建多输入单输出的网络架构&#xff0c;来实现倾斜的手写数字识别&#xff0c;使用concatenationLayer来拼接特征&#xff0c;实现网络输入多个特征。 1.加载训练数据 加载数据&#xff1a;手写数字的图像、真实数字标签和数字顺时针旋转的角度。 lo…

R | 统一栅格数据的坐标系、分辨率和行列号

各位同学&#xff0c;在做相关性等分析时&#xff0c;经常会遇到各栅格数据间的行列号不统一等问题&#xff0c;下面的代码能直接解决这类麻烦。以某个栅格数据的坐标系、分辨率和行列号为准&#xff0c;统一文件夹内所有栅格并输出到新的文件夹。 代码只需要更改输入输出和ti…

UE5 第一人称射击项目学习(完结)

这个项目几乎完结了。 也算我上手的第一个纯蓝图小项目。 现在只剩下缝缝补补了。 之前把子弹设计为蓝图&#xff0c;这里要引入C的面向对象思想&#xff0c;建立成员函数。 首先双击打开子弹的蓝图 这边就可以构造成员函数 写一个print your name 在这里生成成员函数后&am…

三相正弦交流电的相序:揭秘正相序与反相序的奥秘

在电力系统中&#xff0c;三相正弦交流电的应用无处不在&#xff0c;从家庭用电到大型工业设备&#xff0c;都离不开它的稳定供电。然而&#xff0c;在三相交流电中&#xff0c;有一个概念常常让初学者感到困惑&#xff0c;那就是“相序”。今天&#xff0c;我们就来深入探讨一…

力扣面试题 - 24 插入

题目&#xff1a; 给定两个整型数字 N 与 M&#xff0c;以及表示比特位置的 i 与 j&#xff08;i < j&#xff0c;且从 0 位开始计算&#xff09;。 编写一种方法&#xff0c;使 M 对应的二进制数字插入 N 对应的二进制数字的第 i ~ j 位区域&#xff0c;不足之处用 0 补齐…