实验三-----数据库

news/2024/3/28 17:55:08/文章来源:https://blog.csdn.net/m0_46222433/article/details/128081994

一、实验目的

1.掌握SQL Server Management Studio中SQL 查询操作;
2.掌握SQL 的单表查询命令;
3.掌握SQL 的连接查询操作;
4.掌握SQL 的嵌套查询操作;
5.掌握SQL 的集合查询操作。

二、实验环境

1.实验室名称:软件实验室
2.主要仪器设备:PC机、SQL Server2008环境

三、实验内容

1. 对学生-课程MyDb_学号数据库,应用SQL语句实现以下查询要求:

  1. 查询数学系学生的学号和姓名;
  2. 查询选修了课程的学生学号;
  3. 查询选修了1号课程的学生学号和成绩,并要求结果按成绩降序排列,如果成绩相同,则按学号升序排列;
  4. 查询选修了1号课程且成绩在80-90分之间的学生学号和成绩,并将成绩乘以系数0.8输出;
  5. 查询数学系或计算机系姓张的学生的信息;
  6. 查询缺少了成绩的学生的学号和课程号;
  7. 查询每个学生的情况以及他(她)所选的课程;
  8. 查询学生的学号、姓名、选修的课程名称及成绩;
  9. 查询选修了“数据库”课程且成绩在90分以上的学生学号、姓名和成绩;
  10. 查询每门课程的间接先行课的课程名称。

2.对学生-课程MyDb_学号数据库,应用嵌套查询实现以下查询要求:

1) 查询选修了“高等数学”的学生学号和姓名;
2) 查询“高等数学”的成绩高于张三的学生学号和成绩;
3) 查询其他系中年龄小于计算机系年龄最大者的学生;
4) 查询其他系中比计算机系学生年龄都小的学生;
5) 查询选修了“信息系统”课程的学生姓名;
6) 查询没有选修“信息系统”课程的学生姓名;
7) 查询选修了全部课程的学生姓名;
8) 查询至少选修了学号为“95002”的学生所选修的全部课程的学生学号和姓名。

3.对图书读者数据库,应用SQL语句实现以下查询要求:

1) 查询计算机类和机械工业出版社出版的图书;
2) 查询“机械工业出版社”出版的各类图书的平均定价,用GROUP BY 表示;
3) 查找这样的图书类别:要求类别中最高的图书定价不低于全部按类别分组的图书平均定价的2倍;
4) 列出计算机类图书的书号、名称、价格及数量,最后给出总册数和总价格;
5) 列出各出版社计算机类图书的具体书号、名称、价格和销售数量,并求出各出版社这类书的平均价格和销售总量。
6) 列出各出版社图书的具体书号、名称、价格和销售数量,并求出各出版社这类书的平均价格和销售总量。

四、实验调试分析

  1. having必须和group by一起用,且在group by后面
  2. group by、having、order by的使用顺序:group by 、having、order by

SELECT *|字段列表 [as 别名] FROM 表名 [WHERE 子句] [GROUP BY 子句][HAVING
子句][ORDER BY 子句][LIMIT 子句]

  1. where/having区别
    Where
  1. 对查询结果进行分组前,将不符合 where 条件的行去掉,即在分组之前过滤数据,即先过滤再分组。
  2. where 后面不可以使用聚合函数
  3. 过滤行
    Having
  4. having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,即先分组再过滤。
  5. having 后面可以使用聚合函数
  6. 过滤组
  7. 支持所有WHERE操作符

五、实验结果

1.

(1)
在这里插入图片描述

(2)
在这里插入图片描述

(3)
在这里插入图片描述

(4)
在这里插入图片描述

(5)
在这里插入图片描述

(6)
在这里插入图片描述

(7)
在这里插入图片描述

(8)
在这里插入图片描述

(9)
在这里插入图片描述

(10)
在这里插入图片描述

2.

(1)
在这里插入图片描述

(2)
在这里插入图片描述

(3)
在这里插入图片描述

(4)
在这里插入图片描述

(5)
在这里插入图片描述

(6)
在这里插入图片描述

(7)
在这里插入图片描述

(8)
在这里插入图片描述

3.

(1)
在这里插入图片描述

(2)
在这里插入图片描述

(3)
在这里插入图片描述

(4)
在这里插入图片描述

(5)
暂时不会
(6)
暂时不会

六、实验源代码

1.

