草庐IT

MySQL基础练习题

北山情韵 情韵博客 2023-03-28 原文

MySQL基础查询练习

前提准备

使用ddl语句创建数据库

student表格:

create table student(
	id int PRIMARY KEY COMMENT 'id主键',
	`name` varchar(20) COMMENT '名称',
	gender TINYINT(2) COMMENT '性别 1男 2女 3保密',
	age TINYINT UNSIGNED COMMENT '年龄',
	birthday date COMMENT '出生日期',
	createTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
	updateTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间' on update CURRENT_TIMESTAMP,
	isdel bit(1) DEFAULT 0 COMMENT '是否删除 0未删除 1已删除 默认未删除'
);

成绩表格score:

create table score (
	id int PRIMARY KEY COMMENT 'id主键',
	sid int COMMENT '学生id',
	course VARCHAR(20) COMMENT '课程名称',
	score DECIMAL(4,1) COMMENT '成绩'
);

因为下面插入数据没默认写id的值,所以id为自增的列。

添加自增:

alter table student
MODIFY column id int  auto_increment COMMENT 'id 主键';
alter table score
MODIFY column id int  auto_increment COMMENT 'id 主键';

初始化数据

数据下载地址:https://qyboke.lanzoue.com/iuhpB0n0rfij

score表:

student表格:

答题

3.查询学生张三的所有成绩:

SELECT s.name,sc.course,sc.score from student s ,score sc where s.id = sc.sid and s.name = '李云';

4.查询平均成绩大于60的学生信息:

SELECT DISTINCT s.* from student s ,score sc where s.id = sc.sid and sc.score > 60;

5.查询有成绩的学生信息:

SELECT DISTINCT s.* FROM student s right JOIN score sc on s.id = sc.sid;

6. 查询不及格的学生信息:

SELECT DISTINCT s.* ,sc.course, sc.score
FROM student s right JOIN score sc 
on s.id = sc.sid
where sc.score < 60;

7. 查询各科成绩最高分、最低分和平均分:

SELECT DISTINCT score.course, max(score) over(PARTITION by score.course) '最高分',
min(score) over(PARTITION by score.course) '最低分',
avg(score) over(PARTITION by score.course) '平均分'
FROM score

8. 查询各科成绩第一名的记录:

SELECT DISTINCT sc.course, max(score) over(PARTITION by sc.course) '最高分'
FROM score sc left JOIN student s
on sc.sid = s.id

9. 查询男生、女生人数:

SELECT DISTINCT student.gender, count(student.gender) over(PARTITION by student.gender)
from student

10. 查询 1990 年出生的学生名单:

SELECT * from student where YEAR(birthday) = 1990;

11. 查询平均成绩大于等于 70 的所有学生的姓名、出生日期和平均成绩:

SELECT DISTINCT s.name,s.birthday,avg(sc.score) over(PARTITION by s.`name`) 
from score sc left JOIN student s
on sc.sid = s.id

12. 查询mbatis 成绩低于60的学生信息:

SELECT s.*,sc.course,sc.score
FROM score sc LEFT JOIN student s
on sc.sid = s.id
where sc.course = 'mybatis' and sc.score < 60;

13. 查询学生成绩前三名的记录:

SELECT ROW_NUMBER() over() as '成绩总分排名', sco.name,sco.allSco
FROM (
	SELECT DISTINCT s.`name` ,sum(sc.score) over(PARTITION by s.`name`) 'allSco'
from score sc LEFT JOIN student s
on sc.sid = s.id ORDER BY allSco desc LIMIT 3
) as sco

14. 查询学生信息及年龄:

SELECT stu.name,stu.birthday,(YEAR(CURRENT_DATE) - YEAR(stu.birthday)) '年龄'
from student stu

15. 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩:

SELECT DISTINCT s.`name` ,sum(sc.score) over(PARTITION by s.`name`) 'allScore',avg(sc.score) over(PARTITION by s.name) '平均成绩'
from score sc LEFT JOIN student s
on sc.sid = s.id ORDER BY allScore desc

