深入探索MySQL高阶查询语句的艺术与实践

目录

引言

一、条件查询

(一)比较运算符查询

1.使用匹配符号查询

2.范围查找

(二)逻辑运算符

二、关键字排序

三、分组与聚合函数

四、限制查询

五、别名

(一)设置列别名

(二)设置表别名

(三)as连接语句

总结


引言

在数据库管理和数据分析的世界里,熟练掌握MySQL的高级查询技巧是一项至关重要的技能。本文将带领您深入挖掘MySQL中一些复杂的查询语句,以提升您的数据检索效率和灵活性。

在之前的MySQL基本操作中,介绍了MySQL的基本查询方法,本文主要对查询的一些复杂语句,以及条件的组合用法进行介绍。

一、条件查询

可以根据不同的where条件对数据进行查询

(一)比较运算符查询

常用的比较运算符有一下几种

比较运算符功能
> 或!=大于
>=大于等于
<小于
<=小于等于
=等于
<>或!=不等于
BETWEEN ... AND ...在某个范围之内(含最小、最大值)
IN(..)在in之后的列表中的值
LIKE 占位符模糊匹配( _ :匹配单个字符,%:匹配任意个字符)
IS NULL

是NULL

1.使用匹配符号查询

首先看一下表中的原始数据

分别找出age值等于30、age值大于40、age值小于40的数据

分别找出age值大于等于45、age值小于等于45、age值不等于45的数据

2.范围查找

使用BETWEEN ... AND ...指定查询的值的范围,比如找出age值为30到50之间的数据,包含30与50

使用in进行多个值的匹配,比如想查看age值为30,和值为45的数据

使用like进行模糊匹配

%:表示后面有任意单个、多个、或者空字符

_:表示后面有任意一个字符

找到字段值为空的数据

(二)逻辑运算符

逻辑运算符功能
AND 或 &&并且(多个条件同时成立)
OR 或 ||或者(多个条件任意一个成立)
NOT 或 !非,不是

1.AND,组合条件查询

使用:select 字段 from 表名 where 条件1 and 条件2;

2.多条件查询

使用:select 字段 from 表名 where 条件1 or 条件2;

3.反选查询

使用:select 字段 from 表名 where  !条件 ;

二、关键字排序

可以对字段值进行排序,可以是数字,也可以是字母

基本语法为:select 字段1, 字段2, ... from 表名 [where 条件]order by 排序字段1,排序字段2, ... [asc|desc]

关键字排序方式
asc升序排序,默认排序方式asc 可以省略
desc降序排序,

注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。

1.按数字排序

2.按字母排序

按字段值的首字母进行排序

3.数据压缩

数据压缩,查看不重复的记录

使用distinct指令过滤重复的信息

三、分组与聚合函数

当我们需要基于某一列或多列数据进行统计时,分组查询和聚合函数就派上了用场,分组的关键字为group by,而group by通常与聚合函数一同使用。常见的聚合函数有以下几种

函数值功能
count统计数量
max最大值
min最小值
avg平均值
sum求和

基本语法为:

select 字段名, 聚合函数(字段名) from 表名 [where 条件]  GROUP BY 字段名;

全表数据为

首先了解一下聚合函数的用法

select  聚合函数(字段) from 表名

count函数是统计值的总数,只统计表中有值的数量,null不纳入统计范围

使用分组查询数据

第一个示例表示:查询将返回每个(grender)员工的性别。每个性别构成了一个组,函数统计每个组内的员工性别数量。

第二个示例表示:查询将返回每个员工的性别(grender),以及工作地址(workid)。每个工作地址构成了一个组,函数统计每个组内的员工性别数量。

四、限制查询

在MySQL中,LIMIT 关键字用于限制SELECT语句返回的记录数量。

基本用法有两种

select 字段... from 表名 limit 行数;
#查询从第一行开始到指定行数结束的数据select 字段... from 表名 limit 行数1,行个数2;
#查询从行数1的下一行开始查询,到指定行的个数结束的数据
#例如:select 字段... from 表名 limit 3,5;
#从第3行开始,向下查询5行,也就是4、5、6、7、8行的数据

limit一般与order by组合使用,以便在限制记录数量的同时保证排序的准确性

比如查询age(年龄)最大的5位员工

五、别名

