MySQL基础函数使用
目录
简介
1. 单行函数
1.1 字符串函数
1.2 日期函数
1.3 数值函数
1.4 转换函数
1.5 其他函数
2. 多行函数
示例:
3. 数据分组
示例:
4. DQL单表关键字执行顺序
示例:
5. 多表查询
示例:
6. 表与表的外连接
示例:
7. 表与表的自连接
8. 表与表的子连接
9. 表与表的伪表查询
简介
在数据库操作中,函数是不可或缺的工具,它们可以帮助我们快速处理数据、转换格式、进行计算等。MySQL提供了丰富的内置函数,涵盖了字符串、日期、数值、转换等多种类型。本文将详细介绍MySQL中的基础函数使用方法,帮助你更好地理解和应用这些函数。
1. 单行函数
单行函数是指对一行数据进行操作并返回一行数据的函数。无论输入多少行数据,单行函数都会逐行处理并返回相应的结果。
1.1 字符串函数
字符串函数主要用于处理字符串数据,常见的字符串函数包括:
-
LENGTH: 返回字符串的长度。
SELECT ename, LENGTH(ename) FROM emp; -
SUBSTR: 截取字符串的一部分。
SELECT ename, SUBSTR(ename, 1, 3) FROM emp; SELECT * FROM emp WHERE SUBSTR(ename, 5, 1) = 'S'; -
UPPER/LOWER: 将字符串转换为大写或小写。
SELECT ename, UPPER(ename), LOWER(ename) FROM emp; -
CONCAT: 拼接字符串。
SELECT CONCAT(empno, '=', ename) FROM emp; -
REPLACE: 替换字符串中的指定字符。
SELECT ename, REPLACE(ename, 'T', '—') FROM emp;
1.2 日期函数
日期函数用于处理日期和时间数据,常见的日期函数包括:
-
SYSDATE(): 获取当前系统时间。
SELECT hiredate, SYSDATE() FROM emp; SELECT hiredate, CURRENT_DATE(), CURRENT_TIME(), CURRENT_TIMESTAMP() FROM emp; -
DATE_FORMAT: 格式化日期。
SELECT DATE_FORMAT(SYSDATE(), '%Y-%m-%d %H:%i:%s'); SELECT hiredate, DATE_FORMAT(NOW(), '%Y年%m月%d日 %H时%i分%s秒') FROM emp; -
ADDDATE: 对日期进行加减操作。
SELECT hiredate, ADDDATE(hiredate, 9), ADDDATE(hiredate, -9) FROM emp;
1.3 数值函数
数值函数用于处理数值数据,常见的数值函数包括:
-
CEIL/FLOOR: 向上或向下取整。
SELECT CEIL(12.1), FLOOR(12.9); -
ROUND/TRUNCATE: 四舍五入或截取指定小数位。
SELECT ROUND(1.4999999, 2), ROUND(1.4999999), ROUND(1.4999999, -1); SELECT TRUNCATE(1.4999999, 2);
1.4 转换函数
转换函数用于在不同数据类型之间进行转换,常见的转换函数包括:
-
DATE_FORMAT: 将日期转换为字符串。
SELECT DATE_FORMAT(SYSDATE(), '%Y-%m-%d %H:%i:%s'); -
STR_TO_DATE: 将字符串转换为日期。
SELECT STR_TO_DATE('2020-4-16 17:15:24', '%Y-%c-%d %H:%i:%s');
1.5 其他函数
其他函数包括处理空值、加密等操作:
-
IFNULL: 处理空值。
SELECT IFNULL(comm, 888) FROM emp; -
MD5/AES_ENCRYPT/AES_DECRYPT: 加密和解密。
SELECT MD5('123456');
SELECT AES_ENCRYPT('123456', 'abcd'), AES_DECRYPT(AES_ENCRYPT('123456', 'abcd'), 'abcd');
2. 多行函数
多行函数是对多行数据进行操作并返回一行数据的函数。常见的多行函数包括:
-
MAX/MIN: 获取最大值或最小值。
-
AVG: 计算平均值。
-
SUM: 求和。
-
COUNT: 统计总数。
示例:
-
查询每个部门的平均薪资:
SELECT deptno, AVG(sal) FROM emp GROUP BY deptno; -
查询公司最高薪资的员工:
SELECT ename, sal FROM emp WHERE sal = (SELECT MAX(sal) FROM emp);
3. 数据分组
数据分组是将数据按照某个条件进行分组,并对每组数据进行统计。常见的分组操作包括:
-
GROUP BY: 对数据进行分组。
-
HAVING: 对分组后的数据进行过滤。
示例:
-
查询每个部门的最高薪资和最低薪资:
SELECT deptno, MAX(sal), MIN(sal) FROM emp GROUP BY deptno; -
查询每个部门的人数和每月工资总数:
SELECT deptno, COUNT(*), SUM(sal) FROM emp GROUP BY deptno; -
查询每个部门,每种工作的平均薪资:
SELECT deptno, job, AVG(sal) FROM emp GROUP BY deptno, job; -
查询平均薪资高于2500的部门:
SELECT deptno, AVG(sal) FROM emp GROUP BY deptno HAVING AVG(sal) > 2500;
4. DQL单表关键字执行顺序
在SQL查询中,关键字的执行顺序非常重要。常见的执行顺序如下:
-
FROM: 指定数据来源。
-
WHERE: 行级过滤。
-
GROUP BY: 数据分组。
-
SELECT: 选择显示的列。
-
HAVING: 组级过滤。
-
ORDER BY: 排序。
-
LIMIT: 限制返回的行数。
示例:
-
查询10和20部门中,在二月份入职的员工,每个部门中平均薪资高于1500的工作,并按照部门和平均薪资排序:
SELECT deptno, job, AVG(sal) FROM emp WHERE MONTH(hiredate) = 2 AND deptno IN (10, 20) GROUP BY deptno, job HAVING AVG(sal) > 1500 ORDER BY deptno, AVG(sal);
5. 多表查询
多表查询是指从多张表中获取数据。常见的多表查询方式包括:
-
等值连接: 通过等值条件连接两张表。
-
自然连接: 自动选择列名相同且类型相同的列进行连接。
-
USING: 指定连接列。
-
ON: 指定连接条件。
示例:
-
查询每个员工所在的部门名称:
SELECT e.ename, d.dname FROM emp e JOIN dept d ON e.deptno = d.deptno; -
查询薪资大于2000的员工姓名和部门名称:
SELECT e.ename, d.dname FROM emp e JOIN dept d ON e.deptno = d.deptno WHERE e.sal > 2000;
6. 表与表的外连接
外连接用于在关联查询中显示未匹配的数据。常见的外连接包括:
-
左外连接: 显示左表所有数据。
-
右外连接: 显示右表所有数据。
示例:
-
统计每个部门的人数:
SELECT d.dname, COUNT(e.empno) FROM dept d LEFT JOIN emp e ON d.deptno = e.deptno GROUP BY d.dname;
7. 表与表的自连接
自连接是指将一张表视为两张表进行查询。常见的自连接操作包括:
-
查询每个员工与其直属领导的名字:
SELECT e1.ename AS employee, e2.ename AS manager FROM emp e1 LEFT JOIN emp e2 ON e1.mgr = e2.empno;
8. 表与表的子连接
子连接是指将一个查询结果作为另一个查询的条件。常见的子连接操作包括:
-
查询公司中谁的薪资高于平均薪资:
SELECT ename, sal FROM emp WHERE sal > (SELECT AVG(sal) FROM emp); -
查询谁的薪资高于20部门员工的薪资:
SELECT ename, sal FROM emp WHERE sal > (SELECT AVG(sal) FROM emp WHERE deptno = 20);
9. 表与表的伪表查询
伪表查询是指将多个查询结果作为伪表进行管理。常见的伪表查询操作包括:
-
查询高于自己部门平均薪资的员工信息:
SELECT e.ename, e.sal, e.deptno FROM emp e JOIN (SELECT deptno, AVG(sal) AS avg_sal FROM emp GROUP BY deptno) AS dept_avg ON e.deptno = dept_avg.deptno WHERE e.sal > dept_avg.avg_sal;
相关文章:
MySQL基础函数使用
目录 简介 1. 单行函数 1.1 字符串函数 1.2 日期函数 1.3 数值函数 1.4 转换函数 1.5 其他函数 2. 多行函数 示例: 3. 数据分组 示例: 4. DQL单表关键字执行顺序 示例: 5. 多表查询 示例: 6. 表与表的外连接 示例…...
解决docker环境下aspose-words转换word成pdf后乱码问题
描述 环境:docker 部署工具:Jenkins 需求:本地上传的word文档需要转换成pdf 问题:转换之后的pdf文档出现小框框(乱码) 转换成PDF的操作 pom: <dependency><groupId>org.apach…...
C# 生成随机数的方法
C# 提供了一种强大而方便的工具类 Random ,用于生成随机数。这里将分类讨论如何通过 C# 实现随机数生成,以及应用于实际情况中的一些具体方案。 一、Random 类概述 Random 类表示一个伪随机数生成器,用于生成满足随机性统计要求的数字序列。…...
ip_done
文章目录 路由结论 IP分片 数据链路层重谈Mac地址MAC帧报头局域网的通信原理MSS,以及MAC帧对上层的影响ARP协议 1.公司是不是这样呢? 类似的要给运营商交钱,构建公司的子网,具有公司级别的入口路由器 2.为什么要这样呢?? IP地…...
3D可视化引擎HOOPS Visualize与HOOPS Luminate Bridge的功能与应用
HOOPS Visualize HPS / HOOPS Luminate Bridge为开发者提供了强大的工具,用于在CAD应用中集成逼真的渲染能力。本文旨在梳理该桥接产品的核心功能、使用方法及应用场景,为用户快速上手并充分利用产品特性提供指导。 桥接产品的核心功能概述 HOOPS Lumi…...
Docder 搭建Redis分片集群 散片插槽 数据分片 故障转移 Java连接
介绍 使多个 Redis 实例共同工作,实现数据的水平扩展。通过将数据分片到多个节点上,Redis 集群能够在不牺牲性能的前提下扩展存储容量和处理能力,从而支持更高并发的请求。Redis 集群不仅支持数据分片,还提供了自动故障转移和高可…...
校园交友app/校园资源共享小程序/校园圈子集合二手物品交易论坛、交友等综合型生活服务社交论坛
多客校园社交圈子系统搭建 校园交友多功能系统源码: 1、更改学校为独立的模块。整体UI改为绿色,青春色,更贴近校园风格。2、圈子归纳到学校去进行运营。每个学校可建立多个圈子。和其他学校圈子互不干扰。3、增加用户绑定学校,以后进入将默认…...
Chaos Mesh云原生的混沌测试平台搭建
Chaos Mesh云原生的混沌测试平台搭建 一.环境准备 确认已经安装helm,如要查看 Helm 是否已经安装,请执行如下命令: helm version二.使用helm安装 1.添加 Chaos Mesh 仓库 在 Helm 仓库中添加 Chaos Mesh 仓库: helm re…...
Vue3之组合式API详解
Vue 3引入了一种新的API风格——组合式API(Composition API),旨在提升组件的逻辑复用性和可维护性。本文将详细阐述Vue 3中的组合式API,包括其定义、特点、使用场景、优势等,并给出具体的示例代码。 一、定义 组合式…...
大模型的构建与部署(3)——数据标注
版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl1. 数据标注的重要性 1.1 增强数据可解释性 数据标注通过为原始数据添加标签或注释,显著增强了数据的可解释性。在机器学习和深度学习领域,模型的训练依赖于大量带标签的数据。这些标签不仅帮助…...
AI发展与LabVIEW程序员就业
人工智能(AI)技术的快速发展确实对许多行业带来了变革,包括自动化、数据分析、软件开发等领域。对于LabVIEW程序员来说,AI的崛起确实引发了一个值得关注的问题:AI会不会取代他们的工作,导致大量失业&#x…...
本地事务 + 消息队列事务方案设计
Spring Boot 和 RocketMQ 在Spring Boot项目中实现“本地事务 消息队列事务”的方案,可以按照以下步骤实现: 先执行MySQL本地事务操作(未提交)随后发送消息到消息队列(如RocketMQ事务消息)等待消息队列确…...
pinctrl子系统学习笔记
一、背景 cpu的gpio引脚可以复用成多个功能,如可以配置成I2C或者普通GPIO模式。配置方式一般是通过写引脚复用的配置寄存器,但是不同芯片厂商配置寄存器格式内容各不相同,设置引脚复用无法做到通用且自由的配置,只能在启动初始化…...
使用vue-element 的计数器inputNumber,传第三个参数
使用vue-element 的计数器inputNumber。 其中的change 事件中,默认自带两个参数,currentValue和oldValue,分别代表改变后的数和改变前的数, 如果想要传第三个参数, change"(currentValue, oldValue) > numCha…...
如何从0构建一个flask项目,直接上实操!!!
项目结构 首先,创建一个项目目录,结构如下: flask_app/ │ ├── app.py # Flask 应用代码 ├── static/ # 存放静态文件(如CSS、JS、图片等) │ └── style.css # 示例…...
Mongoose连接数据库操作实践
文章目录 介绍特点:Mongoose 使用:创建项目并安装:连接到 MongoDB:定义 Schema:创建模型并操作数据库:创建文档:查询文档:更新文档:删除文档:使用钩子&#x…...
centos 7.9 freeswitch1.10.9环境搭建
亲测版本centos 7.9系统–》 freeswitch1.10.9 一、下载插件 yum install -y git alsa-lib-devel autoconf automake bison broadvoice-devel bzip2 curl-devel libdb4-devel e2fsprogs-devel erlang flite-devel g722_1-devel gcc-c++ gdbm-devel gnutls-devel ilbc2...
Gitlab服务管理和仓库项目权限管理
Gitlab服务管理 gitlab-ctl start # 启动所有 gitlab 组件; gitlab-ctl stop # 停止所有 gitlab 组件; gitlab-ctl restart # 重启所有 gitlab 组件; gitlab-ctl status …...
LLMs之Llama-3:Llama-3.3的简介、安装和使用方法、案例应用之详细攻略
LLMs之Llama-3:Llama-3.3的简介、安装和使用方法、案例应用之详细攻略 目录 相关文章 LLMs之LLaMA:LLaMA的简介、安装和使用方法、案例应用之详细攻略 LLMs之LLaMA-2:LLaMA 2的简介(技术细节)、安装、使用方法(开源-免费用于研究和商业用途…...
OpenCV函数及其应用
1. 梯度处理的Sobel算子函数 功能 Sobel算子是一种用于边缘检测的离散微分算子,它结合了高斯平滑和微分求导,用于计算图像亮度的空间梯度。 参数 src:输入图像。 dst:输出图像。 ddepth:输出图像的深度。 dxÿ…...
Synopsys AXI VIP实战:如何用reorder和delay配置模拟真实SoC总线行为
Synopsys AXI VIP实战:用reorder与delay构建高保真SoC总线模拟环境 在SoC验证领域,AXI总线协议的复杂性常常成为验证工程师面临的主要挑战。当CPU通过Cache访问低速外设时,总线上的竞争、延迟和乱序响应会形成难以预测的行为模式。Synopsys A…...
一、BLE入门:从广播信道到报文解析,构建无线连接基石
1. BLE技术入门:无线世界的敲门砖 第一次接触BLE技术时,我完全被那些专业术语搞懵了。什么广播信道、报文解析,听起来就像天书一样。但当我真正动手调试一个智能手环项目后,才发现BLE其实就像两个人在嘈杂的教室里传纸条——需要…...
mPLUG-Owl3-2B多场景落地指南:教育、电商、医疗、政务四大方向实操
mPLUG-Owl3-2B多场景落地指南:教育、电商、医疗、政务四大方向实操 1. 引言:当AI能“看懂”图片,你的业务能做什么? 想象一下,你是一位电商运营,每天要处理上千张商品图,手动写描述、打标签&a…...
LLM推理流式响应延迟骤降73%:FastAPI 2.0 + asyncpg + Redis Stream 实战调优,附可复用中间件代码库
第一章:LLM推理流式响应延迟骤降73%:FastAPI 2.0 asyncpg Redis Stream 实战调优,附可复用中间件代码库在高并发LLM服务场景中,传统同步I/O与阻塞式数据库访问常导致首字节延迟(TTFB)飙升。我们通过重构请…...
智能票务自动化工具:提升大型活动门票获取效率的全流程解决方案
智能票务自动化工具:提升大型活动门票获取效率的全流程解决方案 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 在数字化时代,大型展会、体育赛事等热…...
从‘torch not found’到成功训练:一个YOLOv8环境配置的完整避坑实录(含CUDA/cuDNN版本选择)
YOLOv8环境配置终极指南:从版本匹配到显存优化的全流程实战 在计算机视觉领域,YOLOv8作为目标检测的标杆算法,其安装配置过程却常常成为开发者的"拦路虎"。本文将带你系统解决从PyTorch版本选择、CUDA环境配置到显存优化的全链路问…...
从入门到精通解析Python Selenium如何模拟浏览器操作
Selenium是一款开源的自动化测试工具,核心优势在于能模拟真实用户操作浏览器(如点击、输入、滚动),并渲染动态加载的网页内容(解决Requests库无法爬取JS动态数据的问题)。 一、Selenium入门准备:…...
XHS-Downloader:解决小红书内容高效采集难题的开源解决方案
XHS-Downloader:解决小红书内容高效采集难题的开源解决方案 【免费下载链接】XHS-Downloader 小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户链接…...
突破平台限制:WorkshopDL重构Steam创意工坊资源获取体验
突破平台限制:WorkshopDL重构Steam创意工坊资源获取体验 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL WorkshopDL作为一款仅10MB大小的开源工具,通过智…...
别再用asyncio硬扛高并发了!无GIL环境下Python原生多线程性能翻倍的6个核心调优参数
第一章:Python无锁GIL环境下的并发模型演进全景Python长期以来受全局解释器锁(GIL)制约,导致多线程无法真正并行执行CPU密集型任务。近年来,随着CPython 3.12正式引入实验性“无GIL构建选项”(--without-py…...