/*查询1
*/
select * from Student;
select * from Course;
select * from Sc;
--1.查询数学系学生的学号和姓名
select Sno,Sname from Student where Sdept='数学'; 
--2.查询选修了课程的学生学号
select Sno from SC;
--3.查询选修了1号课程的学生学号和成绩,并要求结果按成绩降序排列,如果成绩相同,则按学号升序排列
select Sno,Grade from SC where Cno = 1 order by Grade desc, Sno;
--4.查询选修了1号课程且成绩在80-90分之间的学生学号和成绩,并将成绩乘以系数0.8输出
select Sno,Grade*0.8 '成绩乘0.8' from SC where Cno = 01 and Grade between 80 and 90;
--5.查询数学系或计算机系姓张的学生的信息
select * from Student where Sdept = 'MA' or Sname LIKE '张%';
--6.查询缺少了成绩的学生的学号和课程号
select Sno , Cno from SC where Grade is null;
--7.查询每个学生的情况以及他(她)所选的课程
select Student.*,Cname from Student,SC,Course where Student.Sno = SC.Sno and SC.Cno = Course.Cno;
select Student.Sno,Sname,Sage,Sdept,Course.Cno,Grade,Cname from Student left outer join SC on(Student.Sno = SC.Sno) join Course on (SC.Cno = Course .Cno);
--8.查询学生的学号、姓名、选修的课程名称及成绩
select Student.Sno,Sname,Grade,Cname from Student,SC,Course where Student.Sno = SC.Sno and SC.Cno = Course.Cno;
select Student.Sno,Sname,Grade,Cname from Student left outer join SC on(Student.Sno = SC.Sno) join Course on (SC.Cno = Course .Cno);
--9.查询选修了“数据库”课程且成绩在90分以上的学生学号、姓名和成绩
select  Student.Sno,Sname,Cname,Grade from Student left outer join SC on(Student.Sno = SC.Sno)join Course on (SC.Cno = Course .Cno) where Cname = '数据库' and Grade >=90;
--10.查询每门课程的间接先行课的课程名称
select first.Cno,second.Cpno from Course first,Course second where first.Cpno = second.Cno;

2.


/*查询2
*/
select * from Student;
select * from Course;
select * from Sc;
--1.查询选修了“高等数学”的学生学号和姓名;
select Student.Sno,Sname from Student left outer join SC on(Student.Sno = SC.Sno)join Course on (SC.Cno = Course .Cno) where Cname = '高等数学';
--2.查询“高等数学”的成绩高于张三的学生学号和成绩;
select Student.Sno,Grade from Student left outer join SC on(Student.Sno = SC.Sno)join Course on (SC.Cno = Course .Cno) where Course.Cname = '高等数学' and SC.Grade >(select Grade from SC where Cno = 2 and  Sno = (select Sno from Student where Sname = '张三'));
--3.查询其他系中年龄小于计算机系年龄最大者的学生;
select Student.* from Student where Sdept != '计算机系' and  Sage<(select MAX(Sage) from Student where Sdept = '计算机系');
--4.查询其他系中比计算机系学生年龄都小的学生;
select Student.* from Student where Sdept != '计算机系' and  Sage<ANY(select MIN(Sage) from Student where Sdept = '计算机系');
--5.查询选修了“信息系统”课程的学生姓名;
select Sname from Course,SC,Student where Student.Sno = SC.Sno and SC.Cno = Course.Cno and Cname = '信息系统';
--6.查询没有选修“信息系统”课程的学生姓名;
select Sname from Student where not exists (select * from SC where Sno =Student.Sno and Cno = (select Cno from Course where Cname='信息系统'));
--7.查询选修了全部课程的学生姓名;
select Sname from Student where not exists(select * from Course where not exists(select * from SC where Sno = Student.Sno and Cno = Course.Cno));
--8.查询至少选修了学号为“95002”的学生所选修的全部课程的学生学号和姓名。
select distinct Sno from SC SCX where not exists(select * from SC SCY where SCY.Sno = '95002' and not exists(select *  from SC SCZ where SCZ.Sno = SCX.Sno and SCZ.Cno = SCY.Cno));

3.

