MySQL练习题,学生成绩查询练习题,附带答案

题目

(一) 新建以下几个表

student(学生表):

snosnamesexdeptbirthagePhone

其中约束如下:

(1) 学号不能存在相同的

sno int auto_increment primary key

(2) 名字为非空

sname varchar(20) not null

(3) 性别的值只能是*’男’**或’女’**

sex enum('男','女') fefault

(4) 系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,外语系,法学系

dept ENUM('信息系','计算机科学系','数学系','管理系','中文系','外语系','法学系'),

(5) 出生日期为日期格式

birth DATE,

(6) 年龄为数值型,且在**0~100之间**

age INT(100),

(7) phone唯一

phone CHAR(11) UNIQUE

cs(成绩表):

snocnocj

其中约束如下:

(**1)sno和cno分别参照student和course表中的sno,cno的字段**

sno int,

foreign key(sno)references student(sno),

cno int,

foreign key (cno) references course(cno),

(**2)cj(成绩)只能在0~100之间,可以不输入值**

cj int check(cj>=0 and cj<=100)

course(课程表)

cnocname

其约束如下:

(**1)课程号(cno)不能有重复的**

cno INT AUTO_INCREMENT PRIMARY KEY,

(**2)课程名(cname)非空**

cname VARCHAR(50) NOT NULL

(三)针对学生课程数据库查询

(1) 查询全体学生的姓名、学号、所在系,并用别名显示出结果。

(2) 查全体学生的姓名及其出生年份。

(3) 查询选修了课程的学生学号。

(4) 查询年龄在**20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。**

(5) 查询信息系、数学系和计算机科学系生的姓名和性别。

(6) 查询姓**“欧阳”且全名为三个汉字的学生姓名**

(7) 查询缺少成绩的学生的学号和相应的课程号。

(8) 查所有有成绩的学生学号和课程号。

(9) 查询选修了**3号课程的学生的学号及其成绩,查询结果按分数降序排列。**

(10) 查询学生总人数。

(11) 查询选修了课程的学生人数。

(12) 求各个课程号及相应的选课人数。

(13) 查询选修了**3门以上课程的学生学号。**

(14) 查询有**3门以上课程是90分以上的学生的学号及(90分以上的)课程数。**

(15) 查询每个学生选修课程的总学分。

(16) 查询每个学生及其选修课程的情况。

(17) 查询选修**2号课程且成绩在90分以上的所有学生的学号、姓名**

(18) 查询每个学生的学号、姓名、选修的课程名及成绩。

(19) 查询与**“刘晨”在同一个系学习的学生(分别用嵌套查询和连接查询)**

(20) 查询选修了课程名为**“管理学”的学生学号和姓名**

(21) 查询其他系中比信息系任意一个**(其中某一个)学生年龄小的学生姓名和年龄**

(22) 查询其他系中比信息系所有学生年龄都小的学生姓名及年龄。**(可以用嵌套聚合函数或者用ALL谓词)**

(23) 查询所有选修了**1号课程的学生姓名。(分别用嵌套查询和连查询)**

(24) 查询没有选修**1号课程的学生姓名。**

(25) 查询选修了全部课程的学生姓名。

(26) 查询选修了课程**1或者选修了课程2的学生的信息。**

(27) 查询既选修了课程**1又选修了课程2的学生的信息。**

(28) 通过查询求学号为**2006001学生的总分和平均分。**

(29) 求出每个系的学生数量

(30) 查询平均成绩大于**85的学生学号及平均成绩。**

(31) 要求查寻学生的所有信息,并且查询的信息按照年龄由高到低排序,如果年龄相等,则按照学号从低到高排序

表的创建

CREATE TABLE student(
  sno INT AUTO_INCREMENT PRIMARY KEY,
  sname VARCHAR(20) NOT NULL,
  sex ENUM('男','女') DEFAULT '男',
  dept ENUM('信息系','计算机科学系','数学系','管理系','中文系','外语系','法学系'),
  birth DATE,
  age INT(100),
  phone CHAR(11) UNIQUE
  )	
  
  CREATE TABLE cs(
  id INT PRIMARY KEY,
  sno INT ,
	FOREIGN KEY(sno) REFERENCES student(sno),
  cno INT,
	FOREIGN KEY(cno) REFERENCES course(cno),
  cj INT CHECK(cj>=0 AND cj<=100)
  )
  
  
