MySQL-高级查询

news2025/3/5 22:22:24

查询处理

排序(默认不是按主键排序的)

order by 字段1[,字段2] [asc|desc]
  • 默认是升序排序
  • 也可以指定 select 列表中列的序号进行排序
  • 如果是多个字段,那么在上一个字段排序完的基础上排序下一个

限制数量

limit 行数(从第一行开始)
limit 开始行(从0开始),行数
  • 可以使用 limit 解决分页问题 

去重

select distinct 字段1[,字段2] from 表名;
  • 如果是多个字段,则表示查询这些字段不同时一样的数据 

组合查询

select 字段1[,字段2] from 表1
union
select 字段1[,字段2] from 表2;
  • 每个查询必须包含相同数量的列
  • 列必须拥有相似的数据类型
  • union 自动去除了重复行,如果不想去除重复行,可以使用 union all

练习

函数

数值函数

abs(x):返回 x 的绝对值

ceil(x):向上取整,返回大于等于 x 的最小整数值

floor(x):向下取整,返回小于等于 x 的最大整数值

round(x,y=0):四舍五入,将 x 四舍五入 y 位小数,y 不传返回整数,y 为负数时,保留 x 值到小数点左边 y 位

truncate(x,y):截断函数,返回被舍去至小数点后 y 位的数字 x,y 为负数时截断小数点左边 y 位

mod(x,y):返回 x 除以 y 的余数

rand():生成 0-1 的随机数

字符函数

concat(s1,s2, …. ):字符串连接,如果任何一个参数为 null,则返回值为 null

concat_ws(x,s1,s2,…):指定分隔符的字符连接函数,x 是连接分隔符,如果分隔符为 null,则结果为 null

lower(str):大写转小写

upper(str):小写转大写

length(str):字符串长度

Itrim(str):删除字符串左侧空格

rtrim(str):删除字符串右侧空格

trim(str):删除字符串两侧空格

substr(str,n,len):截取子字符串,字符串 str 从 n 的位置截取长度为 len 的字符串,如果 n 为负数,则子字符串的位置起始于字符串结尾的 n 个字符

left(str,n):返回字符串 str 的最左边 n 个字符

right(str,n):返回字符串 str 的最右边 n 个字符

replace(str,from_str,to_str):替换函数,字符串 str 中所有的字符串 from_str 均被 to_str 替换,然后返回这个字符串

format (x,n):将数字 x 格式化,并以四舍五入的方式保留小数点后 n 位,结果以字符串的形式返回。若 n 为 0,则返回结果不含小数部分

日期时间函数

curdate()/current_date():获取当前日期,YYYY-MM-DD 格式

curtime()/current_time():获取当前时间,HH:MM:SS 格式

week(date):返回 date 为一年中的第几周

now()/sysdate():获取当前日期和时间,YYYY-MM-DD HH:MM:SS 格式

date_add(date,interval expr type):执行日期的加运算,date 是一个 datetime 或 date 值,指定起始时间。expr 是时间间隔。type 为关键词,如 YEAR, MONTH, DAY, WEEK, HOUR 等。

datediff(date1,date2):计算两个日期之间的间隔天数

unix_timestamp(date):返回 date 的 UNIX 时间戳

from_unixtime(unix):返回 unix 时间戳的日期值

date_format(date,format):日期格式化,按 format 格式化 date 值

str_to_date(date,format):将字符串转换成 date 类型

聚合函数(分组函数)

avg(expression):返回某列的平均值

sum(expression):返回某列值的和

count(expression):返回某列的行数

max(expression):返回某列的最大值

min(expression):返回某列的最小值

  • 聚合函数会自动的忽略空值,不需要手动增加条件排除 NULL
  • 聚合函数不能作为 where 子句后的限制条件

流程函数

if(value,t,f):如果 value 为真返回 t,否则返回 f

ifnull(column,value):如果 column 为空返回 value,否则返回 column

在 SQL 语句当中若有 NULL 值参与数学运算,计算结果一定是 NULL,为了防止计算结果出现 NULL,建议先使用 ifnull 空值处理函数预先处理

练习

分组查询

创建分组

select 字段1[,字段2] from 表名 group by 字段1;
  • 根据一个或多个字段对结果集进行分组,在分组的字段上可以使用 count、sum、avg 等函数
  • 如果分组列中具有 NULL 值,则 NULL 将作为一个分组返回。如果列中有多行NULLL值,它们将分为一组
  • group by 子句必须出现在 where 子句之后,order by 子句之前