在MySQL中,查询别名(Alias)是为表名或列赋予临时名称的一种方式,可以使SQL查询更加简洁易读,尤其是在处理复杂的查询或联接多个表的时候。别名通常在查询中通过AS关键字定义,但AS关键字在大多数情况下是可以省略的。

select 字段名 [as] 别名 from 表名;
#对列设置别名select 表别名.字段名 from 表名 [as] 表别名;
#对表设置别名

(一)设置列别名

通过设置列的别名使数据看起来更有可读性

(二)设置表别名

将表设置别名,用于区分不同表之间的同字段,主要在进行多表联查的时候使用

(三)as连接语句

as可以作为连接语句,将表的数据插入到新的表当中

此方法与之前介绍的克隆表基本一致,对于表的约束无法进行保存

总结

本章主要讲解一些高阶语句中的一些特殊条件的查询方法

比如在生产环境中,进行多表联查时,使用as设置表的别名,对表进行区分,这对数据的查询非常重要,根据不同的环境,使用不同的方法进行数据的查询、分析

通过深入学习并熟练运用MySQL的这些高阶查询语句,您可以更高效、更灵活地管理和查询数据库,从而提升整体的数据管理水平和工作效率。

本文只介绍了一些高阶语句的简单用法,还有MySQL还有诸如窗口函数、CTE(公共表表达式)等更强大的功能。

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

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

相关文章

从零学算法212

212.给定一个 m x n 二维字符网格 board 和一个单词&#xff08;字符串&#xff09;列表 words&#xff0c; 返回所有二维网格上的单词 。 单词必须按照字母顺序&#xff0c;通过 相邻的单元格 内的字母构成&#xff0c;其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同…

@JsonProperty作用

jackson的maven依赖 <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.5.3</version> </dependency>JsonProperty 此注解用于属性上&#xff0c;作用是把该属…

二叉树|530.二叉搜索树的最小绝对差