DROP TABLE course
  
  CREATE TABLE course(
  cno INT AUTO_INCREMENT PRIMARY KEY,
  cname VARCHAR(50) NOT NULL
  )

学生表数据

INSERT INTO student VALUES ( '7','甜甜','女','计算机科学系','2000-01-10','18','12345678911');

这是sql语句创建,后面数据用的图形化创建

课程表数据

成绩表数据

练习答案

-- (三)针对学生课程数据库查询

-- (1) 查询全体学生的姓名、学号、所在系,并用别名显示出结果。
  
  SELECT * FROM student 
  
-- (2) **查全体学生的姓名及其出生年份。
  SELECT sname,birth FROM student
  
--  查询选修了课程的学生学号。** 
   SELECT sno FROM student WHERE dept IS NOT NULL
--  **查询年龄在 20~23岁(包括18岁和23岁)之间的学生的姓名、系别和年龄。* 
  SELECT sname,dept,age FROM student WHERE age>=18 AND age<=23
--   (5) **查询信息系、数学系和计算机科学系生的姓名和性别。**
  SELECT sname,sex FROM student WHERE dept IN('信息系','数学系','计算机科学系');
-- (6) 查询姓“鬼火”且全名为四个汉字的学生姓名
   SELECT sname FROM student WHERE sname LIKE '鬼火__'
-- (7) 查询缺少成绩的学生的学号和相应的课程号。
   SELECT student.sno,course.cno FROM student JOIN course  
	JOIN cs  ON cs.sno=student.sno AND cs.cj IS NULL AND  course.cno=cs.cno
-- (8) **查所有有成绩的学生学号和课程号。
SELECT student.sno,course.cno FROM student JOIN course  
	JOIN cs  ON cs.sno=student.sno AND cs.cj IS NOT NULL AND  course.cno=cs.cno
-- (9)查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。
SELECT student.sno,cs.cj FROM student JOIN course ON course.cno = 3  
	JOIN cs ON  course.cno = cs.cno AND student.sno = cs.sno AND cj IS NOT NULL ORDER BY cj DESC
-- (10)查询学生总人数。**
 SELECT COUNT(1) FROM student
-- (11)  查询选修了课程的学生人数
 SELECT COUNT(DISTINCT student.sno)AS '选课的人数'  FROM student JOIN cs ON student.sno=cs.sno
-- (12)求各个课程号及相应的选课人数。**
SELECT cs.cno AS '课程号',COUNT(1)AS '选课人数' FROM student JOIN course 
	JOIN cs ON cs.cno=course.cno AND student.sno=cs.sno  GROUP BY cs.cno
-- (13) 查询选修了2 门以上课程的学生学号。
SELECT cs.sno AS '学号',COUNT(1)AS '选课数量' FROM student JOIN cs ON student.sno=cs.sno
	JOIN COURSE ON COURse.cno=cs.cno GROUP BY cs.sno HAVING COUNT(1)>2

-- (14) 查询有3门以上课程是90分以上的学生的学号及(90分以上的)课程数。
SELECT *,COUNT(1)AS'所有同学90以上课程数'FROM ( SELECT cs.sno AS '学号',sname FROM student JOIN cs ON student.sno=cs.sno
	JOIN COURSE ON COURse.cno=cs.cno  AND  cj>=90) AS cjj

-- 这题应该是输出3门都是九十以上的学生,而不是输出三门九十学生后在输出所有考了九十分的人数
SELECT * ,COUNT(1)AS'选课数' FROM (SELECT student.sname,student.sno FROM student JOIN cs ON student.sno=cs.sno
	JOIN course ON course.cno=cs.cno  AND cj>=90)AS cjj  GROUP BY sno HAVING COUNT(1) >2

