内置函数【MySQL】

文章目录

  • MySQL 内置函数
  • 日期和时间函数
  • 字符串函数
  • 数学函数
  • 信息函数
  • 参考资料

MySQL 内置函数

MySQL 的内置函数主要分为以下几种:

  • 字符串函数:用于对字符串进行操作,如连接、截取、替换、反转、格式化等。
  • 数值函数:用于对数值进行计算,如求和、平均、最大、最小、绝对值、幂、对数、三角函数等。
  • 日期和时间函数:用于对日期和时间进行操作,如获取当前日期和时间、格式化日期和时间、计算日期和时间的差值、提取日期和时间的部分等。
  • 聚合函数:用于对一组数据进行统计,如计数、求和、平均、最大、最小、标准差、方差等。
  • 流程控制函数:用于根据条件执行不同的操作,如条件判断、选择、循环等。
  • 信息函数:用于获取数据库、表、列、用户等的信息,如数据库名、表名、列名、用户名、版本号等。

日期和时间函数

常用的日期和时间函数有:

函数名称描述
current_date()获取当前日期
current_time()获取当前时间
current_timestamp()获取当前时间戳
now()获取当前日期时间
date(datetime)获取 datetime 参数的日期部分
date_add(date, interval d_value_type)在 date 中添加日期或时间,interval 后的数值单位可以是:year、month、day、hour、minute、second
date_sub(date, interval d_value_type)在 date 中减去日期或时间,interval 后的数值单位可以是:year、month、day、hour、minute、second
datediff(date1, date2)获取两个日期的差,单位是天

current_date 函数、current_time 函数、current_timestamp 函数和 now 函数:获取当前日期、时间、时间戳以及当前日期时间:

image-20231126162905547

date 函数:获取获取 datetime 参数的日期部分:

image-20231126163204482

在已有日期的基础上添加日期或时间:

image-20231126163427798

操作的单位可以是日期或时间,根据原有的日期或时间而可以精确到秒数。

date_sub 函数的功能完全相同,只是它对已有日期或时间操作的是减法运算。

获取两个日期的差,单位是天:

image-20231126163913008

日期和时间是数据的一种属性,例如在网上发表评论,需要用日期和时间标记。

评论测试表:

image-20231126165005903

插入记录并查询:

image-20231126165034820

用户可能不需要这么精确的日期或时间,对于比较久远的评论,可以只精确到天:

image-20231126165239802

如果要查询 2 分钟之前的评论,就可能需要用若干函数组合来查询了:

image-20231126165737087

字符串函数

常用字符串函数有:

函数名称描述
charset(str)获取字符串使用的字符集
concat(str1, str2 [, …])获取连接后的字符串
instr(str, substr)获取 substr 在 str 中首次出现的位置,没有出现返回 0
ucase(str)获取转换成大写后的字符串
lcase(str)获取转换成小写后的字符串
left(str, length)从字符串的左边开始,向后截取 length 个字符
length(str)获取字符串占用的字节数
replace(str, search_str, replace_str)将字符串中的 search_str 替换成 replace_str
strcmp(str1, str2)逐字符比较两个字符串的大小
substring(str, position [, length])从字符串的 position 开始,向后截取 length 个字符
ltrim(str)、rtrim(str)、trim(str)去除字符串的前空格、后空格、前后空格

charset 函数用来返回指定字符串的字符集。字符集是一种给定一系列字符并赋予对应的编码的方式。例如,给定字符列表为 {‘A’,’B’}时, {‘A’=>0, ‘B’=>1}就是一个字符集。

例如查看这张员工雇佣表中名字这一列的字符集:

image-20231128141857258

concat 函数:按参数顺序连接字符串。例如将上面的雇佣表的列属性按照如下方式连接成一个字符串。

image-20231128142250417

instr 函数:获取一个字符串在另一个字符串中首次出现的位置,如果没有出现则返回 0。

image-20231128142353993

ucase 函数:获取转换成大写后的字符串。

image-20231128142434264

lcase 函数:获取转换成小写后的字符串。

image-20231128142516985

left 函数:从字符串的左边开始,向后截取指定个数的字符。

image-20231128142712051

length 函数:获取字符串占用的字节数。

image-20231128142758258

值得注意的是这个函数返回的是字节数而不是字符数,如果是汉字,utf8 占 3 个字节,gbk 占 2 个字节。

replace 函数:将字符串中的指定子字符串替换成另一个字符串。

image-20231128143010442

strcmp 函数:逐字符按照 ASCII 码比较两个字符串的大小,两个字符串大小相等返回 0,前者大返回 1,后者大返回 - 1。且不区分大小写。

image-20231128143205001

substring 函数:从字符串的指定位置开始,向后截取指定个数的字符。

image-20231128143253039

trim 函数:去除字符串的前后空格。

ltrim 和 rtrim 函数:去除字符串的前空格和后空格。

image-20231128143542322

