MySQL 数据库练习题记录02

news2024/9/23 21:30:00

文章目录

  • 前言
  • 一、数据库基础
    • 1.1 sql练习题
    • 1.2 sql语句执行顺序
    • 1.3 sql语句编写

前言

本文主要记录B站视频视频链接的内容,做到知识梳理和总结的作用,项目git地址。

一、数据库基础

1.1 sql练习题

user表数据:

idusername
1张三
2李四
3王五
4小刘

user_role表数据:

idnameuser_id
1售后1
2运维2
3研发3
4实施5

1.数据库有两张表为 user 表和 user_role 表,如上所示。执行:select u.*,r.name from user u left join user_role r on u.id = r.user_id 之后获取到的结果为: A
A.
1 张三 售后
2 李四 运维
3 王五 研发
4 小刘 null
B.
1 张三 售后
2 李四 运维
3 王五 研发
C.
1 张三 售后
2 李四 运维
3 王五 研发
null null 实施

联查:
left join/right join 特点:主表的所有数据均显示,另外一张表中有匹配的数据,则显示,若无匹配的数据,该字段显示为nullinner join 特点:查询的数据是满足所有条件的数据,若没有满足所有条件的数据,则结果集为空。
所以,user表在left join的左边故为主表,4条记录均显示且连接条件为user的id等于user_role的user_id。
所以user表前三条数据匹配到user_role的前三条记录(一一匹配),user表第四条记录小刘未匹配到user_role的user_id所以显示未null。而B选项为内连接,C选项为右外连。

1.2 sql语句执行顺序

select distinct...from t1 (left/right) join t2 on t1.xx=t2.xx where t1.xx=? and
t2.xx=? group by t1.xx having ...order by ... limit ..
where: 筛选条件,分组之前
having: 筛选条件 前提:必然先分组,对分组后的结果再次筛选
where,group by,having 三者同时出现,则顺序一定为:where....group by ... having ....

limit用法:
limit m,n 从索引m处开始,筛选n条件数据 -- 实现分页
limit m 从第一条数据开始,筛选前m条

1. from join 产生虚拟表v1 产生的是笛卡尔积(两表完全连接的结果叫做笛卡尔积,会产生m*n条数据)
2. on 根据连接条件进行筛选,基于V1,产生虚拟表v2
3. left/right join 若是外连接,将主表中的所有数据进行补充到v2表中
4. where 根据查询条件,从v2中进行数据筛选,产生虚拟表v3
5. group by 对v3分组,产生虚拟表v4,经常会和聚合函数配合使用,聚合函数的结果在group by之后就会产生
使用场景: 统计每个班级的学生人数
select count(xx) ....group by bj_id
统计每个部门的人数
select count(xx) ... group by d.id
6. having 对分组后的结果再次筛选,产生虚拟表v5
7. select 选择最终要显示的字段,产生虚拟表v6
8. distinct 对结果集进行去重,产生虚拟表v7
9. order by 对结果根据某字段进行升序/降序排列
10. limit 选择需要的数据
wherehaving 区别:
where 是在分组之前进行数据筛选,having是对分组后的结果再次筛选
where,group by,having 若同时出现,则三者的顺序一定是wheregroup by之前,havinggroup by之后

在这里插入图片描述

1.3 sql语句编写

stu_score表数据:

idnamescorebj
1赵一891班
2钱二882班
3孙三841班
4李四862班
5王五871班
6吴六912班

题目1:获取每个班级的最后一名

考点: group by能查到什么?
group by column 可以查询到分组后的column,相关的聚合函数,column具有一对一关系的列,除此之外,其他字段都查询不到。
正确的思路:
1.查询出每个班级的最低分
2.根据上述的查询结果,再次到stu_Score表中查询,查询某个班级最低分对应的学生是谁

错误SQL语句:

select name,bj,MIN(score) from stu_score group by bj;

执行结果:

在这里插入图片描述
虽然能查询出来班级最低分,但是名字对应错误,一班最低分是孙三,二班最低分是李四。错误原因:name字段不是与bj一一对应,将赵一与钱二进行顺序匹配到查询记录中。

正确SQL语句:

select ss.* from stu_score ss join
(select bj,min(score) min from stu_score group by bj)tmp
on ss.score=tmp.min and ss.bj=tmp.bj

执行结果:

在这里插入图片描述
题目2:表user,字段有:id(非自增,不连续),age,name,sex,addTime。求创建时间(addTime)在2020-05-22至2020-06-17之间所有数据。

查询某段时间区间内的数据,使用between…and…也可以使用> <,数据库中between…and两个边界值都包含。

SQL语句:

select * from user where addTime between '2020-05-22' and '2020-06-17'

题目3:基于表user,查出表中第10条至第20条连续分页数据的sql语句

select * from user limit 9,11

三张表分别为:student,course,score 表数据如下:

student 表:

