实验三-----数据库

news2025/1/18 16:54:24

一、实验目的

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.coloradmin.cn/o/44429.html

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

相关文章

Nevron 3DChart创建有吸引力的3D和2D图表

Nevron 3DChart创建有吸引力的3D和2D图表 3DChart使用OpenGL 3D图形引擎创建复杂的2D和3D图表和图形,这些图表和图形可以包含静止或动画图像。3DChart包括用于生成图表模板的独立应用程序和ASP服务器配置实用程序。该组件还包括一个专门设计用于与3DChart集成的工具栏组件。用…

SignalR简介及实践指南

SigalR简介 ASP.NET Core SignalR 是一个开放源代码库&#xff0c;可用于简化向应用添加实时 Web 功能。 实时 Web 功能使服务器端代码能够将内容推送到客户端。 适合 SignalR 的候选项&#xff1a; 需要从服务器进行高频率更新的应用。 示例包括游戏、社交网络、投票、拍卖…

【LeetCode】No.102. Binary Tree Level Order Traversal -- Java Version

题目链接&#xff1a;https://leetcode.com/problems/binary-tree-level-order-traversal/ 1. 题目介绍&#xff08;Binary Tree Level Order Traversal&#xff09; Given the root of a binary tree, return the level order traversal of its nodes’ values. (i.e., from …

React Redux 中触发异步副作用

React Redux 中触发异步副作用 一些基本的配置&#xff08;这里使用 toolkit&#xff09;可以在这篇笔记中找到&#xff1a;react-redux 使用小结&#xff0c;这里不多赘述。 触发副作用主流的操作方式有两种&#xff1a; 组件内操作 适合只会在当前组件中触发的 API 操作 写…

企业数仓DQC数据质量管理实践篇

一.数据质量管理背景 以大数据平台的核心理念是构建于业务之上&#xff0c;用数据为业务创造价值。大数据平台、数据仓库的搭建之初&#xff0c;优先满足业务的使用需求&#xff0c;数据质量往往是被忽视的一环。但随着业务的逐渐稳定&#xff0c;数据质量越来越被人们所重视。…

2.1.3 运算放大器的参数以及选型、静态、交流技术指标

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…

基于小脑模型神经网络轨迹跟踪matlab程序

1 CMAC概述 小脑模型神经网络(Cerebellar Model Articulation Controller,CMAC)是一种表达复杂非线性函数的表格查询型自适应神经网络&#xff0c;该网络可通过学习算法改变表格的内容&#xff0c;具有信息分类 存储的能力。 CMAC把系统的输入状态作为一个指针&#xff0c;把相…

Oracle-Autoupgrade方式升级19c

前言: Autoupgrade是Oracle 推出的自动升级工具&#xff0c;通过该工具可以将数据库升级为Oracle12.2之后的版本&#xff0c;工具支持升级前的检查、升级问题修复、一键式自动升级以及升级后的问题修复&#xff0c;极大的简化数据库的升级步骤。 支持的目标升级版本: Oracle D…

用 Java 实现爬虫 (爬取本地html中的人物信息并可视化人物关系)

目录 爬虫简介 常用的工具框架 selenium Jsoup Jsoup介绍 Jsoup的主要功能如下&#xff1a; HTML 相关知识 通过Jsoup元素获取 案例 爬取本地html中的角色信息 HtmlParseUtil 可以利用relation-graph 将人物关系可视化 使用爬虫要注意 查看网站的爬虫协议 爬虫简介…

面试:ANR原因及排查

ANR原因 1、CPU满负荷&#xff0c;I/O阻塞 2、内存不足&#xff0c;系统分配给一个应用的内存是有上限的&#xff0c;长期处于内存紧张&#xff0c;会导致频繁内存交换&#xff0c;进而导致应用的一些操作超时。自己内存泄漏或者其他应用占用的大量内存 3、四大组件ANR 4、…

字符串压缩(一)之ZSTD

一、zstd压缩与解压 ZSTD_compress属于ZSTD的Simple API范畴&#xff0c;只有压缩级别可以设置。 ZSTD_compress函数原型如下&#xff1a; size_t ZSTD_compress(void* dst, size_t dstCapacity, const void* src, size_t srcSize, int compressionLevel) ZSTD_decompress函数原…

Mysql replace into

CREATE TABLE t (id int(11) NOT NULL AUTO_INCREMENT,age int(11) DEFAULT NULL,msg varchar(10) DEFAULT NULL,PRIMARY KEY (id),UNIQUE KEY uniq_age (age) ) ENGINEInnoDB DEFAULT CHARSETutf8;insert into t (age, msg) values (1,aaa),(2,bbb),(3,ccc);id 为自增主键、ag…

「重学JS」你真的懂数据类型吗?

前言 学习了这么久前端&#xff0c;发现自己对于基础知识的掌握并没有那么通透&#xff0c;于是打算重新学一遍JS&#xff0c;引用经济学的一句话&#xff1a;JS基础决定能力高度&#x1f926;&#x1f3fb; 基础很重要&#xff0c;只有基础好才会很少出 bug&#xff0c;大多数…

aws cloudformation 理解常见资源的部署和使用

参考 cfn101-workshopaws cli cloudformation cloudformation是aws的iac工具&#xff0c;以下简称cfn 环境搭建——cfn命令行工具 创建堆栈 aws cloudformation create-stack --stack-name testtemp \--template-body file://testtemp.yaml# --parameters ParameterKeyKey…

二叉树的循环问题

目录 一、二叉树的完全性检验 二、前序遍历的非递归写法 三、中序遍历的非递归写法 四、后序遍历的非递归写法 一、二叉树的完全性检验 给定一个二叉树的 root &#xff0c;确定它是否是一个 完全二叉树 。 在一个 完全二叉树 中&#xff0c;除了最后一个关卡外&#xff0c…

Vue脚手架

脚手架 安装步骤 全局安装vue/cli npm install -g vue/cli 安装之后使用不了vue的命令&#xff0c;查看nodejs文件发现我把vue装在了node_globalnpm这个文件夹中。 解决方法&#xff1a;新增一条path指向该文件夹 切换到你要创建的目录创建脚手架 vue create 项目名称 根据…

[附源码]Python计算机毕业设计Django保护濒危动物公益网站

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

【Hack The Box】linux练习-- Talkative

HTB 学习笔记 【Hack The Box】linux练习-- Talkative &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月27日&#x1f334; &#x…

初始数据结构

目录 1. 集合的框架 集合框架的重要性 数据结构的介绍 算法的介绍 容器背后对应的数据结构 2. 时间复杂度和空间复杂度 算法效率 时间复杂度 时间复杂度的概念 大O的渐进表示法 常见的时间复杂度的计算 空间复杂度 空间复杂度的概念 从本章开始又要开始新的篇章&a…

[附源码]Python计算机毕业设计Django班级事务管理论文2022

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…