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

news2025/2/23 2:22:35

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

绪论​:
本章是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)
    BEGIN
        SELECT 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

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细致内容,早关注不迷路。

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

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

相关文章

[c语言日寄]在不完全递增序中查找特定要素

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…

HtmlRAG:RAG系统中,HTML比纯文本效果更好

HtmlRAG 方法通过使用 HTML 而不是纯文本来增强 RAG 系统中的知识表示能力。通过 HTML 清洗和两步块树修剪方法,在保持关键信息的同时缩短了 HTML 文档的长度。这种方法优于现有基于纯文本的RAG的性能。 方法 其实主要看下围绕html提纯思路,将提纯后的…

在WPS中通过JavaScript宏(JSA)调用本地DeepSeek API优化文档教程

既然我们已经在本地部署了DeepSeek,肯定希望能够利用本地的模型对自己软件开发、办公文档进行优化使用,接下来就先在WPS中通过JavaScript宏(JSA)调用本地DeepSeek API优化文档的教程奉上。 前提: (1)已经部署好了DeepSeek,可以看我的文章:个人windows电脑上安装DeepSe…

2023-arXiv-CoT Prompt 思维链提示提升大型语言模型的推理能力

arXiv | https://arxiv.org/abs/2201.11903 摘要: 我们探讨了如何生成思维链(一系列中间推理步骤)显著提高大型语言模型执行复杂推理的能力。在三个大型语言模型上的实验表明,思维链提示提高了一系列算术、常识和符号推理任务的性…

程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<10>

大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 今天我们继续来复习指针… 目录 一、看一段代码二、 一维数组传参的本质三、冒泡排序3.1 基本思想四、二…

CNN|ResNet-50

导入数据 import matplotlib.pyplot as plt # 支持中文 plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签 plt.rcParams[axes.unicode_minus] False # 用来正常显示负号import os,PIL,pathlib import numpy as npfrom tensorflow import keras from tensor…

吉祥汽车泰国首发,用 Unity 实现行业首创全 3D 座舱虚拟世界

11 月 19 日,均瑶集团吉祥智驱(以下简称“吉祥汽车”)首款纯电动汽车 JY AIR 在泰国首发。延续吉祥航空在飞行体验上的优势,吉祥汽车对 JY AIR 赋予了将航空级服务标准延伸至地面的使命,为用户提供一站式大出行体验。此…

【OpenCV】双目相机计算深度图和点云

双目相机计算深度图的基本原理是通过两台相机从不同角度拍摄同一场景,然后利用视差来计算物体的距离。本文的Python实现示例,使用OpenCV库来处理图像和计算深度图。 1、数据集介绍 Mobile stereo datasets由Pan Guanghan、Sun Tiansheng、Toby Weed和D…

Uniapp 原生组件层级过高问题及解决方案

文章目录 一、引言🏅二、问题描述📌三、问题原因❓四、解决方案💯4.1 使用 cover-view 和 cover-image4.2 使用 subNVue 子窗体4.3 动态隐藏原生组件4.4 使用 v-if 或 v-show 控制组件显示4.5 使用 position: fixed 布局 五、总结&#x1f38…

【数据结构初阶第十节】队列(详解+附源码)

好久不见。。。别不开心了,听听喜欢的歌吧 必须有为成功付出代价的决心,然后想办法付出这个代价。云边有个稻草人-CSDN博客 目录 一、概念和结构 二、队列的实现 Queue.h Queue.c test.c Relaxing Time! ————————————《有没…

250213-RHEL8.8-外接SSD固态硬盘

It seems that the exfat-utils package is still unavailable, even after enabling the RPM Fusion repository. This could happen if the repository metadata hasn’t been updated or if the package isn’t directly available in the RPM Fusion repository for RHEL 8…

游戏引擎学习第99天

仓库:https://gitee.com/mrxiao_com/2d_game_2 黑板:制作一些光场(Light Field) 当前的目标是为游戏添加光照系统,并已完成了法线映射(normal maps)的管道,但还没有创建可以供这些正常映射采样的光场。为了继续推进&…

Linux初始化 配置yum源

问题出现:(报错) 1 切换路径 2 备份需要操作的文件夹 3 更改 CentOS 的 YUM 仓库配置文件,以便使用阿里云的镜像源。 4 清除旧的yum缓存 5 关闭防火墙 6 生成新的yum缓存 7 更新系统软件包 8 安装软件包

【笛卡尔树】

笛卡尔树 笛卡尔树定义构建性质 习题P6453 [COCI 2008/2009 #4] PERIODNICF1913D Array CollapseP4755 Beautiful Pair[ARC186B] Typical Permutation Descriptor 笛卡尔树 定义 笛卡尔树是一种二叉树,每一个节点由一个键值二元组 ( k , w ) (k,w) (k,w) 构成。要…

Java String 类深度解析:内存模型、常量池与核心机制

目录 一、String初识 1. 字符串字面量的处理流程 (1) 编译阶段 (2) 类加载阶段 (3) 运行时阶段 2. 示例验证 示例 1:字面量直接赋值 示例 2:使用 new 创建字符串 示例 3:显式调用 intern() 注意点1: ⑴. String s1 &q…

探索顶级汽车软件解决方案:驱动行业变革的关键力量

在本文中,将一同探索当今塑造汽车行业的最具影响力的软件解决方案。从设计到制造,软件正彻底改变车辆的制造与维护方式。让我们深入了解这个充满活力领域中的关键技术。 设计软件:创新车型的孕育摇篮 车辆设计软件对于创造创新型汽车模型至…

TikTok走红全球:中国短视频平台以全新姿态登陆海外市场

在数字化浪潮中,短视频已经成为全球年轻人表达自我、分享生活的重要方式。TikTok,这个起源于中国的短视频平台,以其独特的魅力和创新的功能在全球范围内迅速走红。本文将探讨TikTok如何以全新姿态登陆海外市场,并分析其成功的关键…

计算机毕业设计Python旅游评论情感分析 NLP情感分析 LDA主题分析 bayes分类 旅游爬虫 旅游景点评论爬虫 机器学习 深度学习

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

day9手机创意软件

趣味类 in:记录趣味生活(通用) 魔漫相机:真人变漫画(通用) 活照片:让照片活过来(通用) 画中画相机:与众不同的艺术 年龄检测仪:比一比谁更年轻&#xf…

A001基于SpringBoot实现的小区物业管理系统

系统介绍 基于SpringBoot实现的小区物业管理系统是为物业管理打造的一款在线管理平台,它可以实时完成信息处理,对小区信息、住户等进行在线管理,使其系统化和规范化。 系统功能说明 1、系统共有物业、业主角色,物业拥有系统最高…