snosnamesage
1周杰伦18
2周润发18
3吴孟达25
4刘德华25
5李连杰29

course 表:

cnocname
1语文
2数学
3英语

score 表:

snocnoscore
1160
1261
2180

题目1:查询所有学生的学号,姓名,选课数,总成绩

分析题意,得出需要使用student表和score两表外连接查询,其中student表为主表
从student表中查询sno,sname,选课数和总成绩查询时需要根据学号分组,必须根据是student表的sno分组
不能根据score表的sno分组

若结果为null,想替换为其他值,则可以使用数据库提供的函数ifnull(exp1,exp2)

SQL语句:

SELECT stu.sno,sname,COUNT(cno) 选课数,IFNULL(SUM(score),0) 总成绩
FROM student stu
LEFT JOIN score sco
ON stu.sno = sco.sno
GROUP BY stu.sno;

查询结果:

在这里插入图片描述

题目2:查询没有学完所有课程的学生学号,姓名

思路:查询选课数<总课程数的学生
1.查询总课程数
2.统计每个学生的选课数,然后筛选选课数<总课程数的

count()该函数中可以用*,也可以用列名,count(*): 统计有多少行;count(sno): sno字段对应的若为空则不统计。

SQL语句:

SELECT s.sno,sname 
FROM student s 
LEFT JOIN score sc 
ON s.sno=sc.sno 
GROUP BY s.sno 
HAVING COUNT(cno)<(SELECT COUNT(*) FROM course1)

查询结果:

在这里插入图片描述

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

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

相关文章

代码随想录算法训练营第32天 回溯算法 java :491.递增子序列 46.全排列47.全排列 II

文章目录LeetCode 491.递增子序列题目详解注意难点示意图LeetCode 46.全排列题目讲解难点LeetCode47.全排列 II题目讲解示图难点总结LeetCode 491.递增子序列 题目详解 注意难点 在题目中有涉及到 子集序列中至少有两个元素 可以用来进行判断 在单层遍历之前需要声明一个数组…

统计学必备基础知识

一&#xff0c;统计学分为两种&#xff1a;1.描述性统计 2.推断性统计 1.统计数据的类型 (1).计量尺度分为3类&#xff1a;分类数据&#xff0c;顺序数据&#xff0c;数值型数据 分类数据&#xff1a;文字表达数据 顺序数据&#xff1a;非数据型数据&#xff0c;顺序数据…

【swagger】spring security中 swagger2,swagger3和knife4j集成的区别 真的弄懂了吗?

文章目录导包正确方式swagger2在security中放行swagger3在security中放行knife4j放行失败原因分析&#xff1a;swagger访问失败原因分析&#xff1a;作为一个强迫症重度的程序猿 不想多导一个jar包 本文创作背景是鉴于网上大多数是旧版本swagger2的教程&#xff0c;且没有针对2…

【数据结构初阶】第五篇——栈和队列

栈 栈的概念及结构 栈的实现 栈的初始化 销毁栈 入栈 出栈 获取栈顶元素 检测栈是否为空 获取栈中有效元素个数 队列 队列的概念和结构 队列的实现 队列的初始化 销毁队列 入队 出队 获取对头元素 获取队尾元素 判断队列是否为空 获取队列中元素个数 栈 栈…

13.包装类、正则表达式、Arrays类、常见算法、Lambda表达式

目录 一.包装类 1.1 什么是包装类 1.2 包装类的作用 1.3 自动装箱和自动拆箱 1.3.1 自动装箱 1.3.2 自动拆箱 1.4 包装类的特有功能 二.正则表达式 2.1 什么是正则表达式 2.2 正则表达式的规定字符 2.3 字符串对象匹配正则表达式的方法 2.4 正则表达式在字符串方法中…

21特征值和特征向量

特征值与特征向量初探 给定矩阵A&#xff0c;矩阵A乘以向量x&#xff0c;就像是使用矩阵A作用在向量x上&#xff0c;最后得到新的向量Ax。在这里&#xff0c;矩阵A就像是一个函数&#xff0c;接受一个向量x作为输入&#xff0c;给出向量Ax作为输出。 在这一过程中&#xff0c…

算法基础集训(第29天)------>DFS之排列数【DFS入门级算法,初学者必会】

一&#xff1a;概念定义该题对于排列数的定义是对给定的数字n&#xff0c;将从1~n的数字进行全排列并输出二&#xff1a;题目描述给定一个整数 n&#xff0c;将数字 1∼n 排成一排&#xff0c;将会有很多种排列方法。现在&#xff0c;请你按照字典序将所有的排列方法输出。输入…

Java——只出现一次的数字(2)

题目链接 leetcode在线oj题——只出现一次的数字(2) 题目描述 给你一个整数数组 nums &#xff0c;除某个元素仅出现 一次 外&#xff0c;其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且不使用额外空间来解…

Python对liunx中mysql数据库进行双表查询 10个案例带你了解

