MySQL:十二类查询汇总(源码+解析 超全超详解!!!)

news2024/9/25 17:22:06

目录

一、全列查询

二、指定列查询

三、查询的字段为表达式

四、别名查询

五、去重查询:DISTINCT

六、排序查询:ORDER  BY

七、条件查询:WHERE

注意:

范例:

1、基本查询

2、AND 与 OR

3、BETWEEN …  AND …

4、IN

5、模糊查询:LIKE

6、NULL 的查询:IS  (NULL | NOT)  NULL

八、分页查询:LIMIT

九、聚合查询

1、聚合函数

范例:

1、COUNT

2、SUM

3、AVG

4、MAX

5、MIN

2、GROUP  BY  子句

范例:

3、HAVING

十、联合查询(多表查询)

1、内连接

语法:

案例:

在这边可能会遇到group by 出现以下报错:

解决方案:

2、外连接

语法:

案例:

3、自连接

案例:

十一、子查询(嵌套查询)

案例:

[ NOT ]  IN  关键字:

[ NOT ]  EXISTS  关键字:

十二、合并查询

1、UNION 

2、UNION ALL 


一、全列查询

SELECT  *FROM  table_name;

二、指定列查询

SELECT  id,name  FROM  table_name;

-----------------------------------------------------

指定元素的顺序不需要按定义表的顺序来

三、查询的字段为表达式

表达式不包含字段: SELECT   id,10   FROM  table_name; 

表达式包含一个字段:SELECT   id , id+10  FROM  table_name;

表达式包含多个字段:SELECT  id , class, id + class  FROM  table_name;

四、别名查询

SELECT  id , name  别名  FROM  table_name;

五、去重查询:DISTINCT

例如一个表显示如下:

—————其中 80 分重复了—————

我们对其进行去重查询:

SELECT  DISTINCT  english  FROM  table_name;

结果为:

六、排序查询:ORDER  BY

格式:

SELECT  …  FROM  table_name  ORDER  BY  …  [ASC | DESC];

—————————————————————————————

                        ——    ASC 为升序(从小到大)  ——

                        ——  DESC 为降序(从大到小) ——

                        ——        默认情况下为ASC          ——

注意:

1、没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖返回的顺序。

2、NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面。

3、可以对多个字段进行排序,排序优先级为字段的书写顺序。

七、条件查询:WHERE

比较运算符:

逻辑运算符:

注意:

1、WHERE 可以使用表达式,但是不能使用别名。

2、AND 的优先级高于 OR,在同时使用时,需要用小括号 () 包裹要优先执行的部分。

范例:

1、基本查询

——  查询成年的同学的姓名 (age >= 18)——

——  查询分数不及格的同学的信息 (garde < 60)——

2、AND 与 OR

——  查询未成年且不及格的同学的信息 (age < 18  AND  garde < 60)——

——  查询未成年或不及格的同学的信息 (age < 18  OR  garde < 60)——

3、BETWEEN …  AND …

——  查询分数在 80 - 90 的同学的信息 ( [80,90] )——

4、IN

——  查询分数为80,90 的同学的信息 ( 80,90 )——

5、模糊查询:LIKE

%  匹配任意多个任意字符

SELECT  name  FROM  table_name  WHERE  name  LIKE '张%' ;   

(张三、张二三、张 都可以被匹配)

_  匹配严格的一个任意字符

SELECT  name  FROM  table_name  WHERE  name  LIKE '张_' ;   

(只能匹配张三,不能匹配 张二三、张)

6、NULL 的查询:IS  (NULL | NOT)  NULL

查询名字为空的同学的信息:
SELECT  name  FROM  table_name  WHERE  name  IS  NULL;

查询名字不为空的同学的信息:

SELECT  name  FROM  table_name  WHERE  name  IS  NOT  NULL;

八、分页查询:LIMIT


语法:

——  起始下标为0  

——  从0开始,筛选N条结果

SELECT  … FROM  table_name  [WHERE  …]  [ORDER  BY]  LIMIT  N;

——  从X开始,筛选N条结果

SELECT  … FROM  table_name  [WHERE  …]  [ORDER  BY]  LIMIT  X , N;

——  从X开始,筛选N条结果

SELECT  … FROM  table_name  [WHERE  …]  [ORDER  BY]  LIMIT  X  OFFSET  N;

注意:加了OFFSET 的筛选方式会比没加的更加精准。

