MySQL 入门大全:常用函数

🧑 博主简介:CSDN博客专家历代文学网 (PC端可以访问:https://literature.sinhy.com/#/literature?__c=1000,移动端可微信小程序搜索"历代文学 ")总架构师,15年工作经验,精通Java编程高并发设计Springboot和微服务,熟悉LinuxESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。
技术合作 请加本人wx(注明来自csdn ):foreast_sea


MySQL 入门大全:常用函数

MySQL 函数也是我们日常开发过程中经常使用的,选用合适的函数能够提高我们的开发效率,下面我们就来一起认识一下这些函数。

字符串函数

字符串函数是最常用的一种函数了,MySQL 也是支持很多种字符串函数,下面是 MySQL 支持的字符串函数表

函数 功能
LOWER 将字符串所有字符变为小写
UPPER 将字符串所有字符变为大写
CONCAT 进行字符串拼接
LEFT 返回字符串最左边的字符
RIGHT 返回字符串最右边的字符
INSERT 字符串替换
LTRIM 去掉字符串左边的空格
RTRIM 去掉字符串右边的空格
REPEAT 返回重复的结果
TRIM 去掉字符串行尾和行头的空格
SUBSTRING 返回指定的字符串
LPAD 用字符串对最左边进行填充
RPAD 用字符串对最右边进行填充
STRCMP 比较字符串 s1 和 s2
REPLACE 进行字符串替换

下面通过具体的示例演示一下每个函数的用法

  • LOWER(str) 和 UPPER(str) 函数:用于转换大小写
  • CONCAT(s1,s2 ... sn) :把传入的参数拼接成一个字符串

上面把 c xu an 拼接成为了一个字符串,另外需要注意一点,任何和 NULL 进行字符串拼接的结果都是 NULL。

  • LEFT(str,x) 和 RIGHT(str,x) 函数:分别返回字符串最左边的 x 个字符和最右边的 x 个字符。如果第二个参数是 NULL,那么将不会返回任何字符串
  • INSERT(str,x,y,instr) : 将字符串 str 从指定 x 的位置开始, 取 y 个长度的字串替换为 instr。
  • LTRIM(str) 和 RTRIM(str) 分别表示去掉字符串 str 左侧和右侧的空格
  • REPEAT(str,x) 函数:返回 str 重复 x 次的结果
  • TRIM(str) 函数:用于去掉目标字符串的空格
  • SUBSTRING(str,x,y) 函数:返回从字符串 str 中第 x 位置起 y 个字符长度的字符串
  • LPAD(str,n,pad) 和 RPAD(str,n,pad) 函数:用字符串 pad 对 str 左边和右边进行填充,直到长度为 n 个字符长度
  • STRCMP(s1,s2) 用于比较字符串 s1 和 s2 的 ASCII 值大小。如果 s1 < s2,则返回 -1;如果 s1 = s2 ,返回 0 ;如果 s1 > s2 ,返回 1。
  • REPLACE(str,a,b) : 用字符串 b 替换字符串 str 种所有出现的字符串 a

数值函数

MySQL 支持数值函数,这些函数能够处理很多数值运算。下面我们一起来学习一下 MySQL 中的数值函数,下面是所有的数值函数

函数 功能
ABS 返回绝对值
CEIL 返回大于某个值的最大整数值
MOD 返回模
ROUND 四舍五入
FLOOR 返回小于某个值的最大整数值
TRUNCATE 返回数字截断小数的结果
RAND 返回 0 - 1 的随机值

下面我们还是以实践为主来聊一聊这些用法

  • ABS(x) 函数:返回 x 的绝对值
  • CEIL(x) 函数: 返回大于 x 的整数
  • MOD(x,y),对 x 和 y 进行取模操作
  • ROUND(x,y) 返回 x 四舍五入后保留 y 位小数的值;如果是整数,那么 y 位就是 0 ;如果不指定 y ,那么 y 默认也是 0 。
  • FLOOR(x) : 返回小于 x 的最大整数,用法与 CEIL 相反
  • TRUNCATE(x,y): 返回数字 x 截断为 y 位小数的结果, TRUNCATE 知识截断,并不是四舍五入。
  • RAND() :返回 0 到 1 的随机值

日期和时间函数

日期和时间函数也是 MySQL 中非常重要的一部分,下面我们就来一起认识一下这些函数

函数 功能
NOW 返回当前的日期和时间
WEEK 返回一年中的第几周
YEAR 返回日期的年份
HOUR 返回小时值
MINUTE 返回分钟值
MONTHNAME 返回月份名
CURDATE 返回当前日期
CURTIME 返回当前时间
UNIX_TIMESTAMP 返回日期 UNIX 时间戳
DATE_FORMAT 返回按照字符串格式化的日期
FROM_UNIXTIME 返回 UNIX 时间戳的日期值
DATE_ADD 返回日期时间 + 上一个时间间隔
DATEDIFF 返回起始时间和结束时间之间的天数

下面结合示例来讲解一下每个函数的使用

  • NOW(): 返回当前的日期和时间
  • WEEK(DATE) 和 YEAR(DATE) :前者返回的是一年中的第几周,后者返回的是给定日期的哪一年
  • HOUR(time) 和 MINUTE(time) : 返回给定时间的小时,后者返回给定时间的分钟
  • MONTHNAME(date) 函数:返回 date 的英文月份
  • CURDATE() 函数:返回当前日期,只包含年月日
  • CURTIME() 函数:返回当前时间,只包含时分秒
  • UNIX_TIMESTAMP(date) : 返回 UNIX 的时间戳
  • FROM_UNIXTIME(date) : 返回 UNIXTIME 时间戳的日期值,和 UNIX_TIMESTAMP 相反
  • DATE_FORMAT(date,fmt) 函数:按照字符串 fmt 对 date 进行格式化,格式化后按照指定日期格式显示

我们演示一下将当前日期显示为年月日 的这种形式,使用的日期格式是 %M %D %Y

  • DATE_ADD(date, interval, expr type) 函数:返回与所给日期 date 相差 interval 时间段的日期

interval 表示间隔类型的关键字,expr 是表达式,这个表达式对应后面的类型,type 是间隔类型,MySQL 提供了 13 种时间间隔类型

表达式类型 描述 格式
YEAR YY
MONTH MM
DAY DD
HOUR 小时 hh
MINUTE mm
SECOND ss
YEAR_MONTH 年和月 YY-MM
DAY_HOUR 日和小时 DD hh
DAY_MINUTE 日和分钟 DD hh : mm
DAY_SECOND 日和秒 DD hh :mm :ss
HOUR_MINUTE 小时和分 hh:mm
HOUR_SECOND 小时和秒 hh:ss
MINUTE_SECOND 分钟和秒 mm:ss
  • DATE_DIFF(date1, date2) 用来计算两个日期之间相差的天数

查看离 2021 - 01 - 01 还有多少天

流程函数

流程函数也是很常用的一类函数,用户可以使用这类函数在 SQL 中实现条件选择。这样做能够提高查询效率。下表列出了这些流程函数

函数 功能
IF(value,t f) 如果 value 是真,返回 t;否则返回 f
IFNULL(value1,value2) 如果 value1 不为 NULL,返回 value1,否则返回 value2。
CASE WHEN[value1] THEN[result1] ...ELSE[default] END 如果 value1 是真,返回 result1,否则返回 default
CASE[expr] WHEN[value1] THEN [result1]... ELSE[default] END 如果 expr 等于 value1, 返回 result1, 否则返回 default

其他函数

除了我们介绍过的字符串函数、日期和时间函数、流程函数,还有一些函数并不属于上面三类函数,它们是

函数 功能
VERSION 返回当前数据库的版本
DATABASE 返回当前数据库名
USER 返回当前登陆用户名
PASSWORD 返回字符串的加密版本
MD5 返回 MD5 值
INET_ATON(IP) 返回 IP 地址的数字表示
INET_NTOA(num) 返回数字代表的 IP 地址

下面来看一下具体的使用

  • VERSION: 返回当前数据库版本
  • DATABASE: 返回当前的数据库名
  • USER : 返回当前登录用户名
  • PASSWORD(str) : 返回字符串的加密版本,例如
  • MD5(str) 函数:返回字符串 str 的 MD5 值
  • INET_ATON(IP): 返回 IP 的网络字节序列
  • INET_NTOA(num)函数:返回网络字节序列代表的 IP 地址,与 INET_ATON 相对
相关推荐
王者鳜錸2 分钟前
2024从Maven-MySQL-Nginx部署
mysql·nginx·maven
用户6279947182624 分钟前
南大通用GBase 8a gn层物理存储结构介绍
数据库
用户62799471826218 分钟前
关于南大通用GBase 8s的DML触发器的讨论
数据库
落霞的思绪24 分钟前
NoSql文档型数据库——Mongodb
数据库·mongodb·nosql
写bug写bug27 分钟前
为什么 LIMIT 0, 10 快,而 LIMIT 1000000, 10 慢?
数据库·后端·mysql
用户62799471826233 分钟前
1小时掌握南大通用GBase 8c Hint核心技巧!让SQL从10秒到1秒
数据库
再路上12162 小时前
direct_visual_lidar_calibration iridescence库问题
java·服务器·数据库
卡皮巴拉爱吃小蛋糕2 小时前
MySQL的事务(Transaction)【学习笔记】
数据库·笔记·学习·mysql
祢真伟大3 小时前
dmncdm达梦新云缓存数据库主从集群安装部署详细步骤说明
服务器·数据库·缓存