力扣题目链接 class Solution { private: vector<int> vec; void traversal(TreeNode* root) {if (root NULL) return;traversal(root->left);vec.push_back(root->val); // 将二叉搜索树转换为有序数组traversal(root->right); } public:int getMinimumDiffe…

Mac vue3 使用可选链操作符 ?. 及空值合并操作符 ??编译报错

项目场景&#xff1a; uniapp使用vue3开发&#xff0c;引入uview-plus版本&#xff0c;无法编译通过&#xff08;无法使用可选链操作符 ?. &#xff09; 开发环境&#xff1a; 产品分类&#xff1a; uniapp/App P…

YoloV5改进策略:Block改进|ECA-Net:用于深度卷积神经网络的高效通道注意力|ECA+压缩膨胀Block实现涨点(独家原创)

摘要 本文使用ECA-Net注意力机制配合压缩膨胀的Block实现涨点。涨点方法是我自己独创的&#xff0c;改进方法简单易用&#xff0c;方便大家用于论文的改进。 论文&#xff1a;《ECA-Net&#xff1a;用于深度卷积神经网络的高效通道注意力》 arxiv.org/pdf/1910.03151.pdf 最…

LeetCode215. 数组中的第K个最大元素

题目描述&#xff1a; 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入…

后端系统开发之——功能完善

原文地址&#xff1a;https://blog.yiming1234.cn/?p830 下面是正文内容&#xff1a; 前言 通过SpringBoot开发用户模块的部分也就差不多要结束了&#xff0c;这一片文章就主要提一些在系统开发中需要注意到的细节部分和功能&#xff0c;也就是剩余的部分。 但是这个专栏只介…

echarts数据下钻如何配置

官方范例&#xff1a;https://echarts.apache.org/examples/zh/editor.html?cbar-multi-drilldown 看了一眼范例直接晕了&#xff0c;你这&#xff0c;一堆数据直接写死&#xff0c;这怎么用啊&#xff01; 一般来说&#xff0c;实现步骤是&#xff1a; 1&#xff09;后台&a…

安达发|电子产品制造企业APS生产排程软件

在电子脉动的世界中&#xff0c;时间是芯片上的电流&#xff0c;效率是电路板上的速度。在这个时代&#xff0c;每一微秒都蕴藏着无限可能&#xff0c;每一决策都关乎着企业的生死存亡。APS生产排程软件&#xff0c;是您的电子制造帝国中的智慧大脑&#xff0c;以卓越的创造力&…

Sqoop【实践 02】Sqoop1最新版 全库导入 + 数据过滤 + 字段类型支持 说明及举例代码(query参数及字段类型强制转换)

Sqoop1最新版举例 1.环境说明2.import-all-tables3.query4.字段类型支持 1.环境说明 还是之前的环境&#xff1a; # 不必要信息不再贴出 # JDK [roottcloud ~]# java -version java version "1.8.0_251" # MySQL [roottcloud ~]# mysql -V mysql Ver 14.14 Distrib…

Vue.js:构建高效且灵活的Web应用的利器

在前端开发领域&#xff0c;Vue.js已经迅速崛起并获得了广大开发者的青睐。作为一个轻量级的JavaScript框架&#xff0c;Vue.js不仅易于上手&#xff0c;而且功能强大&#xff0c;能够帮助开发者快速构建高效且灵活的Web应用。本文将带你深入了解Vue.js的核心概念、特性以及它在…

Reactor设计模式和Reactor模型

Reactor设计模式 翻译过来就是反应堆&#xff0c;所以Reactor设计模式本质是基于事件驱动。 角色 Handle&#xff08;事件&#xff09;EventHandler&#xff08;事件处理器&#xff09;ConcreteEventHandler&#xff08;具体事件处理器&#xff09;Synchronous Event Demult…

CTR之Session行为序列建模用户兴趣:DSIN

在前面的文章中&#xff0c;DIN模型 在用户行为序列建模中引入注意力机制来强调加权与target item相关的行为&#xff0c;以实现动态的兴趣表征&#xff1b;而DIEN模型 则在DIN的基础上加入时间性信息&#xff0c;使用注意力机制的GRU来挖掘用户兴趣的演变。 而今天的这篇文章…

jspssm_maven项目——KTV点歌系统

目录 背景 技术简介 系统简介 界面预览 背景 随着互联网的广泛渗透和进步&#xff0c;基于网络技术的KTV点歌系统迅速壮大&#xff0c;其发展始终围绕用户的实际需求展开。通过深入洞察用户的需求&#xff0c;开发出高度定制的管理平台&#xff0c;利用网络的便捷性对系统…

8.软件工程

整个章节偏向于记忆、背诵&#xff1b; 主要议题&#xff1a; 软件体系&#xff1a;3层&#xff1b; UML重点&#xff0c;重点记3要素中的关系、图&#xff1b; 1.软件体系结构 分层 优点&#xff1a;利于软件的重复利用&#xff1b; 缺点&#xff1a;以什么方式分层&#…

音频RK809

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、目的二、知识准备2.1Audio框架2.1.1 DAI2.1.2 CODEC2.1.3 machine三、原理图3.1 整体原理图3.2 喇叭部分3.3 麦克风部分四、设备树4.1 sound 部分4.2 codec 部分五、驱动讲

用友软件公司面试总结

一、自我介绍 二、质询 1. 对本公司的了解&#xff1f; 2. 身边同学对你的印象&#xff0c;认知、评价&#xff1f; 3. 你觉得身边人的评价符合吗&#xff1f; 4. 你觉得你的优点是什么&#xff1f; 5. 哪里人&#xff1f;会粤语吗&#xff1f; 6. 你对公司有多少了解&a…

使用Urllib库创建第一个爬虫程序

Urllib 是 Python 的标准库&#xff0c;它提供了一系列用于处理 URL 的函数和类&#xff0c;包括发送 HTTP 请求、处理 HTTP 响应、解析 URL 等功能。可以使用 urllib 来编写简单的网络爬虫。 request&#xff1a;它是最基本的HTTP请求模块&#xff0c;可以用来模拟发送请求。只…

【JavaScript 漫游】【044】Web Worker

文章简介 本篇文章为【JavaScript 漫游】专栏的第 044 篇文章&#xff0c;对浏览器模型的 Web Worker 相关知识点进行了总结。 概述 JavaScript 语言采用的是单线程模型&#xff0c;也就是说&#xff0c;所有任务只能在一个线程上完成&#xff0c;一次只能做一件事。前面的任…

设计模式|观察者模式(Observer Pattern)

文章目录 初识观察者模式优缺点示例代码&#xff08;使用 Java 实现&#xff09;有哪些知名的框架采用了观察者模式常见面试题 初识观察者模式 观察者模式&#xff08;Observer Pattern&#xff09;是一种软件设计模式&#xff0c;属于行为型模式。它定义了一种一对多的依赖关…