以首字母小写的方式显示员工表中所有员工的姓名:

  1. substring 函数和 lcase 函数将姓名的第一个字母转换成小写。
  2. substring 函数截取员工姓名的第二个字符及其后续字符。
  3. concat 函数用于连接上面获得的两个字符串。
image-20231128143820702

数学函数

常用的数学函数如下:

函数名称描述
abs(number)绝对值函数
bin(decimal_number)十进制转换成二进制
hex(decimal_number)十进制转换成十六进制
conv(number, from_base, to_base)from_base 进制转换成 to_base 进制
ceiling(number)向上取整
floor(number)向下取整
format(number, n)格式化,保留 n 位小数(四舍五入)
rand()生成随机浮点数,范围 [0.0, 1.0)
mod(number, denominator)求余

abs 函数:获取参数绝对值。

image-20231128144934588

bin 函数和 hex 函数:将参数转换为二进制或十六进制:
image-20231128145011445

conv 函数:进制转换。

image-20231128145049121

ceiling 函数:对参数向上取整。

image-20231128145147136

floor 函数:对参数向下取整。

image-20231128145231947

format 函数:对参数格式化,以四舍五入的方式保留指定位数的小数。

image-20231128145317310

rand 函数:生成 0.0 到 1.0 的随机浮点数。

image-20231128145344356

如果想要生成 0 到 100 的随机数,可以用生成的随机浮点数乘以 100,然后再取整。

image-20231128145421317

mod 函数:对参数求余。

image-20231128145514818

信息函数

user 函数:获取 MySQL 连接的当前用户名和主机名。

image-20231128145718504

md5 函数:对一个字符串进行 md5 摘要,摘要后得到一个 32 位字符串。

image-20231128145735586

md5 是一种密码散列函数,它可以将任意长度的信息映射为固定长度(通常为 32bit)的哈希值。它具有不可逆性、唯一性和抗碰撞性。并且由于哈希算法的雪崩效应,即使被加密的信息发生了一个很微小的改动,也会使得最后的哈希值变得完全不同。这是因为密码哈希算法通常采用对轮迭代和复杂的非线性变换,使得输入的每一位都会影响输出的每一位(信息安全专业的同学应该会比较了解)。

在工业应用中持久化存储用户的账号和密码这样的私密信息时,为了用户的安全是不会存储明文的,而是存储它的摘要,在验证时也是也是以同样的方式对用户输入的密码进行摘要,通过与数据库中的哈希值比较以验证用户身份。

这么做也有一个好处,不论用户的密码多长,加密得到的哈希值总是固定的,这样在设计表时就可以用固定长度的列存储密码摘要。

database 函数:显示当前正在使用的数据库。

image-20231128150651038

password 函数:对用户数据进行加密。

image-20231128150639319

另外,像 password 这样涉及用户隐私的函数,它不会被保存在 MySQL 的历史命令中(键盘上下方向键查看)。

ifnull 函数接受两个参数,如果第一个参数不为 null 则返回第一个参数值,否则返回第二个参数值。

image-20231128150733468

参考资料

  • MySQL 函数|菜鸟教程
  • MySQL 内置函数

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

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

相关文章

使用 Mybatis 的 TypeHandler 存取 Postgresql jsonb 类型

文章目录 使用 TypeHandler 存取 Postgresql jsonb 类型常见错误column "" is of type jsonb but expression is of type character varying 使用 TypeHandler 存取 Postgresql jsonb 类型 首先在数据库表中定义 jsonb 类型: create table tb_user_info…

Android Studio导入项目一直显示正在下载Gradle项目

如题,问题图类似如下: (此图是解决以后截的,之前遇到问题没截图) 解决方法 先找到你正在下载的gradle的版本是哪个 然后在链接中 ​​​​​​Gradle Distributions 找到你所对于gradle的版本,下载对应…

【攻防世界-misc】János-the-Ripper

1.下载并解压桌面 2.用记事本打开misc100,可以看见文件里面是有flag.txt文件的, 3.将文件复制到虚拟机kali中,使用命令:binwalk -e 桌面/misc100 4.解压完以后打开桌面,会出现一个分离后的文件夹,打开文件…

windows10 Arcgis pro3.0-3.1

我先安装的arcgis pro3.0,然后下载的3.1。 3.0里面有pro、help、sdk、还有一些补丁包根据个人情况安装。 3.1里面也是这些。 下载 正版试用最新的 ArcGIS Pro 21 天教程,仅需五步!-地理信息云 (giscloud.com.cn) 1、安装windowsdesktop-…

Git删除临时分支

愿所有美好如期而遇 软件开发过程中,总有功能要添加进来,当我们有一个功能开发了一半的时候,产品经理说这个功能不需要了,尽管很无奈,但还是要删除,我开发到一半的分支如何删除呢? 所以需要使用…

第14关 快速定位业务服务慢的问题:利用 Ingress-Nginx 和日志查询实现高效故障排查