16. 查询未成年的学生信息:

SELECT stu.name, stu.birthday, (year(CURRENT_DATE) - year(birthday)) 'age'
from student stu
where (year(CURRENT_DATE) - year(birthday)) < 18

17. 查询姓张的 学生信息:

SELECT *
FROM student
where name like '张%'

18. 查询本月过生日的学生信息:

SELECT *
FROM student
where MONTH(CURRENT_DATE) = MONTH(birthday)

19. 查询本周过生日的学生信息

SELECT *
FROM student
WHERE WEEKOFYEAR(CURRENT_DATE) = WEEKOFYEAR(birthday)

20. 按各科成绩进行排序,并显示排名

SELECT stu.name , sc.course ,sc.score, RANK() over(PARTITION by sc.course ORDER BY sc.score desc)
from score sc LEFT JOIN student stu
on sc.sid = stu.id

有关MySQL基础练习题的更多相关文章

  1. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  2. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  3. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  4. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  5. 牛客网专项练习30天Pytnon篇第02天 - 2

    1.在Python3中,下列关于数学运算结果正确的是:(B)a=10b=3print(a//b)print(a%b)print(a/b)A.3,3,3.3333...B.3,1,3.3333...C.3.3333...,3.3333...,3D.3.3333...,1,3.3333...解析:    在Python中,//表示地板除(向下取整),%表示取余,/表示除(Python2向下取整返回3)2.如下程序Python2会打印多少个数:(D)k=1000whilek>1:    print(k)k=k/2A.1000 B.10C.11D.9解析:    按照题意每次循环K/2,直到K值小于等

  6. ruby-on-rails - 无法安装 mysql2 0.3.14 gem - 2

    我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby​​目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin

  7. ruby - 如何使用 ruby​​ mysql2 执行事务 - 2

    我已经开始使用mysql2gem。我试图弄清楚一些基本的事情——其中之一是如何明确地执行事务(对于批处理操作,比如多个INSERT/UPDATE查询)。在旧的ruby-mysql中,这是我的方法:client=Mysql.real_connect(...)inserts=["INSERTINTO...","UPDATE..WHEREid=..",#etc]client.autocommit(false)inserts.eachdo|ins|beginclient.query(ins)rescue#handleerrorsorabortentirelyendendclient.commi

  8. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  9. ruby-on-rails - 当我通过 rvm 使用 rails3 时,如何在 ubuntu 上安装 mysql2 gem? - 2

    我正在尝试绕过rails配置这个极其复杂的迷宫。到目前为止,我设法在ubuntu上设置了rvm(出于某种原因,ruby在ubuntu存储库中已经过时了)。我设法建立了一个Rails项目。我希望我的测试项目使用mysql而不是mysqlite。当我尝试“rakedb:migrate”时,出现错误:“!!!缺少mysql2gem。将其添加到您的Gemfile:gem'mysql2'”当我尝试“geminstallmysql”时,出现错误,告诉我需要为安装命令提供参数。但是,参数列表很大,我不知道该选择哪些。如何通过在ubuntu上运行的rvm和mysql获取rails3?谢谢。

  10. 【Elasticsearch基础】Elasticsearch索引、文档以及映射操作详解 - 2

    文章目录概念索引相关操作创建索引更新副本查看索引删除索引索引的打开与关闭收缩索引索引别名查询索引别名文档相关操作新建文档查询文档更新文档删除文档映射相关操作查询文档映射创建静态映射创建索引并添加映射概念es中有三个概念要清楚,分别为索引、映射和文档(不用死记硬背,大概有个印象就可以)索引可理解为MySQL数据库;映射可理解为MySQL的表结构;文档可理解为MySQL表中的每行数据静态映射和动态映射上面已经介绍了,映射可理解为MySQL的表结构,在MySQL中,向表中插入数据是需要先创建表结构的;但在es中不必这样,可以直接插入文档,es可以根据插入的文档(数据),动态的创建映射(表结构),这就

随机推荐