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 courseCREATE 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.snoJOIN 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.snoJOIN 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.snoJOIN 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.snoJOIN 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.snoJOIN 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.snoJOIN course ON cs.cno = course.cno 	-- (19) 查询与“张三”在同一个系学习的学生(分别用嵌套查询和连接查询)
-- 嵌套查询SELECT * FROM(SELECT * FROM student WHERE dept = '计算机科学系')AS taWHERE 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.snoJOIN 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.snoJOIN 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

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

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

相关文章

fork使用git可视化管理工具

Source Tree 中的基本名词说明&#xff1a; 克隆/新建(clone)&#xff1a;从远程仓库 URL 加载创建一个与远程仓库一样的本地仓库。 提交(commit)&#xff1a;将暂存区文件上传到本地代码仓库。 推送(push)&#xff1a;将本地仓库同步至远程仓库&#xff0c;一般推送&#xff0…

力扣labuladong——一刷day65

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣1161. 最大层内元素和二、力扣1302. 层数最深叶子节点的和三、力扣1609. 奇偶树 前言 有些二叉树的特殊技巧需要用层序遍历的方式来做&#xff0c;比如…

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

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

算法 拓扑序列

拓扑序列 定义 是一个有向无环图&#xff08;DAG, Directed Acyclic Graph&#xff09;的所有顶点的线性序列。 且该序列必须满足下面两个条件&#xff1a; 每个顶点出现且只出现一次。 若存在一条从顶点A 到顶点B 的路径&#xff0c;那么在序列中顶点A 出现在顶点B 的前面。…

C++标准模板(STL)- 类型支持 (杂项变换,实施当按值传递实参给函数时所进行的类型变换,std::decay)

类型特性 类型特性定义一个编译时基于模板的结构&#xff0c;以查询或修改类型的属性。 试图特化定义于 <type_traits> 头文件的模板导致未定义行为&#xff0c;除了 std::common_type 可依照其所描述特化。 定义于<type_traits>头文件的模板可以用不完整类型实…

苹果配件妙控鼠标、键盘、触控板值得入手吗

大家好&#xff0c;我是极智视界&#xff0c;欢迎关注我的公众号&#xff0c;获取我的更多前沿科技分享 邀您加入我的知识星球「极智视界」&#xff0c;星球内有超多好玩的项目实战源码和资源下载&#xff0c;链接&#xff1a;https://t.zsxq.com/0aiNxERDq 苹果的优质和成功绝…

Linux安装MariaDB数据库

一句命令完成数据库的安装 环境&#xff1a;centos7&#xff0c;可以连接外网 一、安装MariaDB 命令&#xff1a;yum install mariadb mariadb-server -y [rootchensy ~]# yum install mariadb mariadb-server -y Loaded plugins: fastestmirror Repository base is listed m…

STM32存储左右互搏 SPI总线读写FRAM MB85RS16

STM32存储左右互搏 I2C总线读写FRAM MB85RS16 在中低容量存储领域&#xff0c;除了FLASH的使用&#xff0c;&#xff0c;还有铁电存储器FRAM的使用&#xff0c;相对于FLASH&#xff0c;FRAM写操作时不需要预擦除&#xff0c;所以执行写操作时可以达到更高的速度&#xff0c;其…

40 mysql join 的实现

前言 join 是一个我们经常会使用到的一个 用法 我们这里 看一看各个场景下面的 join 的相关处理 测试数据表如下, 两张测试表, tz_test, tz_test03, 表结构 一致 CREATE TABLE tz_test (id int(11) unsigned NOT NULL AUTO_INCREMENT,field1 varchar(128) DEFAULT NULL,fi…

BGP多跳及BGP4+

一、知识补充 1、BGP4 传统BGP-4只管理IPV4路由信息&#xff0c;对于使用其它网络程协议 (若IPV6等)的应用末给予支持。IETF对BGP-4扩展&#xff0c;提出BGP4&#xff0c;可以提供对IPV6、IPX和MPLS VPN的支持 (简单说: 扩展IPV6协议栈支持)。 2、全互联 在上一篇博文中提…

用C++语言编写的图书馆系统代码,包括图书录入、查询、插入、修改、删除和添加功能

#include <iostream> #include <string> #include <vector> using namespace std; // 定义图书结构体 struct Book { int id; // 图书编号 string name; // 图书名称 int quality; // 图书数量 }; // 定义图书馆类 class Library { private: …

leetcode - 矩阵区域和

1314. 矩阵区域和 - 力扣&#xff08;LeetCode&#xff09; 给你一个 m x n 的矩阵 mat 和一个整数 k &#xff0c;请你返回一个矩阵 answer &#xff0c;其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和&#xff1a; i - k < r < i k, j - k < c …

备忘录模式 rust和java的实现

文章目录 备忘录模式介绍实现javarustrust仓库 备忘录模式 备忘录&#xff08;Memento&#xff09;模式的定义&#xff1a;在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态&#xff0c;以便以后当需要时能将该对象恢复到原先…

【5G PHY】5G NR 如何计算资源块的数量?

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

严蔚敏数据结构p17(2.19)——p18(2.24) (c语言代码实现)

目录 2.19已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一高效的算法,删除表中所有值大于 mink 且小于 maxk 的元素(若表中存在这样的元素&#xff09;同时释放被删结点空间,并分析你的算法的时间复杂度(注意:mink 和 maxk 是给定的个参变量,它们的值可以和表…

Hdoop学习笔记(HDP)-Part.12 安装HDFS

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

day4 链表(2)

Day4 2023.12.3&#xff08;昨天有事没写&#xff0c;按训练营时间&#xff0c;周天休息&#xff0c;我把第三天的补上&#xff09; 代码随想录 1. 24两两交换链表中的节点 对于交换节点&#xff0c;不仅仅是值得交换&#xff0c;不然就很简单了&#xff0c;我们要交换的是节点…

继阿里云、滴滴、语雀后,腾讯视频也出现重大系统故障

昨晚&#xff0c;许多网友报告称腾讯视频出现了网络故障&#xff0c;具体表现为首页无法加载内容、VIP 用户无法观看会员视频等问题。 针对这一问题&#xff0c;腾讯视频回应称&#xff1a;目前腾讯视频遇到了暂时的技术问题&#xff0c;正在紧急修复中&#xff0c;各项功能正在…

在项目根目录未找到 app.json

这个问题就是我们在编译后的app.json文件找不到&#xff0c;路径出现了问题 首先看dist下我们该文件的路径 所以我们需要将该路径配置到我们project.config.json文件中去 在这里新加下面这行代码就可以了&#xff0c; "miniprogramRoot": "dist/dev/mp-weixi…

C语言扫雷游戏

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、扫雷游戏的分析和设计1.1扫雷游戏的功能说明1.2数据结构的分析1.3文件结构设计 二、扫雷游戏的代码实现总结 前言 详细介绍扫雷游戏的思路和实现过程。 一…