【MySQL数据库】项目中用到的一些SQL查询总结

news2025/1/11 0:45:19

文章目录

  • 前言
  • 1. 有A,B两张表,需要统计A表中某个属性值的总数,更新到B表中
    • 实现代码
  • 2. 将三张(或n张)表中的结果合并一起
    • 实现代码
  • 3. 删除题库中的所有试题信息
    • 实现代码
  • 4. 统计同一张表中,不同属性的数量于一个结果集中
    • 实现方法1
    • 实现代码2


前言

下面的内容是做毕业设计时,涉及到的一些数据库查询语句。很多语句都是临时学习,为了便于后期整理以及复用,在此做个总结。


1. 有A,B两张表,需要统计A表中某个属性值的总数,更新到B表中


详细需求:

现在数据库中有两张表,分别是:paper_manageexam_manage

paper_manage结构如下,该表存储的就是对应考试试卷中的所有试题编号。
在这里插入图片描述

exam_manage结构如下,该表存储的就是考试的一些安排信息
在这里插入图片描述
现在需要更新exam_manage表中,total_num属性的值,也就是统计这个试卷中总题目数量。

实现代码

UPDATE exam_manage set total_num=
	(
	select count(exam_code  OR NULL) from paper_manage
WHERE 
	paper_manage.exam_code=exam_manage.examCode
	);

2. 将三张(或n张)表中的结果合并一起

现在有三张表multi_qustionjudge_qustionfill_qustion,分别存储 选择题、判断题、填空题的试题信息。也即将这三种题型查询的结果在前端全部展示给用户。如下图所示。
在这里插入图片描述

实现代码

select questionId,question,questionType,subject, score, section,level  from multi_question  
	WHERE subject_id=10001
	union 
	select questionId,question,questionType, subject, score, section,level  from judge_question 
	WHERE subject_id=10001
	union
	select  questionId,question,questionType,subject, score, section,level from fill_question 
	WHERE subject_id=10001
其中的subject_id是试题所属的科目id.

注意:选择题中比填空题和判断题多了四个属性,分别是 A、B、C、D四个选项,若使用UNION合并结果为一张表,union中的每个查询必须包含相同的列。

3. 删除题库中的所有试题信息

本次数据库中只是简单存储了三张表:

  • curriculum,存储的是不同题库信息。结构如下:

在这里插入图片描述

  • multi_question 选择题数据库,结构如下: 在这里插入图片描述
  • fill_question ,填空题数据库,结构如下:
    在这里插入图片描述
  • judge_question , 判断题数据库,结构如下:
  • 在这里插入图片描述
    现在如果要删除题库表中的某个题库信息,同时要把该题库所属的所有试题全部删除。(三张表中没有设置外键,同时设置冗余属性,各种试题题型中的subject_id对应题库表中的curriculum_id)
    我们先实现,如何查询到对应题库下的所有试题信息
--  查询题库。以及题库下的所有试题信息
SELECT * from curriculum c
left join fill_question as f on c.curriculum_id=f.subject_id
left join multi_question as m on c.curriculum_id=m.subject_id
left join judge_question as j on c.curriculum_id=j.subject_id
where curriculum_id=10001 # 题库id

修改一下就成了删除题库以及所属试题

实现代码

--  删除题库。以及题库下的所有信息
DELETE  fill_question,multi_question,judge_question,curriculum 
from curriculum  
left join fill_question on curriculum.curriculum_id=fill_question.subject_id
left join multi_question on curriculum.curriculum_id = multi_question.subject_id
left join judge_question  on curriculum.curriculum_id=judge_question.subject_id
where curriculum_id=10004;		#要删除的题库id

4. 统计同一张表中,不同属性的数量于一个结果集中

实际需求为:统计一张试卷中,选择题、判断题、填空题各自的数量。

先给出三条SQL语句分别查询不同题型个数的SQL语句

-- 同一个表值为n的不同属性的个数 ,填空题
SELECT paperId,COUNT(*) as '填空题个数'  FROM paper_manage 
WHERE paperId =1003 AND questionType=2;
-- 选择题
SELECT paperId,COUNT(*) as '选择题个数'  FROM paper_manage 
WHERE paperId =1001 AND questionType=1;