大家好,我是博哥爱运维。 有这样的一个生产场景,客户访问我们的服务请求超时或感觉很慢的时候,会向我们的客服反馈问题,这个时候,客服就会来找到我们运维让帮助排查下原因。 这里我们运维人员首先要对自己业务的整个…

记录Windows下安装redis的过程

开源博客项目Blog支持使用EasyCaching组件操作redis等缓存数据库,在继续学习开源博客项目Blog之前,准备先学习redis和EasyCaching组件的基本用法,本文记录在Windows下安装redis的过程。   虽然redis官网文档写着支持Linux、macOS、Windows等…

冒泡排序以及改进方案

冒泡排序以及改进方案 介绍: 冒泡排序属于一种典型的交换排序(两两比较)。冒泡排序就像是把一杯子里的气泡一个个往上冒一样。它不断比较相邻的元素,如果顺序不对就像水泡一样交换它们的位置,直到整个序列像水泡一样…

使用opencv实现更换证件照背景颜色

1 概述 生活中经常要用到各种要求的证件照电子版,红底,蓝底,白底等,大部分情况我们只有其中一种,本文通过opencv实现证件照背景的颜色替换。 1.1 opencv介绍 OpenCV(Open Source Computer Vision Librar…

UI上传组件异步上传更改为同步

实现异步方法 JavaScript 异步 实现异步的五种实现方法_js异步-CSDN博客 这两种比较经常用。 因为上传组件是异步上传的通过Async和await配合使用可以上传完照片视频后返回的地址在继续走下去,而不是图片视频地址还未获取时就上传后端了。

java文件上传以及使用阿里云OSS

JavaWeb 文件上传本地存储阿里云OSS配置文件 yml配置文件 文件上传 前端页面三要素: 表单项type“file” 表单提交方式post 表单的enctype属性multipart/form-data 本地存储 保证上传的文件不重复 //获取原始文件名String originalFilename image.getOriginalFi…

计算机毕业设计 基于PHP的考研互助交流系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

机器学习笔记 - 基于百度飞桨PaddleSeg的人体分割

一、简述 虽然Segment Anything用于图像分割的通用大模型看起来很酷(飞桨也提供分割一切的模型),但是个人感觉落地应用的时候心里还是更倾向于飞桨这种场景式的,因为需要用到一些人体分割的需求,所以这里主要是对飞桨高性能图像分割开发套件进行了解和使用,但是暂时不训练…

day64 django中间件的复习使用

django中间件 django中间件是django的门户 1.请求来的时候需要先经过中间件才能达到真正的django后端 2.响应走的时候也需要经过中间件 ​ djangp自带七个中间件MIDDLEWARE [django.middleware.security.SecurityMiddleware,django.contrib.sessions.middleware.SessionMiddle…

解决Maven项目jar包下载失败的问题

文章目录 配置国内的Maven源引入正确的settings.xml文件重新下载jar包对后面要创建的新项目也统一配置仍然失败的解决办法 配置国内的Maven源 引入正确的settings.xml文件 如果该目录下的 settings.xml文件不存在或者错误,要创建一个 settings.xml文件并写入正确的…

Java 常用容器

目录 列表栈&#xff08;类&#xff09;队列(接口)setMap 列表 package com.czl;import java.util.ArrayList; import java.util.List; //AltEnter导入包 public class Main {public static void main(String[] args) throws Exception{List<Integer> list new ArrayLis…

这个变量要不要用volatile修饰呢?

正文 大家好&#xff0c;又见面了&#xff0c;我是bug菌~ 在嵌入式软件开发过程中&#xff0c;如果对volatile不熟&#xff0c;那可以你应该是个"假嵌入式程序员"&#xff0c;因为一个变量需不需要使用volatile考虑的场景挺多的&#xff0c;如果在某些场景下乱用&…

读像火箭科学家一样思考笔记12_实践与测试(下)

1. 舆论的火箭科学 1.1. 如果苹果违反了“即飞即测”原则&#xff0c;那苹果的iPhone就不会问世了 1.1.1. iPhone在其上市前的民意调查中相当失败 1.1.1.1. iPhone不可能获得太大市场份额&#xff0c;不可能。 1.1.1.1.1. 微软前CEO史蒂夫鲍尔默&#xff08;Steve Ballmer&…

第15关 K8s HPA:自动水平伸缩Pod,实现弹性扩展和资源优化

------> 课程视频同步分享在今日头条和B站 大家好&#xff0c;我是博哥爱运维&#xff0c;这节课带来k8s的HPA 自动水平伸缩pod&#xff08; 视频后面有彩蛋 : ) &#xff09;。 我们知道&#xff0c;初始Pod的数量是可以设置的&#xff0c;同时业务也分流量高峰和低峰&a…

Deep Image Prior

深度图像先验 论文链接&#xff1a;https://sites.skoltech.ru/app/data/uploads/sites/25/2018/04/deep_image_prior.pdf 项目链接&#xff1a;https://github.com/DmitryUlyanov/deep-image-prior Abstract 深度卷积网络已经成为一种流行的图像生成和恢复工具。一般来说&a…