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…...

C++ ——从C到C++
1、C的学习方法 (1)C知识点概念内容比较多,需要反复复习 (2)偏理论,有的内容不理解,可以先背下来,后续可能会理解更深 (3)学好编程要多练习,简…...

【图片转换PDF】多个文件夹里图片逐个批量转换成多个pdf软件,子文件夹单独合并转换,子文件夹单独批量转换,基于Py的解决方案
建筑设计公司在项目执行过程中,会产生大量的设计图纸、效果图、实景照片等图片资料。这些资料按照项目名称、阶段、专业等维度存放在多个文件夹和子文件夹中。 操作需求:为了方便内部管理和向客户交付完整的设计方案,公司需要将每个项目文件…...

前端学习之Flex布局
<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Flex布局示例</title><style>.conta…...

游戏引擎学习第97天
回顾昨天并计划今天 在这期节目中,主要讲解了光照的概念,并进一步讨论了法线贴图光照的实现。节目的内容大致分为几个部分: 光照的基础概述:讨论了光的工作原理以及如何在编程图形时需要考虑光照问题。尽管这些概念并没有深入到…...

Mysql中存储引擎各种介绍以及应用场景、优缺点
概述 MySQL 提供了多种存储引擎,每种引擎有不同的特点和适用场景。以下是几种常见的 MySQL 存储引擎的详细介绍,包括它们的底层工作原理、优缺点,以及为什么 MySQL 默认选择某种引擎。 1. InnoDB 底层工作原理: 事务支持&#…...

PHP 运算符
PHP 运算符 概述 PHP 是一种广泛使用的开源服务器端脚本语言,它具有丰富的运算符集,这些运算符是编写 PHP 程序的基础。运算符用于执行各种数学、逻辑和比较操作。本篇文章将详细介绍 PHP 中常用的运算符,包括算术运算符、比较运算符、逻辑运算符、赋值运算符等。 算术运…...

Vue全流程--Vue3.0与Vue2.0响应式原理对比
Vue2中数据的响应式 需要使用Vue.set这么一个api,修改数据 需要使用Vue.delete这么一个api,删除数据 数据代理这个当面的理解可以看看我前面文章Vue全流程--数据代理的理解以及在Vue中的应用-CSDN博客 Vue3中数据的响应式 Vue3使用proxy这个api实现…...

C语言学习笔记:子函数的调用实现各个位的累加和
在C语言程序学习之初,我们都会学习如何打印 hello world,在学习时我们知道了int main()是主函数,程序从main函数开始执行,这是流程控制的一部分内容。在主函数中我们想要实现一些功能,比如求各个…...

【大模型】本地部署DeepSeek-R1:8b大模型及搭建Open-WebUI交互页面
本地部署DeepSeek-R1:8b大模型 一、摘要及版本选择说明1.1 摘要1.2 版本选择 二、下载并安装Ollama三、运行DeepSeek-R1:8b大模型四、安装Open WebUI增强交互体验五、关闭Ollama开机自动启动六、DeepSeek大模型启停步骤 一、摘要及版本选择说明 1.1 摘要 作为一名对 AI 和生成…...

Python 调用 Stabilityai API在本地生成图像
Python 调用 Stabilityai API在本地生成图像 摘要功能 代码结构关键技术代码下载立即体验 摘要 本程序利用硅基流动目前的免费 stabilityai/stable-diffusion-2-1 模型API,生成图像并下载到本地,用户可以通过输入描述性提示词来获取相应的图像。使用Pyt…...