光学不练假把式,MySQL练习之SQL操作(持续更新)

2023-11-25 16:10

本文主要是介绍光学不练假把式,MySQL练习之SQL操作(持续更新),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

学习了几天的MySQL,发现只是看视频记笔记的话,很多内容根本记不住。即使记住一些,对于SQL命令也只是有一点模糊的概念,没有深刻的理解。前面一句是通常的理解,学了肯定要练习嘛。后面一句是练习之后发现的,本来不想写这篇笔记的,但是做题的时候发现自己对一些SQL语句的用法有了很多新的理解,想要写下来。

这里要贴一下题目的原帖经典SQL练习题MySQL版,然后有任何侵权的问题,希望告知,我会立即删帖,这方面我不是特别懂,所以希望大家能多给点意见,当然,理解不对的地方也希望大家能够不吝指教,多评论,谢谢大家

正文开始

----------------------------------------------------------分割线---------------------------------------------------------------------------------

原题1:用一条SQL 语句 查询出每门课都大于80 分的学生姓名

name course grade
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90
select name from table group by name having min(grade) > 80

解析:首先分析题目

  1. 一条SQL语句
  2. 每门功课都大于80分
  3. 查询结果为学生的姓名

通过题目的信息可以知道,最后显示出来的只有一个字段,就是学生的姓名,所以语句前面一定是select name from table,然后是查询的条件——门功课都大于80分,显然我们需要把张三、李四、王五的成绩分别分组,然后对比它们的成绩对比是否满足条件。所以这里就要用到,并且是以学生的姓名进行分组的group by name,然后就是最后一步,这里需要画一个图比较好理解
在这里插入图片描述
这就是分组之后的逻辑结构,并且这样直接查询是没办法显示的。查询条件是没门成绩都大于80,grade中最小的值都比80大,所以用聚合函数min(grade)>80,题目就做完啦。

这里提一下where和having,为什么这里不用where而用having?

要回答这个问题,我们首先得知道having和where的区别:

1. having是where在分组之前进行限定,having在分组之后限定
2. where后不可以跟聚合函数的判断,having可以

根据分析这里用having。

原题2:现有学生表如下:

自动编号 学号 姓名 课程编号 课程名称 分数
1 2005001 张三 0001 数学 69
2 2005002 李四 0001 数学 89
3 2005001 张三 0001 数学 69
删除除了自动编号不同, 其他都相同的学生冗余信息

delete tablename where 自动编号 not in (select min( 自动编号) from tablename group by 学号, 姓名, 课程编号, 课程名称, 分数
)

解析:分析题目

  1. 数据表中,姓名为张三的学生中有一条重复数据。
  2. 删除这种住了自动编号不同,其他数据都相同的数据。

解析答案
这道题我自己没什么思路,就直接解析答案本身的含义吧。首先这是个删除的操作,所以前面的delete tablename where 删除条件没什么好说的。比较巧妙的是答案用了group by给数据分组,使得只要满足其他数据相同,而自动编号不同的数据就会被分到一个组,接着找保留最小的自动编码的那一条数据,接着将这些组成一个不重复的自动编号的集合,最后判断自动编码(因为重复的数据只有自动编码不同,所以删除的依据也只能用自动编码来判断),凡是不在集合中==(not in())==的数据就是冗余的数据,删除这些数据就可以完成这道题。

原题3:一个叫 team 的表,里面只有一个字段name, 一共有4 条纪录,分别是a,b,c,d, 对应四个球队,现在四个球队进行比赛,用一条sql 语句显示所有可能的比赛组合

分析题目

  1. 一个字段name
  2. 4条数据a,b,c,d
  3. 一条sql
  4. 四条数据两两组合

解析答案
一开始不懂a.name和b.name是什么意思,后来看到后面team a,team b,才知道,这是分别给team 取了两个别名——a和b,然后一个表就成了两张表,a中的name字段和b中的name字段自由组合,也就是笛卡尔积,接着用字典序a.name>b.name去掉例如ab与ba这种重复组合与aa这种不存在组合的情况。

原题4:请用SQL 语句实现:从TestDB 数据表中查询出所有月份的发生额都比101 科目相应月份的发生额高的科目。

请注意:TestDB 中有很多科目,都有1~12月份的发生额。
AccID :科目代码,Occmonth :发生额月份,DebitOccur :发生额。
数据库名:JcyAudit ,数据集:Select * from TestDB

以后再更新吧,太难了,根本不是基础练习,以后更新吧,我得找点基础题目写了,抱歉了,我太难了

这篇关于光学不练假把式,MySQL练习之SQL操作(持续更新)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/424092

相关文章

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W