Linux下学【MySQL】常用函数助你成为数据库大师~(配sql+实操图+案例巩固 通俗易懂版~)
绪论
每日激励:“唯有努力,才能进步”
绪论:
本章是MySQL中常见的函数,利用好函数能很大的帮助我们提高MySQL使用效率,也能很好处理一些情况,如字符串的拼接,字符串的获取,进制的转换以及保存密码时的加密等等,通过本章你将了解到非常多函数,但有个影响就好,收藏起来到指定场景用到了在来看看就好,下面我将持续更新MySQL,敬请期待~
————————
早关注不迷路,话不多说安全带系好,发车啦(建议电脑观看)。
1. MySQL 中函数的使用场景
在 MySQL 中,函数可以在多个地方使用,包括但不限于以下几种情况:
-
SELECT 语句中的计算
- 函数可以在
SELECT
查询中用来处理数据、进行计算或转换数据。例如:SELECT UPPER(name) FROM users;
- 函数可以在
-
WHERE 子句
- 可以在
WHERE
子句中使用函数来过滤数据。例如:SELECT * FROM users WHERE LENGTH(name) > 5;
- 可以在
-
ORDER BY 子句
- 函数可以在
ORDER BY
子句中使用来排序数据。例如:SELECT * FROM users ORDER BY LOWER(name);
- 函数可以在
-
INSERT 语句中
- 在插入数据时,可以使用函数对数据进行处理。例如:
INSERT INTO users (name, email) VALUES (UPPER('john'), CONCAT('john', '@example.com'));
- 在插入数据时,可以使用函数对数据进行处理。例如:
-
UPDATE 语句中
- 在更新数据时,可以使用函数修改字段的值。例如:
UPDATE users SET email = CONCAT(name, '@example.com') WHERE id = 1;
- 在更新数据时,可以使用函数修改字段的值。例如:
-
GROUP BY 子句
- 函数可以在
GROUP BY
子句中使用,尤其是在聚合函数的情况下。例如:SELECT UPPER(name), COUNT(*) FROM users GROUP BY UPPER(name);
- 函数可以在
-
HAVING 子句
- 在
HAVING
子句中使用函数来对分组后的数据进行进一步的过滤。例如:SELECT name, COUNT(*) FROM users GROUP BY name HAVING COUNT(*) > 1;
- 在
-
视图 (View)
- 函数也可以在视图中使用,对查询结果进行处理。例如:
CREATE VIEW user_email_view AS SELECT name, CONCAT(name, '@example.com') AS email FROM users;
- 函数也可以在视图中使用,对查询结果进行处理。例如:
-
存储过程和触发器
- 函数可以在存储过程或触发器中使用进行更复杂的操作。例如:
DELIMITER // CREATE PROCEDURE GetUserInfo(IN user_id INT) BEGINSELECT name, CONCAT(name, '@example.com') FROM users WHERE id = user_id; END // DELIMITER ;
- 函数可以在存储过程或触发器中使用进行更复杂的操作。例如:
-
索引表达式
- 在某些情况下,函数也可以用作索引表达式的一部分,尤其是在生成虚拟列时。
总结:
MySQL 的函数可以在查询的多个部分使用,包括数据选择、插入、更新、排序、分组、条件过滤等操作
下述函数将使用select执行,这样能很好的直接提现每个函数的功能,对于一些较为简单的就不配源码了,直接上实操图,对于不同场景具体分析具体使用!
2. 日期相关的函数
2.1 获取当前日期:current_date
2.2 获取当前时间:current_time
2.3 获取当前时间戳:current_timestamp
是日期 + 时间 (并不是秒数 )
2.4 获取当前时间的函数:now
2.5 从时间中提取时间:date(daetime)
select date('1949-10-01 00:00:00')
2.6 增加时间date_add(date,interval d_value_type)
其中参数:
- date:可以添加日期或时间:
- interval d_value_type:d_value_type数值的单位可以是year、minute、second、day
具体使用如下:
写法为:
select date_add('2025-01-01',interval 10 day);interval + ...
并且最终它还会按照日历进行计算
在日期的基础上减去时间:date_sub
同理:
计算两个日期之间相差多少天:datediff
使用前者的日期 减去 后者的日期
具体如下:
实操记录生日
create table tmp(id bigint primary key auto_increment,birthday date
);
插入时间:
insert into tmp(birthday) values(1990-01-01);
插入数据:
插入的细节:
- 其中current_time / current_date / current_datestamp获取到的数据都可以插入进去(其中 current_time也能重哈如可能有点奇怪但确实可以)
- 但还是就直接使用,对应的使用,日期就插入日期
实操实现留言板
创建表:
create table msg (
id bigint primary key auto_increment,
content varchar(100) not null,
sendtime datetime
);
插入数据:
insert into msg(content,sendtime) values('hello1', now());
insert into msg(content,sendtime) values('hello2', now());
select * from msg;
实现类似留言板的功能(评论),当你发表言论后会记录你到内容和时间。
3. 字符串相关函数
3.1 查看列属性的字符集:charset(string)
select charset(sal) from emp;
还能直接查看(表是提前配置好的)
3.2 拼接字符串 concat(string,…)
将传递进来的参数都看成字符串,然后拼接。
3.3 字符串中查找字符串 instr(string,substring)
不存在返回0,存在返回位置(从1开始的位置)
3.4 将string中大小写转换 ucase / lcase(string)
3.5 从左端提取len个字符 left(string,len)
同样的还有对应的 right(string,len) 从右端开始往左取len个字符
具体操作如下图:
还剩一些如下图:
3.6 concat 函数实操
要求显示exam_result表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分。
其中可以使用select进行筛选
但发现并不太优雅,现在需要通过全字符串的形式展示:
那么就是使用前面的concat函数:将获取的数据拼接成字符串
3.7 获取字符串长度 length
求学生表中学生姓名占用的字节数
其中length求的是字节数,当求字符长度时,如汉字时就会算出来汉字所占的字节数
其中下图:汉字两个共6byte(一个汉字3byte),三个数字各占1字节(3byte)
3.8 在字符串中进行字符串的替换 replace
replace(str,search_str,replace_str);
str:所要查找的str
search_str:查找的字符串
replace_str:查找后进行替换的字符串
先查找查找到后进行替换
此处的替换仅仅只是查看,并不是真正的在数据进行替换
3.9 字符串截取 substring
substring(colum,pos,len);
若len不写默认从pos截取剩下所有
3.10 以首字母小写的方式显示所有员工的姓名 实操
select ename ,concat(lcase(substring(ename,1,1)),substring(ename,2))from emp;
3.11 去除字符串中最开始和最后的空格 trim
ltrim:只去除最开始的(最左边的)、rtrim:只去除最后的(右边的)
用于:在对用户信息数据的保存时先进行去除空格操作,也就是网络传输后进行排除字符串,防止在网络传输过程中的出现添加了看不见的空字符,我们需要将其删除后再存进数据库中,不然假设有空格的话,如当用户再次输入自己的用户密码时会因为空格的原因导致无法登录,而且这种问题非常难以排查。
4. 数学函数
4.1 abs 取绝对值
select abs(-12);
4.2 bin 转二进制
简单就不写了
4.3 hex 转十六进制
3.3 conv 进制转换
select conv(number,fromm_base,to_base);
将数字number,从from_base进制 转换成 to_base进制
4.5 format 格式化,保留小数
select(number,dicimal_places);
4.7 mod 取模
4.8 random生成随机数
生成的数是从 0.0 ~ 1.0,当我们想要生成指定范围的我们就直接 * 10n即可实现(如 * 10的话就是 0 ~ 10)
其中还能嵌套函数使用,当我们将format和rand嵌套使用的话就能生成整数的随机数:
4.9 ceiling 向上取整
0向取整:
对于任何小数取整时都直接去除小数(如-14.1 = -14 、22.8 = 22)
那么向上取整的意思是:对于任何浮点数来说都按大取整(为啥叫向上取整见下图:)
取整情况为:3.1 取整为 4、-3.9 取整为 -3
实操图如下:
4.10 floor 向下取整(一般语言中用的比较多)
反之就是向下取整,就是将所有小数按小的方向取整
再如上图举例:-3.1 取整为 -4,3.9 取整为 3
实操如下图:
5. 一些其他函数
5.1 查看当前用户 user
select user;
5.2 database查看当前数据库
5.3 md5 加密
常用于加密密码:
因为密码在实际工作中一般是不直接在数据库中明文存储的,其中md5加密后变成一个32位的哈希值。
创建一个表用于测试:
也就是说当完成在插入过程中对密码使用md5进行加密然后再插入:
当我们查询时,因为内部存储的密码是md5加密的,所以查询时判断的密码也需要进行md5,这样才能正常的查询到。
5.4 password 设置密码
password是MySQL内部也设定了的函数,它专门用于设置密码,同样也会生成一个等长的字符串(一般也常用这个来进行设置)
5.5 ifnull(val1,val2)
如果val1为空就返回val2,若val1不为空则就直接返回val1了
也非常好理解就不写sql了,直接上实操图:
本章完。预知后事如何,暂听下回分解。
如果有任何问题欢迎讨论哈!
如果觉得这篇文章对你有所帮助的话点点赞吧!
持续更新大量MySQL细致内容,早关注不迷路。
相关文章:

Linux下学【MySQL】常用函数助你成为数据库大师~(配sql+实操图+案例巩固 通俗易懂版~)
绪论 每日激励:“唯有努力,才能进步” 绪论: 本章是MySQL中常见的函数,利用好函数能很大的帮助我们提高MySQL使用效率,也能很好处理一些情况,如字符串的拼接,字符串的获取,进制…...

【Rabbitmq篇】高级特性----TTL,死信队列,延迟队列
目录 一.TTL ???1.设置消息的TTL 2.设置队列的TTL 3.俩者区别? 二.死信队列 定义: 消息成为死信的原因: 1.消息被拒绝(basic.reject 或 basic.nack) 2.消息过期(TTL) 3.队列达到最大长度? …...
机器学习赋能的智能光子学器件系统研究与应用
机器学习赋能的智能光子学器件系统研究与应用 时间: 2025年03月29日-03月30日 2025年04月05日-04月06日 机器学习赋能的光子学器件与系统:从创新设计到前沿应用 课程针对光子学方面的从业科研人员及开发者,希望了解和实践在集成光学/空间…...

尚硅谷课程【笔记】——大数据之Linux【三】
课程视频链接:尚硅谷大数据Linux课程 七、定时任务调度 任务调度:指系统在某个时间执行的特定的命令或程序。 1)系统工作:有些重要的工作必须周而复始地执行。 2)个别用户工作:用户可能希望在某些特定的时…...