-- 判断题
SELECT paperId,COUNT(*) as '判断题个数'  FROM paper_manage 
WHERE paperId =1002 AND questionType=3;

结果截图:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果将三个结果合并为一个结果集中,代码如下:

实现方法1

方法一

-- 方法1
SELECT
paperId as '试卷编号',
sum(if(questionType =1, 1, 0)) AS  '单选题',
sum(if(questionType =2, 1, 0)) AS  '填空题',
sum(if(questionType =3, 1, 0)) AS  '判断题'
FROM paper_manage  WHERE paperId=1001;

实现代码2

方法二

-- 方法2
SELECT
paperId as '试卷编号',
count(questionType =1 OR NULL) AS  '单选题',
count(questionType =2 OR NULL) AS  '填空题',
count(questionType =3 OR NULL) AS  '判断题'
FROM paper_manage WHERE paperId=1001

两种方法都指向了同一个结果:
在这里插入图片描述

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

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

相关文章

C语言-typedef关键字

一.typedef 关键字 typedef是在C语言允许为一个数据类型起一个新的别名。它本身是一种存储类的关键字,与auto extern,mutable、static、register 等关键字不能出现在同一个表达式中。 二、typedef用法 示例: 对于数据类型使用例如: 对于指针的使用例如…

【VictoriaMetrics】VictoriaMetrics单机版批量和单条数据写入(influx格式)

VictoriaMetrics单机版支持以influx格式的数据写入,写入支持单条数据写入以及多条数据写入,下面操作演示下如何使用 1、首先需要启动VictoriaMetrics单机版服务 启动VictoriaMetrics单机版服务执行的命令如下 nohup /opt/victoriaMetrics/victoria-metrics-prod -httpListe…

【剑指offer专项突破版】整数篇(经典面试题)——C

文章目录 前言一. 整数除法题目分析1.一般思路①代码 2.优化思路②优化后的代码 拓展:用位运算实现整数的加法③代码 二. 二进制加法题目分析思路分析①代码 三. 前n个数字中1的个数题目描述思路分析①方法1——遍历②方法2——i&(i-1)③方法3——i&(i-1)的优化④方法…

数字赋农:数字农业新时代,致富之路宽又阔!

不管在什么年代,粮食永远是国之根本、民之命脉,而来粮食安全更是“国之大者”,更是曾在大会中明确提出过,要全方位夯实粮食安全根基,牢牢守住十八亿耕地红线,确保中国人的饭碗牢牢端在自己手中。 我们需要深…

快速入门SpringMVC 学习

目录 SpringMVC 定义 MVC定义 创建SpringMVC项目 SpringMVC掌握功能 一、连接功能 RequestMapping(请求映射) GetMapping 和 PostMapping 二、获取参数功能 传递单个参数/多个参数 注意点: RequestParam(前后端参数映射) 前后端参数映射 RequestParam特…

骆驼祥子思维导图怎么画?高效工具分享

骆驼祥子是一部中国现代文学经典作品,由老舍所著。在阅读这本书时,我们可以使用思维导图来梳理故事情节和人物关系,从而更好地理解这本书的主题和内涵。 我们可以在线制作思维导图,这个网站还内置了流程图和Markdown功能。 站点内…

前瞻洞察|Prompt Learning(提示学习)——新的低资源场景克星

近年来,预训练语言模型已然成为自然语言处理(NLP)领域中备受瞩目的技术之一。预训练模型可以在大规模文本语料上进行自监督学习,从而获得丰富的语言学知识,并通过在下游任务上进行微调,实现出色的性能。Pro…

markdown导出成html,并将图片转换成base64

文章目录 方案一,使用typora第一步,编写python脚本第二步,设置导出后运行py脚本,设置如下 方式二,使用vscode插件:Markdown Preview Enhanced使用方法在markdown头部添加 预览界面右键,选择导出…

JAVA基础知识总结系列(2):JAVA语法基础

