数据库系统原理 | 查询作业2

news2024/11/26 14:25:09

整理自博主本科《数据库系统原理》专业课自己完成的实验课查询作业,以便各位学习数据库系统概论的小伙伴们参考、学习。

*文中若存在书写不合理的地方,欢迎各位斧正。

专业课本:

————

本次实验使用到的图形化工具:Heidisql

上一篇:数据库系统原理 | 查询作业1-CSDN博客


目录

使用EDUC数据库进行查询

1.查询课程总个数。 

2.计算学号为“200215121”的学生平均成绩。

3.查询被选修的课程的个数。 

4.查询学号为“200215121”的学生所考试的课程中的最高分数。

5.求每门课的平均分。要求输出课程号和平均分 

6.求每个选课的男学生的学号和 最低分和平均分

7.求每个选课的年龄大于20岁的学生的学号和平均分。要求只输出平均分小于60的。 

8.查询每一门课的间接先修课(即先修课的先修课),输出:课程号、先修课的课程号、先修课的先修课的课程号。 

9. 查询与“李勇”在同一个系学习的学生(输出结果中不包含李勇本人)。(使用自身连接)

10.查询至少选修了两门课的学生的学号。(使用自身连接和分组查询两种方法实现) 

使用spj数据库进行查询

1.在spj表中,如果供应数量qty是null。代表供应商给某项目供应的某零件的数量不确定。查询有那些供应商给哪些项目供应的哪些零件是不确定数量的。要求给出供应商名,项目名和零件名(需要多个表连接)。 

2.查询重量小于40的零件的零件号,零件名和零件颜色。并按照零件颜色排序降序排列,颜色相同的,按照零件号升序排列。 

3.找出最重的三种零件的零件号和零件名。 

4.查询零件共有几种颜色。 

5.如果每种零件取一个(零件号不同就是不同种的零件),那么所有种类的零件的总重量是多少。 

6.查询红色零件中最轻的那种零件的重量是多少。 

7.查询蓝色零件的平均重量。 

8.求每种颜色的平均重量和最重的重量。要求输出颜色和平均重量和最重的重量。 

9.在spj表中,计算每个工程项目所被供应的零件的总个数。输出:工程项目号和零件总个数总 个数。

10.计算每个供应商供应的零件的总个数。要求输出:供应商名和零件总个数。

11.所有城市所在地是‘天津’的工程项目被供应的零件的总个数。输出:工程项目名和零件总个数。 

12.统计汇总每个供应商提供给每个工程项目的零件的总个数。输出:供应商号和工程项目号和零件总个数。 

13.查询有哪些供应商所供应的零件总数超过了1000个。输出供应商号和零件总数。 

14.查询有那些零件的供应量小于500.输出零件号,零件名称和供应量。 

15.在S表中查询,和供应商S1在同一个城市的其他供应商的供应商号和供应商名。(用自身连接) 


使用EDUC数据库进行查询


EDUC数据库建库建表代码:

create database educ;
use educ;
CREATE TABLE Student
(
Sno CHAR(9) NOT NULL PRIMARY KEY,
Sname CHAR(20),
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
 
CREATE TABLE Course
(
Cno CHAR(4) NOT NULL PRIMARY KEY,
Cname CHAR(40) NOT NULL,
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY (Cpno) REFERENCES Course(Cno)
);
 
CREATE TABLE SC
(
Sno CHAR(9) NOT NULL,
Cno CHAR(4) NOT NULL,
Grade SMALLINT,
PRIMARY KEY(Sno,Cno),
FOREIGN KEY (Sno) REFERENCES Student(Sno),
FOREIGN KEY (Cno) REFERENCES Course(Cno)
);
 
INSERT INTO Student VALUES('200215121','李勇','男',20,'CS');
INSERT INTO Student VALUES('200215122','刘晨','女',19,'CS');
INSERT INTO Student VALUES('200215123','王敏','女',18,'MA');
INSERT INTO Student VALUES('200215125','张立','男',19,'IS');
INSERT INTO Student VALUES('200215124','张立','男',19,'IS');
 
INSERT INTO Course VALUES('2','数学',null,2);
INSERT INTO Course VALUES('6','数据处理',null,2);
INSERT INTO Course VALUES('7','pascal语言','6',4);
INSERT INTO Course VALUES('5','数据结构','7',4);
INSERT INTO Course VALUES('4','操作系统','6',3);
INSERT INTO Course VALUES('1','数据库','5',4);
INSERT INTO Course VALUES('3','信息系统','1',4);
 
INSERT INTO SC VALUES('200215121','1',92);
INSERT INTO SC VALUES('200215121','2',85);
INSERT INTO SC VALUES('200215121','3',88);
INSERT INTO SC VALUES('200215122','2',90);
INSERT INTO SC VALUES('200215122','3',80);

1.查询课程总个数。 

SELECT COUNT(*)
FROM course

2.计算学号为“200215121”的学生平均成绩。

SELECT AVG(grade)
FROM sc
WHERE sno=200215121;

3.查询被选修的课程的个数。 

SELECT COUNT(DISTINCT cno)
FROM sc

4.查询学号为“200215121”的学生所考试的课程中的最高分数。

SELECT MAX(grade)
FROM sc
WHERE sno=200215121;

5.求每门课的平均分。要求输出课程号和平均分 

select Cno,AVG(grade) as 平均分
from SC
group by Cno

6.求每个选课的男学生的学号和 最低分和平均分

select sc.Sno,MIN(Grade) as 最低分,AVG(grade) as 平均分
from Student,SC
where Student.Sno = SC.Sno and Ssex = '男'
group by SC.Sno

7.求每个选课的年龄大于20岁的学生的学号和平均分。要求只输出平均分小于60的。 

select sc.sno,AVG(grade) as 平均分
from SC,Student
where SC.Sno = Student.Sno and Sage > 20
group by SC.Sno
having AVG(Grade) <60

8.查询每一门课的间接先修课(即先修课的先修课),输出:课程号、先修课的课程号、先修课的先修课的课程号。 

SELECT FIRST.Cno,FIRST.Cpno,SECOND.Cpno
FROM course FIRST,course SECOND
WHERE FIRST.Cpno=SECOND.Cno;

9. 查询与“李勇”在同一个系学习的学生(输出结果中不包含李勇本人)。(使用自身连接)

SELECT S1.Sname,S1.Sno,S1.Sdept
FROM student S1,student S2
WHERE S1.Sdept=S2.Sdept AND S2.Sname='李勇' AND S1.Sname<>'李勇';

10.查询至少选修了两门课的学生的学号。(使用自身连接和分组查询两种方法实现) 

自身连接

SELECT DISTINCT sc1.Sno
FROM sc sc1,sc sc2
WHERE sc1.Sno=sc2.Sno AND sc1.Cno<>sc2.Cno;

分组查询

SELECT sno,COUNT(cno)
FROM sc
GROUP BY sno HAVING COUNT(cno)>=2;

使用spj数据库进行查询

spj数据库建库建表代码:

create database spj;
use spj;
CREATE TABLE S
(
SNO CHAR(4) NOT NULL PRIMARY KEY,
SNAME VARCHAR(20),
STATUS SMALLINT,
CITY VARCHAR(20)
);
 
 
CREATE TABLE P
(
PNO CHAR(4) NOT NULL PRIMARY KEY,
PNAME VARCHAR(20),
COLOR VARCHAR(10),
WEIGHT SMALLINT
);
 
CREATE TABLE J
(
JNO CHAR(4) NOT NULL PRIMARY KEY,
JNAME VARCHAR(20),
CITY VARCHAR(20)
);
 
CREATE TABLE SPJ
(
SNO CHAR(4) NOT NULL,
PNO CHAR(4) NOT NULL,
JNO CHAR(4) NOT NULL,
Qty SMALLINT,
PRIMARY KEY(SNO,PNO,JNO),
FOREIGN KEY (SNO) REFERENCES S(SNO),
FOREIGN KEY (PNO) REFERENCES P(PNO),
FOREIGN KEY (JNO) REFERENCES J(JNO)
);
 
INSERT INTO S VALUES('S1','精益',20,'天津');
INSERT INTO S VALUES('S2','盛锡',10,'北京');
INSERT INTO S VALUES('S3','东方红',30,'北京');
INSERT INTO S VALUES('S4','丰泰盛',20,'天津');
INSERT INTO S VALUES('S5','丰泰盛',20,'上海');
 
INSERT INTO P VALUES('P1','螺母','红',12);
INSERT INTO P VALUES('P2','螺栓','绿',17);
INSERT INTO P VALUES('P3','螺丝刀','蓝',14);
INSERT INTO P VALUES('P4','螺丝刀','红',14);
INSERT INTO P VALUES('P5','凸轮','蓝',40);
INSERT INTO P VALUES('P6','齿轮','红',30);
 
INSERT INTO J VALUES('J1','三建','北京');
INSERT INTO J VALUES('J2','一汽','长春');
INSERT INTO J VALUES('J3','弹簧厂','天津');
INSERT INTO J VALUES('J4','造船厂','天津');
INSERT INTO J VALUES('J5','机车厂','唐山');
INSERT INTO J VALUES('J6','无线电厂','常州');
INSERT INTO J VALUES('J7','半导体厂','南京');
 
INSERT INTO SPJ VALUES('S1','P1','J1',200);
INSERT INTO SPJ VALUES('S1','P1','J3',100);
INSERT INTO SPJ VALUES('S1','P1','J4',700);
INSERT INTO SPJ VALUES('S1','P2','J2',100);
INSERT INTO SPJ VALUES('S2','P3','J1',400);
INSERT INTO SPJ VALUES('S2','P3','J2',200);
INSERT INTO SPJ VALUES('S2','P3','J4',500);
INSERT INTO SPJ VALUES('S2','P3','J5',400);
INSERT INTO SPJ VALUES('S2','P5','J1',400);
INSERT INTO SPJ VALUES('S2','P5','J2',100);
INSERT INTO SPJ VALUES('S3','P1','J1',200);
INSERT INTO SPJ VALUES('S3','P3','J1',200);
INSERT INTO SPJ VALUES('S4','P5','J1',100);
INSERT INTO SPJ VALUES('S4','P6','J3',200);
INSERT INTO SPJ VALUES('S4','P6','J4',200);
INSERT INTO SPJ VALUES('S5','P2','J4',100);
INSERT INTO SPJ VALUES('S5','P3','J1',200);
INSERT INTO SPJ VALUES('S5','P6','J2',200);
INSERT INTO SPJ VALUES('S5','P6','J4',500);
INSERT INTO SPJ VALUES('S1','P1','J2',500);

1.spj表中,如果供应数量qty是null。代表供应商给某项目供应的某零件的数量不确定。查询有那些供应商给哪些项目供应的哪些零件是不确定数量的。要求给出供应商名,项目名和零件名(需要多个表连接)。 

SELECT s.SNO,j.JNO,p.PNO
FROM s,p,j,spj
WHERE s.SNO=spj.SNO AND p.PNO=spj.PNO AND j.JNO=spj.JNO AND qty IS NULL ;

2.查询重量小于40的零件的零件号,零件名和零件颜色。并按照零件颜色排序降序排列,颜色相同的,按照零件号升序排列。 

SELECT p.PNO,p.PNAME,p.COLOR 
FROM p,spj
WHERE p.PNO=spj.PNO AND qty<40
ORDER BY pno,color DESC ;

3.找出最重的三种零件的零件号和零件名。 

SELECT p.PNO,p.PNAME,weight
FROM p 
ORDER BY weight DESC LIMIT 3;

4.查询零件共有几种颜色。 

SELECT COUNT(DISTINCT color) 
FROM p

5.如果每种零件取一个(零件号不同就是不同种的零件),那么所有种类的零件的总重量是多少。 

SELECT SUM(weight)
FROM p;

6.查询红色零件中最轻的那种零件的重量是多少。 

SELECT weight
FROM p
WHERE color='红'
ORDER BY weight LIMIT 1;

7.查询蓝色零件的平均重量。 

SELECT AVG(weight)
FROM p
WHERE color='蓝';

8.求每种颜色的平均重量和最重的重量。要求输出颜色和平均重量和最重的重量。 

SELECT color,AVG(weight),MAX(weight)
FROM p
GROUP BY color;

9.spj表中,计算每个工程项目所被供应的零件的总个数。输出:工程项目号和零件总个数总 个数。

SELECT jno,SUM(qty)
FROM spj
GROUP BY jno;

10.计算每个供应商供应的零件的总个数。要求输出:供应商名和零件总个数。

SELECT spj.SNO,s.SNAME,SUM(qty)
FROM spj,s
WHERE spj.SNO=s.SNO
GROUP BY spj.SNO;

11.所有城市所在地是‘天津’的工程项目被供应的零件的总个数。输出:工程项目名和零件总个数。 

SELECT SUM(qty)
FROM s,spj
WHERE s.SNO=spj.SNO AND city='天津';

12.统计汇总每个供应商提供给每个工程项目的零件的总个数。输出:供应商号和工程项目号和零件总个数。 

SELECT sno,jno,SUM(qty)
FROM spj
GROUP BY sno,jno

13.查询有哪些供应商所供应的零件总数超过了1000个。输出供应商号和零件总数。 

SELECT sno,SUM(qty) 
FROM spj
GROUP BY sno HAVING SUM(qty)>1000;

14.查询有那些零件的供应量小于500.输出零件号,零件名称和供应量。 

SELECT p.PNO,p.PNAME,qty 
FROM spj,p
WHERE spj.PNO=p.PNO AND qty<500

15.在S表中查询,和供应商S1在同一个城市的其他供应商的供应商号和供应商名。(用自身连接) 

SELECT s2.SNO,s2.SNAME,s2.CITY
FROM s s1,s s2
WHERE s1.CITY=s2.CITY AND s1.SNAME='精益';

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

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

相关文章

深入分析SSL/TLS服务器的证书(C/C++代码实现)

SSL&#xff08;Secure Sockets Layer&#xff09;和TLS&#xff08;Transport Layer Security&#xff09;是网络安全领域的重要协议&#xff0c;它们在保护网络通信中发挥着至关重要的作用。这些协议通过加密和身份验证机制&#xff0c;确保数据在传输过程中的机密性和完整性…

cs231n作业1——SVM

参考文章&#xff1a;cs231n assignment1——SVM SVM 训练阶段&#xff0c;我们的目的是为了得到合适的 &#x1d44a; 和 &#x1d44f; &#xff0c;为实现这一目的&#xff0c;我们需要引进损失函数&#xff0c;然后再通过梯度下降来训练模型。 def svm_loss_naive(W, …

python基础篇(8):异常处理

在Python编程中&#xff0c;异常是程序运行时发生的错误&#xff0c;它会中断程序的正常执行流程。异常处理机制使得程序能够捕获这些错误&#xff0c;并进行适当的处理&#xff0c;从而避免程序崩溃。 1 错误类型 代码的错误一般会有语法错误和异常错误两种&#xff0c;语法错…

最新整理的机器人相关数据合集(1993-2022年不等 具体看数据类型)

机器人安装数据是指记录全球或特定区域内工业机器人新安装数量的信息&#xff0c;这一数据由国际机器人联合会(IFR)等权威机构定期发布。这些数据不仅揭示了机器人技术的市场需求趋势&#xff0c;还反映了各国和地区自动化水平及产业升级的步伐。例如&#xff0c;数据显示中国在…

nginx相关概念(反向代理、负载均衡)

1 Nginx 是什么 Nginx是一款轻量级的Web 服务器&#xff0c;其特点是占有内存少&#xff0c;并发能力强 2 Nginx 反向代理 正向代理代替客户端去发送请求反向代理代替服务端接受请求 2.1 正向代理 若客户端无法直接访问到目标服务器 server 则客户端需要配置代理服务器 pr…

云渲染技术对电影24帧和游戏60帧渲染需求及时间效率的影响

随着云计算技术的飞速发展&#xff0c;云渲染正重塑着影视和游戏产业的制作流程。它如何影响传统电影24帧和现代游戏60帧的渲染需求与时间效率&#xff1f;本文将深入探讨云渲染带来的变革。 一、电影24帧和游戏60帧作用 电影通常以24帧每秒&#xff08;fps&#xff09;的标准…

数字化精益生产系统--IFS财务管理系统

IFS财务管理系统是一款功能丰富、高效且灵活的企业财务管理软件&#xff0c;广泛应用于多个行业和不同规模的企业中。以下是对IFS财务管理系统的功能设计&#xff1a;

Linux shell编程学习笔记63:free命令 获取内存使用信息

0 前言 在系统安全检查中&#xff0c;内存使用情况也是一块可以关注的内容。Linux提供了多个获取内存信息的命令很多。今天我们先研究free命令。 1 free命令的功能、用法和选项说明 1.1 free命令的功能 free 命令可以显示系统内存的使用情况&#xff0c;包括物理内存、交换…

SSM高校教师教学质量评估系统-计算机毕业设计源码03344

摘要 在高等教育中&#xff0c;教学质量是培养优秀人才的关键。为了提高教学质量&#xff0c;高校需要建立一套科学、有效的教师教学质量评估系统。本研究采用 SSM技术框架&#xff0c;旨在开发一款高校教师教学质量评估系统。 SSM框架作为一种成熟的Java开发框架&#xff0c;具…

入门PHP就来我这(高级)11 ~ MySQL

有胆量你就来跟着路老师卷起来&#xff01; -- 纯干货&#xff0c;技术知识分享 路老师给大家分享PHP语言的知识了&#xff0c;旨在想让大家入门PHP&#xff0c;并深入了解PHP语言。 1 PHP操作MySQL数据库的方法 PHP操作数据库现在用的多的是mysqli拓展库&#xff0c;mysqli扩…

【Python机器学习】模型评估与改进——多分类指标

多分类问题的所有指标基本是上都来自于二分类问题&#xff0c;但是要对所有类别进行平均。多分类的精度被定义为正确分类的样本所占的比例。同样&#xff0c;如果类别是不平衡的&#xff0c;精度并不是很好的评估度量。 想象一个三分类问题&#xff0c;其中85%的数据点属于类别…

可视化作品集(07):网格化管理领域

网格化管理可视化大屏是指利用大屏幕显示设备&#xff0c;通过数据可视化的方式展示网格化管理的相关信息和指标。网格化管理是一种以网格为基础的城市管理模式&#xff0c;通过将城市划分为不同的网格单元&#xff0c;实现对城市各项管理工作的全覆盖、全时空监控和全过程管理…

中国星坤X1224系列线对板连接器:小巧稳定,助力物联网终端高效运行

在物联网、电器和消防等领域&#xff0c;终端设备的安全稳定运行至关重要。为了满足这些领域对连接器高可靠性、小巧轻便和耐高温的需求&#xff0c;X1224系列线对板连接器应运而生。这款连接器以其独特的设计和卓越的性能&#xff0c;成为了终端设备中不可或缺的一部分。 一、…

中英双语介绍加拿大(Canada)

加拿大国家简介 中文版 加拿大简介 加拿大是位于北美洲北部的一个国家&#xff0c;以其广袤的土地、多样的文化和自然美景著称。以下是对加拿大的详细介绍&#xff0c;包括其地理位置、人口、经济、特色、高等教育、著名景点、国家历史和交通条件。 地理位置 加拿大是世界…

Day2用 rustlings 练习 Rust 语言-Move Semantics

大家好 今天 完成 2024年自动驾驶OS开发训练营-初阶营第四期-导学 Day2用 rustlings 练习 Rust 语言 -Move Semantics https://doc.rust-lang.org/stable/book/ch04-00-understanding-ownership.html 提交代码时候 提示 没有权限怎么出来 aciton 参考开发环境配置 https://rcor…

建投数据入选“2024年中国最佳信创企业管理软件厂商”

近日&#xff0c;建投数据凭借国产化自主知识产权、完备的信创资质及信创软硬件环境全栈适配能力&#xff0c;入选第一新声联合天眼查发布的“2024年中国最佳信创厂商系列榜单”细分行业榜之“最佳信创企业管理软件厂商”。 本次最佳信创厂商系列榜单评选&#xff0c;包括综合榜…

从0-1实现一个前端脚手架

https://gitee.com/childe-jia/kfc-cli.git gitee完整地址 介绍 为什么需要脚手架&#xff1f; 脚手架本质就是一个工具&#xff0c;作用是能够让使用者专注于写代码&#xff0c;它可以让我们只用一个命令就生成一个已经配置好的项目&#xff0c;而不用我们再花时间去配置和安…

【python教程】数据分析——numpy、pandas、matplotlib

【python教程】数据分析——numpy、pandas、matplotlib 文章目录 什么是matplotlib安装matplotlib&#xff0c;画个折线 什么是matplotlib matplotlib:最流行的Python底层绘图库&#xff0c;主要做数据可视化图表,名字取材于MATLAB&#xff0c;模仿MATLAB构建 安装matplotlib&…

Idea-Idea配置gitIgnore忽略文件

背景 在项目提交到Git过程中&#xff0c;总有一些文件&#xff0c;例如.idea和.iml等这些我们不想提交的&#xff0c;直接添加进入gitIgnore文件中自动忽略掉。 Idea安装插件 1、在File->Setting->Plugins中搜索gitIgnore并安装插件 2、项目右键new->.ignore File-…

树状数组求三元上升子序列

分析一下&#xff0c;感觉没什么思路&#xff0c;再想一下&#xff0c;结果不就是每一位的数小于它的数乘以大于大于这位数的相乘之和吗&#xff0c;我们可以利用逆序对的思维求得 关键点在于求解逆序对的时候值相同的时候&#xff0c;位置大的优先级更高处理 #define _CRT_SEC…