/*查询3
*/
select * from 图书;
select * from 读者;
select * from 借阅;
--1.查询计算机类和机械工业出版社出版的图书;
select 书名 from 图书 where 类型 = '计算机类' and 出版社 = '机械工业出版社';
--2.查询“机械工业出版社”出版的各类图书的平均定价,用GROUP BY 表示;
select 类型,avg(定价) '图书平均定价' from 图书 where 出版社 = '机械工业出版社' group by 类型;
--3.查找这样的图书类别:要求类别中最高的图书定价不低于全部按类别分组的图书平均定价的2倍;
select 类型,MAX(定价) 最高图书定价,AVG(定价) 图书平均定价 from 图书 group by 类型 having MAX(定价)>= all(select AVG(定价)*2 价格 from 图书 group by 类型);
--4.列出计算机类图书的书号、名称、价格及数量,最后给出总册数和总价格; 
select 书号,数量,sum(数量),sum(定价)from 图书 where 类型='计算机类' group by 书号,数量; 
--5.列出各出版社计算机类图书的具体书号、名称、价格和销售数量,并求出各出版社这类书的平均价格和销售总量。
select 书号,书名 名称,定价 价格,数量 销售数量,avg(定价),sum(数量) from 图书  compute count(书号),sum(价格);
--6.列出各出版社图书的具体书号、名称、价格和销售数量,并求出各出版社这类书的平均价格和销售总量
select 书号,书名,定价,数量,销售数量,avg(价格)  from 图书 ;

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

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

相关文章

[附源码]计算机毕业设计springboot海南琼旅旅游网

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

前端单元测试,更进一步

前端测试2022 如果从 2014 年 Jest 的第一个版本发布开始计算&#xff0c;前端开发领域工程化的单元测试能力已经发展了八年有余。Jest 集成了 Jasmine 等以往各种被证明有效的单元测试框架和断言等工具&#xff0c;也可以用来完成包含外部接口服务的集成测试等。最近几年热门的…

xxl-job安装部署

一、简介 XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用。 中文文档English Documentation 二、安装 xxl-job需要的提前安装好以下环境&#xff1a;jdk、m…

INTERSPEECH 2022|CALM: 基于对比学习的表现力语音合成跨模态说话风格建模【语音之家】

本文由清华大学与腾讯科技有限公司和香港中文大学合作&#xff0c;并 在腾讯公司落地应用 。 说话风格建模对于表现力语音合成具有重要作用。 现有基于参考音频提取风格表征的方法通常利用文本的语义相似度进行参考音频选择&#xff0c;忽略了语义信息和说话风格的差异性。 本文…

大厂都在用MyBatis,跳槽的时候MyBatis更是面试必问的内容,那你对于MyBatis又掌握了多少呢?这份MyBatis源码解析值得拥有!

MyBatis作为一个流行的半自动ORM框架&#xff0c;里面融合了许多优秀的设计理念&#xff0c;分析其源码骨架能够帮你建立良好的项目设计经验。由于其比较复杂&#xff0c;我会分成几篇来讲&#xff0c;一起踏上征服的旅程吧&#xff01; 首先把MyBatis源码包导入到idea&#x…

python+django汽车租赁系统pycharm项目

目录 1 绪论 1 1.1课题背景 1 1.2课题研究现状 1 1.3初步设计方法与实施方案 2 1.4本文研究内容 2 4 2.3 B/S结构简介 4 2.4MySQL数据库 5 3 系统分析 6 3.1系统可行性分析 6 3.1.1经济可行性 6 3.1.2技术可行性 6 3.1.3运行可行性 6 3.2系统现状分析 6 3.3功能需求分析 7 …

Apollo 应用与源码分析:Monitor监控-软件监控-时间延迟监控