关于Python连接liunx中mysql数据库的方式在这一篇文章 这里写目录标题1.在Liunx服务器中的mysql新建一个表2.插入数据3.连接liunx中的mysql数据库1、查询1946班的成绩信息2&#xff0c;查询1944班&#xff0c;语文成绩大于60小于90的成绩信息3&#xff0c;查询学生表中1到6行的…

阿里国际站用户增长技术探索与实践

作者&#xff1a;阿里国际站用户增长团队 和众多传统行业一样&#xff0c;跨境贸易产业近年来也经历了数字化的转型创新&#xff0c;而首先参与进模式创新的地方主要集中于信息展示和业务撮合领域。本文将为大家分享阿里国际站在用户增长技术体系建设上的探索与实践。 一、跨境…

SpringBoot超大文件上传(总结)

SpringBoot超大文件上传&#xff0c;秒传&#xff01;分片上传!断电续传&#xff01;&#xff08;总结&#xff09;一. 秒传1、什么是秒传2、本文实现的秒传核心逻辑二. 分片上传1、什么是分片上传2、分片上传的场景三. 断点续传1、什么是断点续传2、应用场景3、实现断点续传的…

【ESP32 WiFi篇(六)】ESP32 WebSocket

文章目录1. WebSocket 概述2. WebSocket 的通信原理和机制3. WebSocket 与 HTTP 的关系3.1 相同点3.2 不同点3.3 关系4. WebSocket 技术出现之前&#xff0c;Web端实现即时通讯的方法有哪些&#xff1f;5. HTTP 存在的问题6. WebSocket 的特点7. WebSocket 数据帧格式1. WebSoc…

简单局域网网络故障排查和处置

简单局域网网络故障排查和处置一、了解基本网络构成1. IP传输通信图2.有线网络&#xff08;一&#xff09;物理层面&#xff08;1&#xff09;网线&#xff08;2&#xff09;网线的制作&#xff08;3&#xff09;网卡接口&#xff08;4&#xff09;光纤&#xff08;5&#xff0…

【图像配准】使用OpenCV进行多图配准拼接

本篇主要利用OpenCV自带的配准拼接函数Stitcher_create来实现多幅图像的配准拼接 代码参考自&#xff1a;https://github.com/samggggflynn/image-stitching-opencv 图像拼接创建步骤 通常来说&#xff0c;根据多个图像创建全景图的步骤为以下几步&#xff1a; 检测两张图像的…

【pytest】三、pytest之setup和teardown,及封装

一、引言&#xff1a; 1&#xff09;setup的作用&#xff1a;用来实现执行前的一些初始化操作(如&#xff1a;数据准备、连接设备、打开APP/浏览器、创建日志对象、创建数据库连接、创建接口的请求对象等操作)&#xff1b; 2&#xff09;teardown的作用&#xff1a;用来实现执…

C++学习/温习笔记:新型源码学编程(二)

写在前面 面向初学者撰写专栏&#xff0c;个人原创的学习C/C笔记&#xff08;干货&#xff09;编程练习所作源代码输出内容为中文&#xff0c;便于理解如有错误之处请各位读者指正请读者评论回复、参与投票&#xff0c;反馈给作者&#xff0c;我会获得持续更新笔记干货的动力。…

放弃内卷,创造新市场

在疫情&#xff0c;突然爆发的俄乌冲突&#xff0c;还有全球的物价上涨情况等社会问题逐渐变得尖锐的动荡中&#xff0c;让原本就不好的经济形势进入了寒冬期&#xff0c;各个行业也陆续进入了寒冬期&#xff0c;纷纷进入了内卷模式&#xff0c;尤其是对于跨境电商行业来说&…

linux 部署jmeter报错处理

一、linux 安装jdk Java Downloads | Oracle 二、 linux上传jmeter 2.1 上传jmeter jmeter 下载地址&#xff1a; Apache JMeter - Download Apache JMeter 注意&#xff1a; 我先在我本地调试脚本&#xff08;mac环境&#xff09;&#xff0c;调试完成后&#xff0c;再在…

java基于ssm的饰品商城的设计与实现

管理员&#xff1b;管理员使用本系统涉到的功能主要有个人中心、用户管理、商品分类管理、商品信息管理、活动商品管理、知识普及管理、饰品圈、系统管理、订单管理等功能。 用户进入前台可以查看首页、商品信息、活动商品、知识普及、饰品圈、公告信息、个人中心、后台管理、购…

全国产!全志A40i+Logos FPGA核心板(4核ARM Cortex-A7)硬件说明

硬件资源 SOM-TLA40iF核心板板载ARM、FPGA、ROM、RAM、晶振、电源、LED等硬件资源,并通过B2B连接方式引出IO。核心板所有器件(包括B2B连接器)均采用国产工业级方案,国产化率100%。 图 1 核心板硬件框图