-- (15) 查询每个学生选修课程的总学分。
SELECT sname AS '名字',sno AS '学号',SUM(cj)AS'总分' FROM(SELECT sname,cj,cs.sno FROM student JOIN cs ON student.sno=cs.sno)AS fen GROUP BY sno

-- (16) 查询每个学生及其选修课程的情况。
SELECT cs.sno,sname,cname FROM student JOIN cs ON student.sno=cs.sno
	JOIN course ON cs.cno = course.cno ORDER BY sno 

-- (17) 查询选修2号课程且成绩在90分以上的所有学生的学号、姓名
SELECT cs.sno,sname,cs.cno,cj FROM student JOIN cs ON student.sno=cs.sno
	JOIN course ON cs.cno = course.cno AND cs.cno =2 AND cj>=90	

-- (18) 查询每个学生的学号、姓名、选修的课程名及成绩。
SELECT cs.sno,sname,cname,cj FROM student JOIN cs ON student.sno=cs.sno
	JOIN course ON cs.cno = course.cno 	

-- (19) 查询与“张三”在同一个系学习的学生(分别用嵌套查询和连接查询)
-- 嵌套查询
 SELECT * FROM(SELECT * FROM student WHERE dept = '计算机科学系')AS ta
	WHERE sname != '张三'
-- 链接查询
SELECT * FROM student JOIN cs ON student.sno=cs.sno AND sname != '张三'AND dept = '计算机科学系'

-- (20) 查询选修了课程名为“基础课”的学生学号和姓名
SELECT cs.sno,sname,cname FROM student JOIN cs ON student.sno=cs.sno
	JOIN course ON cs.cno = course.cno AND cname = '基础课'

-- (21) 查询其他系中比法学系任意一个(其中某一个)学生年龄小的学生姓名和年龄
SELECT sname,student.age,dept FROM student JOIN 
	(SELECT age FROM student WHERE dept='法学系')AS ww WHERE student.age < ww.age AND dept != '法学系'

-- (22) **查询其他系中比法学系所有学生年龄都小的学生姓名及年龄。****(可以用嵌套****聚合函数****或者****用****ALL谓词****)**
SELECT sname,student.age,dept FROM student WHERE student.age <
	(SELECT MIN(age)AS age FROM student WHERE dept='法学系') AND dept != '法学系'


-- (23) 查询所有选修了1号课程的学生姓名。(分别用嵌套查询和连查询)
-- 嵌套
SELECT sname FROM student,
(SELECT sno  FROM cs WHERE cno =(SELECT cno FROM course WHERE cno=1)) AS ww
WHERE ww.sno=student.sno
	
		
-- 链接
SELECT sname FROM student JOIN cs ON student.sno=cs.sno
	JOIN course ON cs.cno = course.cno AND cs.cno=1	

-- (24) 查询没有选修2号课程的学生姓名。	 
SELECT * 
FROM student 
WHERE sno 
IN(SELECT sno FROM cs WHERE cno!=2)	 
	 -- student.sno,sname
SELECT * ,COUNT(1)
FROM student JOIN cs
ON student.sno=cs.sno    
GROUP BY(student.sno) HAVING COUNT(1)<3 AND cno!=2

-- (25) 查询选修了全部课程的学生姓名。
SELECT COUNT(1), student.sno,sname
FROM student JOIN cs
ON student.sno=cs.sno  GROUP BY(student.sno) HAVING COUNT(1)>2

-- (26) 查询选修了课程1或者选修了课程2的学生的信息。
SELECT DISTINCT * 
FROM student JOIN cs
ON student.sno=cs.sno AND
(cs.cno=1 OR cs.cno=2)

-- (27) 查询既选修了课程1又选修了课程2的学生的信息。
SELECT COUNT(1), student.sno,sname
FROM student JOIN cs
ON student.sno=cs.sno AND
(cs.cno=1 OR cs.cno=2) GROUP BY(student.sno) HAVING COUNT(1)>1

-- (28) 通过查询求学号为1学生的总分和平均分
SELECT cs.sno ,AVG(cj),SUM(cj) FROM student JOIN cs ON cs.sno = student.sno AND cs.sno=1

