当前位置: 首页 > news >正文

Linux下学【MySQL】常用函数助你成为数据库大师~(配sql+实操图+案例巩固 通俗易懂版~)

绪论​
在这里插入图片描述
每日激励:“唯有努力,才能进步”

绪论​:
本章是MySQL中常见的函数,利用好函数能很大的帮助我们提高MySQL使用效率,也能很好处理一些情况,如字符串的拼接,字符串的获取,进制的转换以及保存密码时的加密等等,通过本章你将了解到非常多函数,但有个影响就好,收藏起来到指定场景用到了在来看看就好,下面我将持续更新MySQL,敬请期待~
————————
早关注不迷路,话不多说安全带系好,发车啦(建议电脑观看)。


1. MySQL 中函数的使用场景

在 MySQL 中,函数可以在多个地方使用,包括但不限于以下几种情况:

  1. SELECT 语句中的计算

    • 函数可以在 SELECT 查询中用来处理数据、进行计算或转换数据。例如:
      SELECT UPPER(name) FROM users;
      
  2. WHERE 子句

    • 可以在 WHERE 子句中使用函数来过滤数据。例如:
      SELECT * FROM users WHERE LENGTH(name) > 5;
      
  3. ORDER BY 子句

    • 函数可以在 ORDER BY 子句中使用来排序数据。例如:
      SELECT * FROM users ORDER BY LOWER(name);
      
  4. INSERT 语句中

    • 在插入数据时,可以使用函数对数据进行处理。例如:
      INSERT INTO users (name, email) VALUES (UPPER('john'), CONCAT('john', '@example.com'));
      
  5. UPDATE 语句中

    • 在更新数据时,可以使用函数修改字段的值。例如:
      UPDATE users SET email = CONCAT(name, '@example.com') WHERE id = 1;
      
  6. GROUP BY 子句

    • 函数可以在 GROUP BY 子句中使用,尤其是在聚合函数的情况下。例如:
      SELECT UPPER(name), COUNT(*) FROM users GROUP BY UPPER(name);
      
  7. HAVING 子句

    • HAVING 子句中使用函数来对分组后的数据进行进一步的过滤。例如:
      SELECT name, COUNT(*) FROM users GROUP BY name HAVING COUNT(*) > 1;
      
  8. 视图 (View)

    • 函数也可以在视图中使用,对查询结果进行处理。例如:
      CREATE VIEW user_email_view AS
      SELECT name, CONCAT(name, '@example.com') AS email FROM users;
      
  9. 存储过程和触发器

    • 函数可以在存储过程或触发器中使用进行更复杂的操作。例如:
      DELIMITER //
      CREATE PROCEDURE GetUserInfo(IN user_id INT)
      BEGINSELECT name, CONCAT(name, '@example.com') FROM users WHERE id = user_id;
      END //
      DELIMITER ;
      
  10. 索引表达式

    • 在某些情况下,函数也可以用作索引表达式的一部分,尤其是在生成虚拟列时。

总结:
MySQL 的函数可以在查询的多个部分使用,包括数据选择、插入、更新、排序、分组、条件过滤等操作


下述函数将使用select执行,这样能很好的直接提现每个函数的功能,对于一些较为简单的就不配源码了,直接上实操图,对于不同场景具体分析具体使用!


2. 日期相关的函数

2.1 获取当前日期:current_date

在这里插入图片描述

2.2 获取当前时间:current_time

在这里插入图片描述

2.3 获取当前时间戳:current_timestamp

是日期 + 时间 (并不是秒数 )
在这里插入图片描述

2.4 获取当前时间的函数:now

t

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的项目 注意:只是看&#xff0…...

教程 | MySQL 基本指令指南(附MySQL软件包)

此前已经发布了安装教程安装教程,现在让我们来学习一下MySQL的基本指令。 一、数据库连接与退出 连接本地数据库 mysql -uroot -p # 输入后回车,按提示输入密码(密码输入不可见)若需隐藏密码显示,可使用&#xff1…...

企业数据集成案例:吉客云销售渠道到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,请你找出其中没有出现的最小的正整数。 进阶: 时间复杂度&#xff…...

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、引用的概念 概念&#xff1a;引用相当于给变量取个别名 对引用进行操作与直接操作变量相同&#xff0c;注意引用类型与变量类型一致 #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的几个流程图&#xff0c;清晰易懂形象直观&#xff0c;记录于此。 流程图一 来自文章《Understanding Reasoning LLMs》&#xff0c; 文章链接&#xff1a;https://magazine.sebastianraschka.com/p/understanding-reasoning-llms?continueFlagaf07b1a0…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

Python训练营-Day26-函数专题1:函数定义与参数

题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一个名为 calculate_circle_area 的函数&#xff0c;该函数接收圆的半径 radius 作为参数&#xff0c;并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求&#xff1a;函数接收一个位置参数 radi…...

macOS 终端智能代理检测

&#x1f9e0; 终端智能代理检测&#xff1a;自动判断是否需要设置代理访问 GitHub 在开发中&#xff0c;使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新&#xff0c;例如&#xff1a; fatal: unable to access https://github.com/ohmyzsh/oh…...