(不加OFFSET 就是默认 OFFSET 0,OFFSET 后跟着的就相当于数组中的下标,从下标位置往后查找N个数。)

九、聚合查询

1、聚合函数

常见的统计总数,计算平均值等操作,可以使用聚合函数来实现。常见的聚合函数有:

范例:

1、COUNT

————  统计班级有多少名同学  ————

————  统计班级语文成绩不为null的有几个  ————

·所有聚合函数中只有 COUNT 可以使用 ‘ * ’ 

·COUNT 查询到为 NULL 的不会计入结果

2、SUM

————  统计班级语文成绩的总分  ————

如果统计的结果为空,则会返回NULL

————  统计语文满分的总分  ————

3、AVG

————  统计平均总分  ————

4、MAX

————  返回最高的总分  ————

5、MIN

————  返回最低的总分  ————

2、GROUP  BY  子句

SELECT 中使用 GROUP BY 子句可以对指定列进行分组查询。

需要满足:

        使用 GROUP BY 进行分组查询时,SELECT  指定的字段必须是 “分组依据字段” ,其他字段若想出现在 SELECT 中,必须包含在聚合函数中。

范例:

查询每个职位的最高工资、最低工资以及平均工资

3、HAVING

        GROUP BY 子句进行分组以后,需要对分组结果再进行条件过滤时,不能再使用 WHERE 语句,而要使用 HAVING。

范例:

        查询平均工资低于 100000 的职位,以及它的平均工资。

十、联合查询(多表查询)

        要查询的数据可能来自不同的表,所以需要多表联合查询。多表查询是对多张表的数据提取笛卡尔积:

给出三张表格,分别是学生信息表、课程信息表成绩信息表

     

1、内连接

语法:

SELECT  字段  from  表1  别名1  [ inner ]   join  表2  别名2  on  连接条件  and  其他条件;

SELECT  字段  from  表1  别名1 , 表2  别名2  where  连接条件  and  其他条件;

注意:关联查询可以对关联表使用别名。

案例:

1、查询张三的成绩(双表联合)

        如果要查询张三的成绩,我们就需要联合 学生信息表成绩信息表 来进行查询。此时可以利用两个表的相关联信息 id,来进行学生与成绩的一一对应,而后再指定学生姓名为 ‘张三’ ,即可完成查询。

2、查询所有同学的总成绩以及个人信息(双表联合)

        要查询所有同学的总成绩以及个人信息,就需要联合 学生信息表成绩信息表 来进行查询。且需要对每个同学的成绩进行分组查询,而后进行相加求总成绩。

在这边可能会遇到group by 出现以下报错:

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ……

解决方案:

http://t.csdnimg.cn/vMSFw

3、查询所有同学的各科成绩,及同学的个人信息(三表联合)

        需要查询个人信息,就需要使用到 student 表;要查询所有同学的各科成绩,需要联合 课程信息表 与 成绩信息表,以课程号为连接介质,以 成绩信息表为主体。

2、外连接

        外连接分为 左外连接 右外连接。如果联合查询,左侧的表完全显示,我们就称其为 左外连接;如果右侧的表完全显示,我们就称其为 右外连接。

语法:

————  左外连接————

SELECT  字段名  from 表1 left  join 表2  on  连接条件;

————  右外连接————

SELECT  字段名  from 表1 right  join 表2  on  连接条件;

案例:

我们先给表中添加一位没有成绩信息的同学:

左外连接查询所有同学的成绩及个人信息,如果该同学没有成绩,也需要显示。

右外连接查询所有同学的成绩及个人信息,如果该同学没有成绩,则不用显示。

3、自连接

自连接是指在同一张表连接自身进行查询。

案例:

显示 ‘ 语文 ’ 成绩比 ‘ 数学 ’ 成绩高的成绩信息。

1、首先需要查询到这两个科目对应的 id 信息

2、在score表中查询 语文成绩 比 数学成绩 好的成绩信息

也可以使用 join on 语句来实现:

十一、子查询(嵌套查询)

子查询是指嵌入在其他 sql 语句中的 select 语句,也叫嵌套查询。

案例:

查询和 ‘ 张三 ’ 同班的同学

[ NOT ]  IN  关键字:

IN 指包含在子查询语句条件中的数据,NOT IN 就是不包含在子查询语句条件中的数据。