Visual Studio踩过的坑
统计Unity项目代码行数 编辑-查找和替换-在文件中查找 查找内容输入 b*[^:b#/].*$ 勾选“使用正则表达式” 文件类型留空 也有网友做了指定,供参考 !*\bin\*;!*\obj\*;!*\.*\*!*.meta;!*.prefab;!*.unity 打开Unity的项目 注意:只是看࿰…...
教程 | MySQL 基本指令指南(附MySQL软件包)
此前已经发布了安装教程安装教程,现在让我们来学习一下MySQL的基本指令。 一、数据库连接与退出 连接本地数据库 mysql -uroot -p # 输入后回车,按提示输入密码(密码输入不可见)若需隐藏密码显示,可使用࿱…...

企业数据集成案例:吉客云销售渠道到MySQL
测试-查询销售渠道信息-dange:吉客云数据集成到MySQL的技术案例分享 在企业的数据管理过程中,如何高效、可靠地实现不同系统之间的数据对接是一个关键问题。本次我们将分享一个具体的技术案例——通过轻易云数据集成平台,将吉客云中的销售渠…...

网络编程 day3
思维导图 以select函数模型为例 思维导图2 对应 epoll模型 应使用的函数 题目 使用epoll函数实现 两个客户端 通过服务器 实现聊天 思路 在原先代码基础上 实现 服务器 发向 客户端 使用客户端在服务器上的 套接字描述符 实现 客户端 接收 服务器…...

Excel 融合 deepseek
效果展示 代码实现 Function QhBaiDuYunAIReq(question, _Optional Authorization "Bearer ", _Optional Qhurl "https://qianfan.baidubce.com/v2/chat/completions")Dim XMLHTTP As ObjectDim url As Stringurl Qhurl 这里替换为你实际的URLDim postD…...

【论文笔记】Are Self-Attentions Effective for Time Series Forecasting? (NeurIPS 2024)
官方代码https://github.com/dongbeank/CATS Abstract 时间序列预测在多领域极为关键,Transformer 虽推进了该领域发展,但有效性尚存争议,有研究表明简单线性模型有时表现更优。本文聚焦于自注意力机制在时间序列预测中的作用,提…...

游戏手柄Type-c方案,支持一边充电一边传输数据
乐得瑞推出LDR6023SS,专门针对USB-C接口手机手柄方案,支持手机快充,支持任天堂游戏机,PS4等设备~同时支持手机充电跟数据传输 1、概述 LDR6023SS SSOP16 是乐得瑞科技针对 USB Type-C 标准中的 Bridge 设备而开发的双 USB-C DRP …...
2. 4 模块化JDK:JDK模块结构与核心模块
第3章:模块化JDK:JDK模块结构与核心模块 JDK 9 将自身拆分为一系列模块,彻底告别传统的“单一JAR(如 rt.jar)”模式。本章深入解析 JDK 的模块化架构、核心模块功能及开发者如何高效利用这些模块。 3.1 JDK 模块化设计…...
每日一题——缺失的第一个正整数
缺失的第一个正整数 题目描述进阶:数据范围: 示例示例 1示例 2示例 3 题解思路代码实现代码解释复杂度分析总结 题目描述 给定一个无重复元素的整数数组 nums,请你找出其中没有出现的最小的正整数。 进阶: 时间复杂度ÿ…...

CEF132 编译指南 MacOS 篇 - 基础开发工具安装实战 (二)
1. 引言 在 macOS 平台上编译 CEF132 之前,首要任务是搭建一个完善的开发环境。与 Windows 和 Linux 环境不同,macOS 的开发环境主要以 Xcode 为核心。本篇将作为 CEF132 编译指南系列的第二篇,详细指导读者如何在 macOS 系统上安装和配置 X…...
vi 是 Unix 和 Linux 系统中常用的文本编辑器
vi是 Unix 和 Linux 系统中常用的文本编辑器,它有几种不同的模式,其中最常用的是命令模式和插入模式。光标控制主要在命令模式下进行,以下是一些常用的vi命令来控制光标位置: • h,j,k,l:分别用于将光标向左、向下、向…...

SwanLab x verl:可视化LLM强化学习后训练教程
文章目录 介绍Verl和SwanLab1. 环境安装2. 使用方法3. 查看训练日志 介绍Verl和SwanLab verl 是一个灵活、高效且可用于生产环境的强化学习(RL)训练框架,专为大型语言模型(LLMs)的后训练设计。它由字节跳动火山引擎团…...

职场到校园,初心未改:我的2024年
Hi,大家好,我是几何心凉。 其实早就想写一份复盘文章,正好借助2024年度博客之星的评选机会,来写下这篇总结。回望过去,感慨颇多。自从加入CSDN平台以来,已经见证了许多博主的来去匆匆,各类创作…...
C++基础知识学习记录—引用
1、引用的概念 概念:引用相当于给变量取个别名 对引用进行操作与直接操作变量相同,注意引用类型与变量类型一致 #include<iostream> using namespace std; int main(){int a10;int& cite_a a;//操作引用cite_a 与操作变量a完全一样cout &l…...
AWS Savings Plans 监控与分析工具使用指南
一、背景介绍 1.1 什么是 Savings Plans? AWS Savings Plans 是一种灵活的定价模式,通过承诺持续使用一定金额的 AWS 服务来获得折扣价格。它可以帮助用户降低 AWS 使用成本,适用于 EC2、Fargate 和 Lambda 等服务。 1.2 为什么需要监控? 优化成本支出跟踪使用情况评估投…...

【AI学习】关于 DeepSeek-R1的几个流程图
遇见关于DeepSeek-R1的几个流程图,清晰易懂形象直观,记录于此。 流程图一 来自文章《Understanding Reasoning LLMs》, 文章链接:https://magazine.sebastianraschka.com/p/understanding-reasoning-llms?continueFlagaf07b1a0…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...