1,关键字:其实就是某种语言赋予了特殊含义的单词。 保留字:其实就是还没有赋予特殊含义,但是准备日后要使用过的单词。 2,标示符:Java中的包、类、方法、参数和变量的名字,可由任意顺序的大小写…

用低代码打造高效餐厅管理系统

当代社会,餐饮业有着非常广阔的市场前景,也承担着相应的管理力。随着人工智能、物联网等新技术的快速发展,低代码能化为了许多餐饮门店管理的新革命。在这篇文章中,我们将会探讨低代码智能化带来的餐门店管理新使命。 一、低代码…

leetcode 2101. Detonate the Maximum Bombs(引发最多的bomb)

bombs是一个二维数组,每个bombs[i] [x, y, r] 代表一个bomb,(x,y)是二维坐标,r是半径。 点燃一个bomb时,以(x,y)为圆心,半径为r的圆范围内的bomb都会点燃,引起连锁反映。 选择一个bomb点燃,使得…

品牌出海3大营销新趋势

过去一年,跨境行业复杂多变,在成本剧增、利润承压之下,出海卖家们面临着诸多考验,但不管如何,可以肯定的是,未来跨境电商行业势必将迎来一波新增长。反之,随着行业竞争加剧,对卖家的…

MongoDB 复制集的基本概念

官方概念:副本集是一组 MongoDB 的进程去维持同样的一份数据集,通过 MongoDB 的复制协议保证主备之间的数据一致性。 如上图所示,MongoDB 有两种部署方式,一个是 Standalone 部署模式;另外一个是副本集,有不…

AppScan入门(二) — Web漏洞扫描工具AppScan的使用

Web漏洞扫描工具AppScan的安装(win10系统亲测ok),安装完后,进行实操,常用的基本操作,防止自己后期使用忘记,也给用到的朋友一个参考 1、打开AppScan,新建一个项目 (文件—>新建—>扫描web应用程序&…

OpenWrt 软路由解析公网IPV6域名访问家庭NAS的教程

OpenWrt软路由放行IPV6公网访问家庭NAS黑群晖设备的教程,威联通/黑群晖设置阿里云动态解析进行外网 IPV6 域名访问家中 NAS,设置OpenWrt软路由,通过ipv6外网访问家中电脑nas等设备系列教程,学长今天啥也没有干,网站也没…

android使用fat-aar打包,本地aar和第三方依赖库以及遇到的问题

android使用fat-aar打包,本地aar和第三方依赖库以及遇到的问题 为什么会用到fat-aar如何使用打出来的aarlib中存在多个架构,例如x86\x86_64我在打包okhttp和retrofit的时候遇到的问题 你遇到其他问题怎么处理? 为什么会用到fat-aar 需要把有…

工业级高性能3D模型渲染引擎,专注于3D Web轻量化!

一、技术概览 HOOPS Communicator 是一个SDK,用于在Web浏览器中开发3D工程应用程序,重点在于: 完全访问工程数据使用方便快速发展高性能可视化快速模型流灵活使用和部署 点击此处获取>>>3D模型轻量化及格式转换解决方案 它的主要…

提高国外 VPS 云主机性能(Linux系统)的 4 个步骤

​  随着外贸业务的兴起及不断发展,越来越多的企业和个人开始使用国外 VPS 云主机来部署自己的应用程序和网站。其中, Linux 系统的国外VPS 云主机创造了众多的可能性和功能,但仍有一些方法可以进一步提高 Linux VPS 的整体性能。下面我们将…

YOLOv5 白皮书-第Y5周:yolo.py文件解读

目录 一、前言二、导入需要的包和基本配置三、 parse_model函数四、Detect类五、BaseModel类六、调整模型1. common.py中生成C22. yolo.py的parse_model中增加c23. yolov5s.yaml中增加c2 🍨 本文为🔗365天深度学习训练营 中的学习记录博客 🍦…

07 Redis的缓存过期淘汰策略

常见面试题 生产上你们你们的redis内存设置多少?如何配置、修改redis的内存大小如果内存满了你怎么办redis清理内存的方式?定期删除和惰性删除了解过吗redis缓存淘汰策略redis的LRU了解过吗 Redis内存满了怎么办 redis默认内存多少?在哪里查看?如何…