过滤分组

select 字段1[,字段2] from 表名 group by 字段1 having 限制条件;
  • having 必须和 group by 一起使用
  • having 非常类似于 where。唯一的差别是 where 过滤行,而 having 过滤分组。having 和 where 的区别也可以理解为,where 是分组前过滤,having 是分组后过滤

练习

正则表达式

regexp 操作符后面跟的就是正则表达式,正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较。

select * from emp where ename like "%s%";

select * from emp where ename regexp "s";

like 和 regexp 的区别:

  • like:匹配整个列,如果被匹配的文本仅在列值中出现(没有配合其他通配符),like将不会找到它
  • regexp:在列值内进行匹配,如果被匹配的文本在列值中出现,regexp 将会找到它,相应的行将被返回

匹配单个实例

|:表示匹配其中之一,使用 | 从功能上类似 or

[ ]:匹配字符之一,[ ]是另一种形式的 or 语句。[123] 为 [1|2|3] 的缩写

[-]:匹配范围,使用 - 来定义一个范围。例如:[1-3]、[a-z]

ll:转义字符,多数正则表达式使用单个反斜杠作为转义字符,但MySQL 要求两个反斜杠(MySQL 自己解释一个,正则表达式库解释另一个)

匹配字符类:存在找出你自己经常使用的数字、所有字母字符或所有数字字母字符等的匹配。为更方便工作,可以使用预定义的字符集,称为字符类

匹配多个实例

常用元字符

重复元字符(修饰前一个字符)

练习 

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

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

相关文章

Apache Kafka单节点极速部署指南:10分钟搭建开发单节点环境

Apache Kafka单节点极速部署指南:10分钟搭建开发单节点环境 Kafka简介: Apache Kafka是由LinkedIn开发并捐赠给Apache基金会的分布式流处理平台,现已成为实时数据管道和流应用领域的行业标准。它基于高吞吐、低延迟的设计理念,能够…

Redis7——进阶篇(一)

前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。 基础篇: Redis(一)Redis(二)Redis(三)Redis&#x…

Sourcetrail 代码分析工具

Sourcetrail 概述 Sourcetrail 是一个代码分析工具,它旨在帮助开发人员理解和导航复杂的代码库。它可以创建代码库的可视化图形,显示代码中的类、函数、变量、依赖关系等信息,从而帮助开发人员更好地理解代码结构和关系,降低维护…

从数据到决策,永洪科技助力良信电器“智”领未来

在数字经济浪潮汹涌的时代,数字化转型已成为企业增强竞争力、实现可持续发展的必由之路。良信电器,作为国内知名的电气设备制造企业,积极响应时代号召,携手永洪科技,共同开启了数字化转型的新篇章。 上海良信电器股份有…

Python-04BeautifulSoup网络爬虫

2025-03-04-BeautifulSoup网络爬虫 记录BeautifulSoup网络爬虫的核心知识点 文章目录 2025-03-04-BeautifulSoup网络爬虫 [toc]1-参考网址2-学习要点3-核心知识点1. 安装2. 导入必要的库3. 发送 HTTP 请求4. 创建 BeautifulSoup 对象5. 解析 HTML 内容5.1 查找标签5.2 根据属性…

Spring框架自带的定时任务:Spring Task详解

文章目录 一、基本使用1、配置:EnableScheduling2、触发器:Scheduled 二、拓展1、修改默认的线程池2、springboot配置 三、源码分析参考资料 一、基本使用 1、配置:EnableScheduling import org.springframework.context.annotation.Config…

深入探索像ChatGPT这样的大语言模型

参考 【必看珍藏】2月6日,安德烈卡帕西最新AI普及课:深入探索像ChatGPT这样的大语言模型|Andrej Karpathy fineweb知乎翻译介绍 fineweb-v1原始连接 fineweb中文翻译版本 Chinese Fineweb Edu数据集 查看网络的内部结果,可以参…

week 3 - More on Collections - Lecture 3

一、Motivation 1. Java支持哪种类型的一维数据结构? Java中用于在单一维度中存储数据的数据结构,如arrays or ArrayLists. 2. 如何在Java下创建一维数据结构?(1-dimensional data structure) 定义和初始化这些一…

机器学习11-经典网络解析

