【SQL实验】高级查询(难点.三)含附加数据库操作

news/2024/11/8 13:19:38/

 完整代码在文章末尾【代码是自己的解答,并非标准答案,也有可能写错,文中可能会有不准确或待完善之处,恳请各位读者不吝批评指正,共同促进学习交流


将素材中的“学生管理”数据库附加到SQL SERVER中,完成以下操作:                              

附加数据库操作:

打开SSMS,在 对象资源管理器中,右击数据库,选择附加

在弹出的 附加数据库窗口中,点击 Add(添加)按钮

浏览到存放数据库文件(.mdf 和 .ldf 文件)的位置。

选择数据库.mdf 文件(主数据文件),然后点击 确定

在弹出的窗口中,你会看到数据库的相关信息(如 .mdf 文件的路径、日志文件等)。确认信息正确。如果数据库日志文件(.ldf)也没有出现,系统会自动识别并列出。确认无误后,点击 OK 进行附加。

数据库附加完成

个人因为版本问题附加还原不了,所以导入学生管理.xls文件

导入学生管理.xls文件操作:

右键点击“数据库”节点,选择“新建数据库”。

在弹出的窗口中,设置数据库名称为“学生管理”,点击“确定”完成创建

浏览选择文件作为数据库文件路径

 

 

导入过程不知道出来什么问题【这个我不知道】,但不要担心,这个步骤是没问题的。

把有问题的删除or重命名

 题目:

1.查询大于入学分数平均值的男生的人数

虽然有标红但不影响运行

--1.查询大于入学分数平均值的男生的人数。
SELECT COUNT(*) AS 男生人数
FROM 学生信息
WHERE 性别 = '男'AND 入学分数 > (SELECT AVG(入学分数) FROM 学生信息)

2.查询最受学生欢迎(选课人数最多)的课程号、课程名。

外部查询使用 WHERE 条件,筛选出与内部子查询结果相同的课程号,并返回该课程的号和名称

SELECT 课程号,课程名
FROM 课程信息
WHERE 课程信息.课程号 = (SELECT TOP 1 学生成绩.课程号FROM 学生成绩 GROUP BY 学生成绩.课程号ORDER BY COUNT(学生成绩.学号) DESC
)

3.查询学生考的最好的那门课程情况,显示学号、课程号、成绩(相关子查询)。

外部查询通过 WHERE a.成绩 = ... 匹配最高成绩的记录并返回该课程的学号、课程号和成绩信息。

SELECT 学号, 课程号, 成绩
FROM 学生成绩 a
WHERE a.成绩 = (SELECT MAX(b.成绩) FROM 学生成绩 b)

4.查询“王岩”同学具有相同籍贯的同学,显示姓名,籍贯(使用exists)。

EXISTS 子查询检查条件是否存在

s1.姓名 <> '王岩':排除“王岩”本人,只显示其他同学

SELECT s1.姓名, s1.籍贯
FROM 学生信息 AS s1
WHERE EXISTS (SELECT *FROM 学生信息 AS s2WHERE s1.籍贯 = s2.籍贯 AND s2.姓名 = '王岩'AND s1.姓名 <> '王岩'
)

5.查询选修了'1001'号课程的学生姓名(使用exists)。

WHERE 学生信息.学号 = 学生成绩.学号:将 学生信息学生成绩 表关联,以确定哪些学生选修了该课程

SELECT 姓名
FROM 学生信息 
WHERE EXISTS (SELECT *FROM 学生成绩WHERE 学生信息.学号 = 学生成绩.学号AND 学生成绩.课程号 = 1001
)


 完整代码:

--1.查询大于入学分数平均值的男生的人数。
SELECT COUNT(*) AS 男生人数
FROM 学生信息
WHERE 性别 = '男'AND 入学分数 > (SELECT AVG(入学分数) FROM 学生信息)--2.查询最受学生欢迎(选课人数最多)的课程号、课程名
SELECT 课程号,课程名
FROM 课程信息
WHERE 课程信息.课程号=(SELECT TOP 1 学生成绩.课程号FROM 学生成绩 GROUP BY 学生成绩.课程号ORDER BY COUNT(学生成绩.学号) DESC)--3.查询学生考的最好的那门课程情况,显示学号、课程号、成绩(相关子查询)。
SELECT  学号, 课程号, 成绩
FROM 学生成绩 a
WHERE a.成绩 = (SELECT MAX(b.成绩) FROM 学生成绩 b)--4.查询“王岩”同学具有相同籍贯的同学,显示姓名,籍贯(使用exists)。
SELECT s1.姓名, s1.籍贯
FROM 学生信息 AS s1
WHERE EXISTS (SELECT *FROM 学生信息 AS s2WHERE s1.籍贯 = s2.籍贯 AND s2.姓名 = '王岩'AND s1.姓名 <> '王岩'
)--5.查询选修了'1001'号课程的学生姓名(使用exists)。
SELECT 姓名
FROM 学生信息 
WHERE EXISTS (SELECT *FROM 学生成绩WHERE 学生信息.学号 = 学生成绩.学号AND 学生成绩.课程号 = 1001
)


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

相关文章

Huffman(哈夫曼)编码(贪心)(笔记)

最优编码问题&#xff1a; 给出n个字符的频率ci&#xff0c;给每个字符赋予一个01编码串&#xff0c;使得任意一个字符的编码不是另一个字符的前缀&#xff08;这个称为前缀码&#xff09;&#xff0c;而且编码后的总长度&#xff08;每个字符的频率与编码长度乘积的总和&…

1.每日SQL----2024/11/7

题目&#xff1a; 计算用户次日留存率,即用户第二天继续登录的概率 表&#xff1a; iddevice_iddate121382024-05-03232142024-05-09332142024-06-15465432024-08-13523152024-08-13623152024-08-14723152024-08-15832142024-05-09932142024-08-151065432024-08-131123152024-…

ChatGPT的多面手:日常办公、论文写作与深度学习的结合

ChatGPT&#xff0c;由OpenAI精心打造的大型语言模型&#xff0c;依托于先进的人工神经网络技术&#xff0c;展现了在理解和生成自然语言文本方面的强大能力。该模型的核心设计宗旨是通过对话式交互&#xff0c;为用户带来前所未有的体验&#xff0c;无论是提供信息、答疑解惑&…

k8s图形化显示(KRM)

在master节点 kubectl get po -n kube-system 这个命令会列出 kube-system 命名空间中的所有 Pod 的状态和相关信息&#xff0c;比如名称、状态、重启次数等。 systemctl status kubelet #查看kubelet状态 yum install git #下载git命令 git clone https://gitee.com/duk…

网络安全知识见闻终章 ?

安全知识没有终点&#xff01;&#xff01;&#xff01; 一、软件和硬件设备的类型 1.软件程序的类型 2.硬件设备的类型 二、网络类型、协议、设备、安全 1.网络类型 2.网络协议 常见的网络协议 3、网络设备 a. 网络设备的分类 b. 网络设备的功能 4.网络安全 三、w…

HTML5和CSS3 介绍

HTML5 (HyperText Markup Language 5) 定义 HTML5 是 HTML 的第五个主要版本&#xff0c;它是对前一版本&#xff08;HTML4 和 XHTML&#xff09;的重大改进。HTML5 引入了许多新特性&#xff0c;旨在简化网页开发&#xff0c;提高用户体验&#xff0c;并支持更丰富的多媒体和…

Cesium使用flyToBoundingSphere实现倾斜相机视角观察物体

之前有一篇文章介绍如何使用Cesium倾斜相机视角观察物体&#xff0c;后面发现了一个API viewer.camera.flyToBoundingSphere&#xff0c;能直接实现我想要的效果。 所以我封装了一个函数&#xff0c;通过使用 Cesium.Camera.flyToBoundingSphere API&#xff0c;自动调整相机的…

实现自动化数据抓取:使用Node.js操控鼠标点击与位置坐标

在当今信息爆炸的时代&#xff0c;自动化数据抓取技术&#xff08;也称为“网络爬虫”&#xff09;对于数据分析与信息挖掘具有重要的作用。本文将介绍如何利用Node.js实现自动化数据抓取&#xff0c;并通过控制鼠标点击与位置坐标的方式&#xff0c;采集页面上指定的新闻数据。…