-- (29) 求出每个系的学生数量
SELECT dept,COUNT(1)AS '学生数量' FROM student GROUP BY dept

-- (30) 查询平均成绩大于85的学生学号及平均成绩。
SELECT sno,a FROM(SELECT id,cs.sno,AVG(cj) AS a  FROM student JOIN cs GROUP BY cs.sno)
	AS aa WHERE a>85

-- (31) 要求查寻学生的所有信息,并且查询的信息按照年龄由高到低排序,如果年龄相等,则按照学号从低到高排序
SELECT * FROM student ORDER BY age DESC

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

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

相关文章

Excel如何设置在未打印时显示虚线打印时不显示虚线

记得之前分享过一个BOM表模板&#xff0c;但是在我打印时&#xff0c;发现明明是留空白的地方却打印出来的虚线 后来&#xff0c;看了自己的页面布局&#xff0c;原来是网格线设置错误了 当我设置为查看时显示网格线&#xff0c;打印时不显示网格线&#xff0c;这样就正常了

二百一十、Hive——Flume采集的JSON数据文件写入Hive的ODS层表后字段的数据残缺

一、目的 在用Flume把Kafka的数据采集写入Hive的ODS层表的HDFS文件路径后&#xff0c;发现HDFS文件中没问题&#xff0c;但是ODS层表中字段的数据却有问题&#xff0c;字段中的JSON数据不全 二、Hive处理JSON数据方式 &#xff08;一&#xff09;将Flume采集Kafka的JSON数据…

maven篇---第二篇

系列文章目录 文章目录 系列文章目录前言一、什么是Maven的坐标?二、讲一下maven的生命周期三、说说你熟悉哪些maven命令?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的…

C# OpenVINO 模型信息查看工具

目录 效果 支持模型 项目 代码 下载 C# OpenVINO 模型信息查看工具 效果 支持模型 ONNX format (*.onnx) PDPD (*.pdmodel) TF (*.pb) TFLite (*.tflite) 项目 代码 using Sdcb.OpenVINO; using System; using System.Collections.Generic; using System.Text; using…

怎么理解回流和重绘?

回流&#xff08;reflow&#xff09;和 重绘&#xff08;repaint&#xff09;是浏览器渲染过程中的两个关键概念。 一、概念&#xff1a; 回流指的是浏览器在计算文档流布局&#xff08;layout&#xff09;时&#xff0c;重新计算元素的位置和大小的过程。当页面中的元素发生尺…

spring boot 事件机制

目录 概述实践监听spring boot ready事件代码 源码初始化流程调用流程 结束 概述 spring boot 版本为 2.7.17 。 整体看一下spring及spring boot 相关事件。 根据下文所给的源码关键处&#xff0c;打上断点&#xff0c;可以进行快速调试。降低源码阅读难度。 实践 spring…

传媒行业CRM:打造高效客户管理,提升品牌影响力

传媒行业充满竞争和变化&#xff0c;传媒企业面临着客户管理不透明、业务流程混乱、销售数据分析不足&#xff0c;无法优化营销策略和运营管理等问题。CRM系统是企业实现数智化管理的神器&#xff0c;可以有效解决这些问题。下面说说&#xff0c;传媒行业CRM系统推荐。 1、建立…

webGL开发VR和AR应用

开发 WebVR&#xff08;虚拟现实&#xff09;和 WebAR&#xff08;增强现实&#xff09; 应用需要使用 WebXR 技术&#xff0c;结合 WebGL 以实现高质量的图形渲染。以下是开发这类应用的一般技术方案&#xff0c;希望对大家有所帮助。 1.WebXR API: 使用 WebXR API&#xff0…

基于Java SSM框架+Vue实现企业公寓后勤管理系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架Vue实现企业宿舍后勤管理网站演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所…

陪玩圈子系统:打破单身孤独,展开精彩社交旅程,APP小程序H5,源码交付,支持二开!

近年来&#xff0c;随着社交网络的快速发展&#xff0c;越来越多的人开始寻求各种方式来解决单身孤独的问题。而陪玩圈子系统便应运而生&#xff0c;在为用户提供社交服务的同时也促进了人与人之间的互动和交流。在这个拥有庞大用户数量和各种丰富活动的平台上&#xff0c;你将…