机器学习11-经典网络解析 AlexNetImageNet 大规模视觉识别挑战赛一、赛事背景与目的二、数据集与任务设置三、参赛规则与流程四、评审标准与机制五、历史与影响六、中国团队的表现 贡献解析CONV1层MaxP00L1层NORM1层CONV2层 CONV3、CONV4层CONV4,Max POOL3 层FC6、F…

【数据结构】链表与顺序表的比较

链表和顺序表是两种常见的数据结构,各有优缺点,适用于不同的场景。 ### 顺序表(数组) 顺序表在内存中连续存储元素,支持随机访问。 **优点:** 1. **随机访问**:通过索引直接访问元素&#xf…

【JavaScript—前端快速入门】JavaScript 基础语法

JavaScript 基础语法 1. 变量 创建变量(变量定义 / 变量声明 / 变量初始化),JS 声明变量有3种方式 2. 通过打印日志,查看变量类型 JavaScript 是一门动态弱类型语言,变量可以存放不同类型的值(动态) 接下来,我们通过使用 log 指令…

deepseek助力运维和监控自动化

将DeepSeek与Agent、工作流及Agent编排技术结合,可实现IT运维与监控的智能化闭环管理。以下是具体应用框架和场景示例: 一、智能Agent体系设计 多模态感知Agent 日志解析Agent:基于DeepSeek的NLP能力,实时解析系统日志中的语义&a…

springboot在业务层校验对象/集合中字段是否符合要求

springboot在业务层校验对象参数是否必填 1.场景说明2.代码实现 1.场景说明 为什么不在控制层使用Validated或者Valid注解直接进行校验呢?例如通过excel导入数据,将excel数据转为实体类集合后,校验集合中属性是否符合要求。 2.代码实现 定义…

【UCB CS 61B SP24】Lecture 17 - Data Structures 3: B-Trees 学习笔记

本文以 2-3-4 树为例详细讲解了 B 树的概念,逐步分析其操作,并用 Java 实现了标准的多阶 B 树。 1. 2-3 & 2-3-4 Trees 上一节课中讲到的二叉搜索树当数据是随机顺序插入的时候能够使得树变得比较茂密,如下图右侧所示,时间复…

论文阅读笔记:UniFace: Unified Cross-Entropy Loss for Deep Face Recognition

论文阅读笔记:UniFace: Unified Cross-Entropy Loss for Deep Face Recognition 1 背景2 创新点3 方法3.1 回顾softmax损失3.2 统一交叉熵损失3.3 人脸验证中的UCE损失3.4 进一步的优化3.4.1 边际UCE损失3.4.2 平衡BCE损失 4 实验4.1 消融实验4.2 和SOTA方法对比 论…

从零开始用react + tailwindcss + express + mongodb实现一个聊天程序(十) 收发消息

1.聊天框 首先我们完善前端的消息输入框 components下面新建MessageInput组件 import { useState,useRef } from "react" import {X,Image,Send} from "lucide-react"import { useChatStore } from "../store/useChatStore" import toast from…

5分钟看懂Deepseek开源周之六:Deepseek-V3/R1推理系统设计----揭开深度求索模型系统设计和运营成本之谜

前言 众所周知,四大天王一般有五个人。所以开源周五连发有第六天也很正常。贴上了开源周活动的github主贴,大家可以不上推特就能了解详情。 deepseek-ai/open-infra-index: Production-tested AI infrastructure tools for efficient AGI development a…

C++发展

目录 ​编辑C 的发展总结:​编辑 1. C 的早期发展(1979-1985) 2. C 标准化过程(1985-1998) 3. C 标准演化(2003-2011) 4. C11(2011年) 5. C14(2014年&a…

动态规划/贪心算法

一、动态规划 动态规划 是一种用于解决优化问题的算法设计技术,尤其适用于具有重叠子问题和最优子结构性质的问题。它通过将复杂问题分解为更简单的子问题,并保存这些子问题的解以避免重复计算,从而提高效率。 动态规划的核心思想 最优子结…

python全栈-Linux基础

python全栈-Linux基础 文章目录 Linux安装/配置网络配置配置Linux远程登录配置虚拟机内部ip配置真机的ip安装XShell和Xftp目录结构用户和用户组用户管理添加用户useradd查看用户id修改用户usermod (选项)(参数)用户密码设置passed (选项)(参数)删除用户userdel [选项] 用户名 用…