[ NOT ]  EXISTS  关键字:

        EXISTS 语句在使用时,括号外的数据在每一次查询时都会查看EXISTS的条件语句,相符才会输出。NOT EXISTS  就是与  EXISTS 相反的意思,都不符合,才能输出。

查找“ 语文 ” 课程的成绩信息:

查找“ 语文 ” 课程以外的成绩信息:

十二、合并查询

        在实际应用中,为了合并多个 select 的执行结果,可以使用 union,union all。使用 UNION 和 UNION ALL 时,前后查询的结果集中,字段需要一致。

1、UNION 

        该操作符用于取得两个结果集的 并集 。当使用该操作符时,会自动去除重复行

案例:查询 课程id 小于3,或者名字为“数学”的课程:

2、UNION ALL 

该操作符用于取得两个结果集的 并集 。当使用该操作符时,不会自动去除重复行

案例:查询 课程id 小于3,或者名字为“数学”的课程:

根据两个例子,我们能很轻松的看出二者的区别~


        以上就是  MySQL各类查询汇总(源码+解析 超详解!!!) 的全部内容了,希望能对您有所帮助!

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

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

相关文章

华为OD机试 - 考古问题 - 回溯、全排列问题(Java 2024 C卷 200分)

华为OD机试 2024C卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测试…

外包干了4年,技术退步明显。。。。

说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入上海某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&a…

Github万星项目lobe-chat,连接GPT4GPTs,平替chatgpt-plus

简介 Lobe Chat - 一个开源、高性能的聊天机器人框架&#xff0c;支持语音合成、多模态和可扩展的函数调用插件系统。支持一键免费部署您的私人 ChatGPT/LLM Web 应用程序。 项目地址&#xff1a; GitHub - lobehub/lobe-chat: &#x1f92f; Lobe Chat - an open-source, mo…

【学习】企业为什么要做性能测试?性能测试有何优势?

性能测试是一种软件测试&#xff0c;可确保应用程序在工作负载下运行良好。性能测试的目标不是发现错误&#xff0c;而是消除性能瓶颈&#xff0c;同时度量系统关键指标。 一、为什么要做性能测试 1.性能测试向利益相关者告知其应用程序的速度、可扩展性和稳定性。 2.它揭示了…

第5章.零、单例与小样本提示词的编写之道

零提示、单个提示和小样本提示是用于从ChatGPT中生成文本的技术。在数据匮乏或任务全新、定义模糊之时&#xff0c;我们用微妙的提示&#xff0c;让ChatGPT从无到有&#xff0c;生成文本。 面对任务&#xff0c;空无一例&#xff1a;模型凭借对任务的广泛理解&#xff0c;独辟…

【MongoDB】一问带你深入理解什么是MongDB,MongoDB超超详细保姆级教程

目录 1、MongoDB概述2、MongoDB 主要特点2.1、文档2.2、集合2.3、数据库2.4、数据模型 3、Windows安装MongoDB3.1、下载MongoDB3.2、安装MongoDB3.3、配置MongoDB 4、Linux安装MongoDB4.1、下载MongoDB4.2、解压安装4.3、安装一个可视化工具 5、MongoDB基本操作及增删改查5.1、…

数据结构进阶篇 之 【二叉树链序存储】的整体实现讲解

封建迷信我嗤之以鼻&#xff0c;财神殿前我长跪不起 一、二叉树链式结构的实现 1.二叉树的创建 1.1 手动创建 1.2 前序递归创建 2.二叉树的遍历 2.1 前序&#xff0c;中序以及后序遍历概念 2.2 层序遍历概念 2.3 前序打印实现 2.4 中序打印实现 2.4 后序打印实现 2.…

YOLOv9改进策略 :neck优化 | 路径融合GFPN,小目标到大目标一网打尽 | 轻骨干重Neck的轻量级目标检测器GiraffeDet

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文改进内容&#xff1a;设计了一种新的路径融合GFPN&#xff1a;包含跳层与跨尺度连接&#xff0c;改进思路来自ICLR2022 GiraffeDet的核心思想。 &#x1f4a1;&#x1f4a1;&#x1f4a1;GFPN和六个检测头结合&#xff0c;这种跳层…

Git命令及GUI基本操作

不习惯使用Git命令的可移步下面Git GUI基本操作 Git 常用命令 git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch -r 查看本地所有分支 git commit -am "init" 提交并且加注释 git remote add orig…

