内置函数【MySQL】

news2024/11/26 15:28:20

文章目录

  • 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.coloradmin.cn/o/1264836.html

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

相关文章

Phpstudy v8.0/8.1小皮升级Apache至最新,同时升级openssl版本httpd-2.4.58 apache 2.4.58

1.apache官网下载最新版本的apache 2.4.58 2.phpstudy下apache停止运行,把原来的Apache文件夹备份一份 复制图中的文件替换apache目录下文件 3.phpstudy中开启apache

西南科技大学(数据结构A)期末自测练习二

一、填空题(每空1分,共10分) 1、在线性表的下列运算中,不改变数据元素之间结构关系的运算是( D ) A、插入 B、删除 C、排序 D、定位 2、顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是( B ) A.110 B.108 C.100 …

11.28C++

#include <iostream>using namespace std;int main() {string str;cout << "请输入一个字符串&#xff1a;" << endl;getline(cin,str);int size str.size();int a0,b0,c0,d0,e0;for(int i0; i < size; i){if(str.at(i) > A && str…

直线(蓝桥杯)

直线 题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 在平面直角坐标系中&#xff0c;两点可以确定一条直线。如果有多点在一条直线上&#xff0c; 那么这些点中任意两点确定的直线是同一条。 给定平面上 2 3 个…

神奇植物在哪里?文心大模型助力一秒读懂花草的“前世今生”

本期文心开发者说邀请到飞桨开发者技术专家谢杰航老师&#xff0c;分享如何利用AI技术构建风景园林行业的植物知识科普系统&#xff0c;接着还介绍了大模型应用的基本技术流程框架&#xff0c;多模态特征提取以及使用向量数据库的优势&#xff0c;使用飞桨星河社区运行向量数据…

解决git action发布报错:Input required and not supplied: upload_url

现象&#xff1a; 这个问题死活都找不到原因&#xff0c;后来打了一段调试的代码 - name: Debug Create Release Output run: | echo "Release ID: ${{ env.RELEASE_ID }}" echo "Release Upload URL: ${{ env.RELEASE_UPLOAD_URL }}" env: RELEASE_ID: ${…

css-tricks网站图例

使用css实现钟表 <template><div><p><small>CSS sin() and cos() does <strong>NOT</strong> work in your browser.</small></p><div class"clock"><div id"app" class"clock-face"…

解决:SyntaxError: Non-UTF-8 code starting with À in file but no encoding declared

解决&#xff1a;SyntaxError: Non-UTF-8 code starting with in file but no encoding declared 文章目录 解决&#xff1a;SyntaxError: Non-UTF-8 code starting with in file but no encoding declared背景报错问题报错翻译报错原因解决方法使用utf-8格式使用gbk格式今天…

89基于matlab的人工蜂群和粒子群混合优化的路径规划算法

基于matlab的人工蜂群和粒子群混合优化的路径规划算法&#xff0c;起点和终点确定的前提下&#xff0c;在障碍物中寻找最佳路径。数据可更换自己的&#xff0c;程序已调通&#xff0c;可直接运行。 89人工蜂群和粒子群混合优化 (xiaohongshu.com)https://www.xiaohongshu.com/e…

【数据结构】排序效率最优解之一:二叉树-堆

Hello everybody!今天打算给大家介绍一个功能比较强大的数据结构的基础&#xff0c;它不仅具有很高的应用价值而且排序效率很高。冒泡排序都知道叭&#xff0c;它的时间复杂度为O(n^2)&#xff0c;而堆排序的时间复杂度为O(n*logn)。堆排序直接碾压冒泡排序。在c语言阶段&#…

MySQL- CRUD

一、INSERT 添加 公式 INSERT INTO table_name [(column [, column...])] VALUES (value [, value...]); 示例&#xff1a; CREATE TABLE goods (id INT ,good_name VARCHAR(10),price DOUBLE ); #添加数据 INSERT INTO goods (id,good_name,price ) VALUES (20,华为手机,…

【SpringCloud系列】@FeignClient微服务轻舞者

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【Rust】所有权的认识

所有权 所有程序都必须管理其运行时使用计算机内存的方式。一些语言中具有垃圾回收机制&#xff0c;在程序运行时有规律地寻找不再使用的内存&#xff1b;在另一些语言中&#xff0c;程序员必须亲自分配和释放内存。 Rust 则选择了第三种方式&#xff1a;通过所有权系统管理内…

L型骨牌覆盖问题。

问题&#xff1a;解决一个2k*2k的特殊棋牌上的L型骨牌覆盖问题。 思路&#xff1a; 棋盘覆盖实现的基本方法为分治法 当k0时(1ⅹ1棋盘)&#xff0c;及特殊方格&#xff0c;骨牌数为0 当k >0时&#xff0c;将2kⅹ2k棋盘分割为4个2k-1ⅹ2k-1子棋盘了 特殊方格位于4个较小…

深入了解Java8新特性-日期时间API:OffsetDateTime类

阅读建议 嗨&#xff0c;伙计&#xff01;刷到这篇文章咱们就是有缘人&#xff0c;在阅读这篇文章前我有一些建议&#xff1a; 本篇文章大概24000多字&#xff0c;预计阅读时间长需要20分钟。本篇文章的实战性、理论性较强&#xff0c;是一篇质量分数较高的技术干货文章&…

python实现C++简易自动压行

突发奇想&#xff0c;想要将自己的c压行之后交上去。但是苦于手动压行效率太低&#xff0c;在网上搜索压行网站没有找到&#xff0c;突然发现压行不就是检查检查去个换行符吗。于是心血来潮&#xff0c;用python实现了一个简易压行程序。 首先&#xff0c;宏定义等带#的文件不…

计算机杂谈系列精讲100篇-【计算机应用】PyTorch部署及分布式训练

目录 C平台PyTorch模型部署流程 1.模型转换 1. 不支持的操作 2. 指定数据类型 2.保存序列化模型 3.C load训练好的模型 4. 执行Script Module PyTorch分布式训练 分布式并行训练概述 Pytorch分布式数据并行 手把手渐进式实战 A. 单机单卡 B. 单机多卡DP C. 多机多卡DDP D. L…

android13(T) 客制化预置语言列表

效果图 需求分析 这个列表界面一般都是后来手动添加后才现实的&#xff0c;通过分析源码发现通过如下值可控 adb shell settings get system system_locales zh-CN,ja-JP,en-AT 所以只需查询出这个值&#xff0c;然后加在 SettingProvider 中即可 隐藏 bug 如果客户要求默…

【SpringCloud】注册中心和Ribbon负载均衡

SpringCloud 1.Eureka注册中心 1.1 Eureka的作用 注册中心拉取服务负载均衡远程调用 order-service得知user-service实例地址流程&#xff1a; user-service服务实例启动后&#xff0c;将自己的信息注册到eureka-server&#xff08;Eureka服务端&#xff09;&#xff0c;称…

使用STM32 HAL库驱动光电传感器的设计和优化

光电传感器在许多应用中起着重要的作用&#xff0c;例如自动计数、距离测量等。STM32微控制器和HAL库提供了丰富的功能和易于使用的接口&#xff0c;使得光电传感器的设计和优化变得更加便捷。本文将介绍如何使用STM32 HAL库驱动光电传感器的设计和优化&#xff0c;包括硬件设计…