目录 代码 分析 RunOnce 函数分析 UpdateState函数分析 发送时间延迟报告函数分析 备注 代码 class LatencyMonitor : public RecurrentRunner {public:LatencyMonitor();void RunOnce(const double current_time) override;bool GetFrequency(const std::string& ch…

Git---idea中git的基本操作

idea中使用git仓库 idea中配置git仓库&#xff1a; 首先idea配置git仓库的位置 配置完成之后&#xff0c;有两种创建仓库的方式 从本地配置git仓库&#xff1a; idea本身设置好的&#xff0c;直接下一步就好 从远程克隆仓库&#xff1a; 如果远程仓库没有的话可以绑定完…

CDMP考试时间与报名方式

CDMP“数据管理专业人士认证”证书国际通用&#xff0c;行业认可度极高&#xff0c;是一项涵盖学历教育、工作经验和专业知识考试在内的综合资格认证&#xff0c;也是 目前全球唯一数据管理方面权威性认证 。CDMP考试时间是什么时候&#xff1f;怎样报名&#xff1f;今天小编来…

从ChargePoint到能链智电,充电服务商的价值创新

近日&#xff0c;吉林长春出租车雨雪之中排队换电艰难的视频引起热议。 新能源汽车充换电困难&#xff0c;一方面说明电池在寒冷天气下的性能有优化空间&#xff0c;另一方面也反映出国内新能源汽车配套基础设施仍然存在较大需求缺口。 充电基础设施建设对新能源汽车推广意义…

使用Spark的foreach算子及UDTF函数实现MySQL数据的一对多【Java】

使用Spark的foreach算子及UDTF函数实现MySQL数据的一对多【Java】 背景 我们的数仓项目中遇到了这样一种场景&#xff0c;脱敏后内容大致如下&#xff1a; col1col2time1time2a1b12022-01-01 00:00:002022-01-05 00:00:00a2b22022-01-28 00:00:002022-02-03 00:00:00a3b3202…

设计模式——模板方法模式

模板方法模式 一、基本思想 定义一个操作中的算法骨架&#xff0c;而将算法的一些步骤延迟到子类中&#xff0c;使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。 二、应用场景 算法的整体步骤很固定&#xff0c;但其中个别部分易变时&#xff0c;这时候…

数据结构学习:Trie树

Trie一、概念二、代码实现三、Tire树的时间复杂度和空间复杂度四、Tire树的优势一、概念 Trie树,也叫"字典树",顾名思义,是一种专门处理字符串匹配的树形结构,用来解决在一组字符串集合中快速找到某个字符串类似于这种字符串匹配问题,可以使用RF暴力匹配、RK哈希匹配…

数字孪生技术栈的应用场景的优点

技术栈是一个IT术语&#xff0c;本意是指某项工作需要掌握的一系列技能组合的统称。那么对于如今炙手可热的数字孪生技术而言&#xff0c;数字孪生技术栈都会包括哪些底层技能&#xff1f;它又是如何构成和运行的呢&#xff1f; 北京智汇云舟科技有限公司成立于2012年&#xff…

【Rust日报】2022-11-28 使用 Rust 编写解释型语言

使用 Rust 编写解释型语言这是一本关于使用 Rust 来编写解释型语言的指导书.从理论基础, 内存分配, 真实实践, GC 等方面循序渐进的指导如何使用 Rust 来编写解释型语言.原文链接: https://rust-hosted-langs.github.io/book/introduction.htmlRust的所有权和生命周期这是一篇从…

黄佳《零基础学机器学习》chap2笔记

黄佳 《零基础学机器学习》 chap2笔记 第2课 数学和Python基础知识 文章目录黄佳 《零基础学机器学习》 chap2笔记第2课 数学和Python基础知识2.1 函数描述了事物间的关系机器学习中常用的一些函数2.2 捕捉函数的变化趋势2.3 梯度下降2.4 机器学习的数据结构--张量2.4.1 张量的…

面板模型进行熵值法分析

背景说明 熵值法&#xff08;熵权法&#xff09;是一种研究指标权重的研究方法&#xff0c;比如有5个指标&#xff0c;分别为指标1到指标5&#xff0c;并且有很多样本&#xff08;比如100个样本&#xff09;&#xff0c;即100行*5列数据&#xff0c;此时研究该5个指标的权重分…

WSL2 请启用虚拟机平台 Windows 功能并确保在 BIOS 中启用虚拟化

bcdedit /set hypervisorlaunchtype autoC:\WINDOWS\system32>bcdedit /set hypervisorlaunchtype auto 操作成功完成。

使用nohup命令 或者 代码创建守护进程

目录 一、什么是守护进程&#xff1f; 1、守护进程的概念 2、为什么需要守护进程 二、理解进程组、会话、终端 三、创建守护进程的两种方式 1、nohup命令创建守护进程 2、代码创建守护进程 (1) 创建子进程&#xff0c;父进程退出 (2) 子进程创建新的会话 (3) 更改守护…

车载电子专用DC-DC方案PL5501

PL5501是一个同步4开关Buck-Boost能够调节输出电压的控制器高于或低于输入电压。PL5501运作输入电压范围从3.6 V到32 V (36 V Maximum)以支持各种应用程序。PL5501 buck采用恒ON时间控制&#xff0c;上位机采用升压和升压两种操作方式负荷和线路调节。开关频率可以设置为150kHz…