20个超实用Python魔法方法

大家好&#xff01;今天我们要一起探索Python世界的神秘角落——那些被称为“魔法方法”的特殊成员方法。它们就像是编程中的魔法咒语&#xff0c;赋予你的类各种神奇特性&#xff0c;让你的代码更加简洁、强大且有趣味&#xff01; __init__&#xff1a;这是每个对象出生时都要…

Python爬虫实战—探索某网站电影排名

文章目录 Python爬虫实战—探索某网站电影排名准备工作编写爬虫代码代码解析运行情况截图进一步优化和说明完整代码总结 说明&#xff1a;本案例以XXX网站为例&#xff0c;已隐去具体网站名称与地址。 Python爬虫实战—探索某网站电影排名 网络爬虫是一种自动化程序&#xff0…

多线程的学习1

多线程 线程是操作系统能够进入运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。 进程&#xff1a;是程序的基本执行实体。 并发&#xff1a;在同一个时刻&#xff0c;有多个指令在单个CPU上交替执行。 并行&#xff1a;在同一时刻&#xff0c…

js改变图片曝光度(高亮度)

方法一&#xff1a; 原理&#xff1a; 使用canvas进行滤镜操作&#xff0c;通过改变图片数据每个像素点的RGB值来提高图片亮度。 缺点 当前项目使用的是svg&#xff0c;而不是canvas 调整出来的效果不是很好&#xff0c;图片不是高亮&#xff0c;而是有些发白 效果 代码 …

OC对象 - Block解决循环引用

文章目录 OC对象 - Block解决循环引用前言1. 循环引用示例1.1 分析 2. 解决思路3. ARC下3.1 __weak3.2 __unsafe_unretained3.3 __block 4. MRC下4.1 __unsafe_unretain....4.1 __block 5. 总结5.1 ARC下5.2 MRC下 OC对象 - Block解决循环引用 前言 本章将会通过一个循环引用…

GitHub如何验证2FA,烦人的认证,看完几分钟解锁

序言 今天需要使用GitHub&#xff0c;还是不能用&#xff0c;需要2FA认证&#xff0c;没办法&#xff0c;还是让2FA认证流程来&#xff0c;一一解决&#xff0c;在解决这认证问题之前&#xff0c;先说说2FA认证是什么&#xff1f; 什么是2FA 2FA 是指两步验证&#xff08;Two…

用搜索引擎收集信息-常用方式

1&#xff0c;site csdn.net &#xff08;下图表示只在csdn网站里搜索java&#xff09; 2&#xff0c;filetype:pdf &#xff08;表示只检索某pdf文件类型&#xff09; 表示在浏览器里面查找有关java的pdf文件 3&#xff0c;intitle:花花 &#xff08;表示搜索网页标题里面有花…

【小尘送书-第十五期】Excel函数与公式应用大全for Excel 365 Excel

大家好&#xff0c;我是小尘&#xff0c;欢迎你的关注&#xff01;大家可以一起交流学习&#xff01;欢迎大家在CSDN后台私信我&#xff01;一起讨论学习&#xff0c;讨论如何找到满意的工作&#xff01; &#x1f468;‍&#x1f4bb;博主主页&#xff1a;小尘要自信 &#x1…

python--初学函数

函数&#xff08;function&#xff09;&#xff1a; 什么是函数&#xff1f; 具有名称的&#xff0c;是为了解决某一问题&#xff0c;功能代码的集合&#xff0c;叫做函数 python中函数如何定义&#xff1a;def>define function定义函数 def function_name([args临时变量…

【QA】MySQL多表查询详解

文章目录 前言关系型数据库中数据表之间的关系数据准备数据内容表间关系 基础查询 | 全部查询多表查询分类1 | 连接查询内连接外连接 | 左外连接外连接 | 右外连接自连接 | 自连接自连接 | 联合查询 分类2 | 子查询返回结果分类 | 标量子查询返回结果分类 | 列子查询返回结果分…

linux centos7中使用 Postfix 和Dovecot搭建邮件系统

作者主页&#xff1a;点击&#xff01; Linux专栏&#xff1a;点击&#xff01; Postfix Postfix是一个开源的邮件传输代理&#xff08;MTA&#xff09;&#xff0c;用于路由和传送电子邮件。它是一个可靠、安全且高性能的邮件服务器软件&#xff0c;常用于搭建邮件系统的核心…