【LeetCode】每日一题 2023_12_4 从二叉搜索树到更大和树(二叉树)

文章目录 刷题前唠嗑题目&#xff1a;从二叉搜索树到更大和树题目描述代码与解题思路 结语 刷题前唠嗑 LeetCode&#xff1f;启动&#xff01;&#xff01;&#xff01; 题目&#xff1a;从二叉搜索树到更大和树 题目链接&#xff1a;1038. 从二叉搜索树到更大和树 题目描述…

HarmonyOS4.0之安装DevEco Studio开发工具

第一步 打开网址&#xff1a;https://developer.huawei.com/consumer/cn/ 点击后是这样的界面 第二步 鼠标移入到开发点击DevEco Studio 第三步 我们往下滑动找到以下界面 我们根据自己的需要点击下载图标 这里演示Window系统 下载好后解压文件 我们解压文件后 第四步…

如何批量修改ppt中的字体?

ppt制作已经属于是复杂的操作了&#xff0c;当我们想要更换ppt中的字体&#xff0c;有没有什么快捷的方法呢&#xff1f;今天分享两个方法&#xff0c;一键修改ppt文件字体。 方法一&#xff1a; 找到功能栏中的编辑选项卡&#xff0c;点击替换 – 替换字体&#xff0c;在里面…

面试题:为什么数据库连接池不采用 IO 多路复用?

今天我们聊一个不常见的 Java 面试题&#xff1a;为什么数据库连接池不采用 IO 多路复用&#xff1f; 这是一个非常好的问题。IO多路复用被视为是非常好的性能助力器。但是一般我们在使用 DB 时&#xff0c;还是经常性采用c3p0&#xff0c;tomcat connection pool等技术来与 D…

C++基础 -37- 模板函数与普通函数调用规则

当模板函数比普通函数更好匹配形参的时候&#xff0c;会优先调用模板函数 #include "iostream"using namespace std;template <class T> void show(T a, T b) {cout << a << endl;cout << b << endl;cout << "temp show&…

MQ - KAFKA 高级篇

kafak是一个分布式流处理平台,提供消息持久化,基于发布-订阅的方式的消息中间件&#xff0c;同时通过消费端配置相同的groupId支持点对点通信。 ##适用场景&#xff1a; 构造实时流数据管道,用于系统或应用之间可靠的消息传输.数据采集及处理,例如连接到一个数据库系统,捕捉表…

Redis--15--缓存穿透 击穿 雪崩

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 缓存穿透 击穿 雪崩运行速度:1 缓存穿透问题描述:如何解决: 2 缓存击穿问题描述:如何解决: 3 缓存雪崩说明:解决方案: 缓存穿透 击穿 雪崩 问题描述: 由于海量的用…

漂亮极了!分享我收藏的 16 款 VS Code 主题

你好&#xff0c;我是 EarlGrey&#xff0c;喜欢翻译点东西&#xff0c;偶尔写写代码。 点击下方卡片关注我&#xff0c;一起向上进击&#xff0c;提升自我。后台回复关键词“电子书”&#xff0c;送你一份我收藏的电子书合集。 Visual Studio Code&#xff08;VS Code&#xf…

VMware安装OpenEuler(安装界面)

本文中使用的OpenEuler版本&#xff1a;22.03 LTS SP2 VMware&#xff1a;17.0.0 一、下载镜像 根据CPU和场景&#xff0c;按需下载 https://www.openeuler.org/zh/download/?versionopenEuler%2022.03%20LTS%20SP2 二、初始化VmWare 三、配置操作系统 四、安装操作系统 …

Python:核心知识点整理大全1-笔记

在本章中&#xff0c;你将运行自己的第一个程序——hello_ world.py。为 此&#xff0c;你首先需要检查自己的计算机是否安装了Python&#xff1b;如果没有安装&#xff0c; 你需要安装它。你还要安装一个文本编辑器&#xff0c;用于编写和运行Python 程序。你输入Python代码时…