深入探索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(公共表表达式)等更强大的功能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Dockerfile和Docker-compose

一、概述 Dockerfile和Docker Compose是用于构建和管理 Docker 容器的两个工具&#xff0c;但它们的作用和使用方式不同。 Dockerfile Dockerfile 是一个文本文件&#xff0c;用于定义 Docker 镜像的构建规则。它包含一系列指令&#xff0c;如 FROM&#xff08;指定基础镜像…

python(django)之单一接口管理功能后台开发

1、创建数据模型 在apitest/models.py下加入以下代码 class Apis(models.Model):Product models.ForeignKey(product.Product, on_deletemodels.CASCADE, nullTrue)# 关联产品IDapiname models.CharField(接口名称, max_length100)apiurl models.CharField(接口地址, max_…

uniapp微信小程序_computed_计算BMI

一、computed的用法还有它是什么&#xff1f; 首先它叫计算属性&#xff0c;顾名思义他是用来计算属性&#xff0c;计算你在data模板上定义的属性&#xff08;其实在插值表达式也能直接计算但是首先太长了在{{}}里面写那么多不好看&#xff0c;还有其他特点我在下面一起说&…

jupyter notebook导出含中文的pdf(LaTex安装和Pandoc、MiKTex安装)

用jupyter notebook导出pdf时&#xff0c;因为报错信息&#xff0c;需要用到Tex nbconvert failed: xelatex not found on PATH, if you have not installed xelatex you may need to do so. Find further instructions at https://nbconvert.readthedocs.io/en/latest/install…

nacos集群搭建实战

集群结构图 初始化数据库 Nacos默认数据存储在内嵌数据库Derby中&#xff0c;不属于生产可用的数据库。官方推荐的使用mysql数据库&#xff0c;推荐使用数据库集群或者高可用数据库。 首先新建一个数据库&#xff0c;命名为nacos&#xff0c;而后导入下面的SQL&#xff08;直…

苹果Find My产品需求增长迅速,伦茨科技ST17H6x芯片供货充足

苹果的Find My功能使得用户可以轻松查找iPhone、Mac、AirPods以及Apple Watch等设备。如今Find My还进入了耳机、充电宝、箱包、电动车、保温杯等多个行业。苹果发布AirTag发布以来&#xff0c;大家都更加注重物品的防丢&#xff0c;苹果的 Find My 就可以查找 iPhone、Mac、Ai…

Qt 图形视图 /图形视图框架坐标系统的设计理念和使用方法

文章目录 概述Qt 坐标系统图形视图的渲染过程Item图形项坐标系Scene场景坐标系View视图坐标系map坐标映射场景坐标转项坐标视图坐标转图形项坐标图形项之间的坐标转换 其他 概述 The Graphics View Coordinate System 图形视图坐标系统是Qt图形视图框架的重要组成部分&#xf…

vue指令相关

vue中有很多的指令像v-on、v-model、v-bind等是我们开发中常用的 常用指令 v-bind 单向绑定解析表达式 v-model 双向数据绑定 v-for 遍历数组/对象/字符串 v-on 绑定事件监听,可简写为@ v-show 条件渲染(动态控制节点是否存展示) v-if 条件渲染(动态控制节点是否存存在) v…

R 生存分析3:Cox等比例风险回归及等比例风险检验

虽然Kaplan-Meier分析方法目前应用很广&#xff0c;但是该方法存在一下局限: 对于一些连续型变量&#xff0c;必须分类下可以进行生存率对比 是一种单变量分析&#xff0c;无法同时对多组变量进行分析 是一种非参数分析方法&#xff0c;必须有患者个体数据才能进行分析 英国…

鸿蒙开发-UI-交互事件-焦点事件

鸿蒙开发-UI-图形-绘制几何图形 鸿蒙开发-UI-图形-绘制自定义图形 鸿蒙开发-UI-图形-页面内动画 鸿蒙开发-UI-图形-组件内转场动画 鸿蒙开发-UI-图形-弹簧曲线动画 鸿蒙开发-UI-交互事件-通用事件 鸿蒙开发-UI-交互事件-键鼠事件 文章目录 前言 一、基本概念 二、走焦规则 三、…

android_uiautomator元素定位

通过UIAUTOMATOR的text属性定位到元素&#xff0c;并打印文本from appium import webdriver from appium.webdriver.common.appiumby import AppiumBy import time # For W3C actions from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriv…

小程序富文本图片宽度自适应

解决这个问题 创建一个util.js文件,图片的最大宽度设置为100%就行了 function formatRichText(html) {let newContent html.replace(/\<img/gi, <img style"max-width:100%;height:auto;display:block;");return newContent; }module.exports {formatRichT…

2024.3.26

头文件: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTime> #include <QTimerEvent> #include <QTimer> #include <QtTextToSpeech>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : p…

centos创建svn库步骤

1.切换root用户 1、设置root用户的密码&#xff1a; sudo passwd root 2、切换到root用户权限 su 3、切换回个人用户权限 exit 2.用root用户执行yum install -y subversion 3.创建文件夹mkdir -p /data/svn/repository 4.创建SVN 版本库 5.输入命令&#xff1a; svnadmin creat…

第 1 章.提示词:开启AI智慧之门的钥匙

什么是提示词&#xff1f; 提示词&#xff0c;是引导语言模型的指令&#xff0c;让用户能够驾驭模型的输出&#xff0c;确保生成的文本符合需求。 ChatGPT&#xff0c;这位文字界的艺术大师&#xff0c;以transformer架构为基石&#xff0c;能轻松驾驭海量数据&#xff0c;编织…

Java 与 Go:时间函数

在软件开发中&#xff0c;时间和日期函数是必不可少的组成部分&#xff0c;而 Java 和 Go 是两种备受欢迎的编程语言&#xff0c;它们在时间和日期函数方面有着各自独特的特性。本文将对比 Java 和 Go 在时间和日期函数上的优劣&#xff0c;并探讨它们的用法和适用场景。 Java…

2024品牌私域运营:「去中心化」正在成为企业决胜关键

越来越多的品牌选择以DTC模式与消费者互动和销售。通过与消费者建立紧密联系&#xff0c;不仅可提供更具成本效益的规模扩张方式&#xff0c;还能控制品牌体验、获取宝贵的第一方数据并提升盈利能力。许多企业采取的DTC私域策略以交易为中心的方法往往导致了成本上升和运营复杂…

网络编程(1)写一个简单的UDP网络通信程序【回显服务器】,并且实现一个简单的翻译功能

使用 JAVA 自带的api 目录 一、回显服务器 UdpEchoServer 服务器代码 客户端代码 二、翻译功能 UdpDictServer 在UdpDictServer里重写process方法 一、回显服务器 UdpEchoServer /*** 回显服务器* 写一个简单的UDP的客户端/服务器 通信的程序* 这个程序没有啥业务逻辑&am…

RGB与gray图互转

参考博客 https://www.cnblogs.com/alex-bn-lee/p/15140708.html 显示图片 import cv2 from PIL import Imageimg cv2.imread("./mingyu.png") img cv2.cvtColor(img, cv2.COLOR_BGR2RGB)display(Image.fromarray(img)) RGB 转gray gray cv2.cvtColor(img, cv2…

【从零开始学习Redis | 第八篇】认识Redis底层数据结构(下)

目录 前言&#xff1a; ZipList&#xff1a; Ziplist的特性: QucikList: QuicList特征&#xff1a; SkipList&#xff1a; 跳表特征&#xff1a; RedisObijct&#xff1a; 小心得&#xff1a; 总结&#xff1a; 前言&#xff1a; 在现代软件开发中&#xff0c;数据…