【MySQL学习】MySQL 内置函数


一、日期函数

函数名称功能描述
current_data()获取当前日期
current_time()获取当前时间
current_timestamp()获取当前时间戳
date()返回datetime的日期部分
date_add(date, interval d_value_type)以date为基础,添加日期或者时间,interval 后面指定时间的类型,例如year、month、day等等
date_sub(date, interval d_value_type)以date为基础,减去日期或者时间,interval 后面指定时间的类型,例如year、month、day等等
datediff(date1, date2)两个日期的差,单位是天数
now()获取当前日期时间

获取当前年月日

mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2023-05-07     |
+----------------+
1 row in set (0.00 sec)

获取当前时分秒

mysql> select current_time();
+----------------+
| current_time() |
+----------------+
| 20:11:07       |
+----------------+
1 row in set (0.00 sec)

获取当前时间戳

mysql> select current_timestamp();
+---------------------+
| current_timestamp() |
+---------------------+
| 2023-05-07 20:12:27 |
+---------------------+
1 row in set (0.00 sec)

获取当前时间戳的日期部分

mysql> select date(current_timestamp());
+---------------------------+
| date(current_timestamp()) |
+---------------------------+
| 2023-05-07                |
+---------------------------+
1 row in set (0.00 sec)

在日期的基础上加天数

mysql> select date_add(current_date, interval 10 day);
+-----------------------------------------+
| date_add(current_date, interval 10 day) |
+-----------------------------------------+
| 2023-05-17                              |
+-----------------------------------------+
1 row in set (0.00 sec)

在日期的基础上减去天数

mysql> select date_sub(current_date, interval 10 day);
+-----------------------------------------+
| date_sub(current_date, interval 10 day) |
+-----------------------------------------+
| 2023-04-27                              |
+-----------------------------------------+
1 row in set (0.00 sec)

计算两个日期之间相差多少天

mysql> select datediff('2023-5-7', '2023-1-1');
+----------------------------------+
| datediff('2023-5-7', '2023-1-1') |
+----------------------------------+
|                              126 |
+----------------------------------+
1 row in set (0.00 sec)

二、字符串函数

函数名称功能描述
charset(str)返回字符串对应的字符集
concat(string2, […, …])连接字符串
instr(string, substring)返回substring在string中出现的位置,没有则返回0
ucase(str)转化为大写
lcase(str)转化为小写
left(str, length)从str左边起取length个字符
right(str, length)从str右边起取length个字符
length(str)获取str的长度
replace(str, search_str, replace_str)在str中,用replace_str替换search_str
substring(str, position, [length])从str的position位置开始,截取length长度的字符串
strcmp(str1, str2)逐字符比较两字符串大小,相对返回0,前者大返回1,否则返回-1
ltrim(str)、rtrim(str)、trim(str)去除字符串前后的空格

charset函数

由此可见,数字在数据库中是以二进制的形式存储的。

concat函数

instr函数


说明在MySQL中,字符的第一个位置的下标是1,而不是0。

ucase函数和lcase函数

left函数

right函数

length函数


注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数(与字符集编码有关)。

replace函数

substring函数

strcmp函数

ltrim、rtrim、trim函数

三、数学函数

函数名称功能描述
abs(number)绝对值函数
ceiling(number)向上取整
floor(number)向下取整
bin(decimal_num)十进制转二进制
hex(decimal_num)十进制转十六进制
conv(number, from_base, to_base)进制转换
format(number, decimal_places)格式化,保留小数位数
rand()返回随机浮点数,范围[0.0, 1.0)
mod(number, denominator)取模求余

取绝对值

向上取整

向下取整

保留两位小数(小数四舍五入)

产生随机数

四、其他函数

  • user()函数用于查询当前用户

  • md5(str)函数用于对一个字符串进行md5摘要,摘要后得到一个32位字符串

值得一提的是:

  • 一般情况下公司内部数据库不会存储用户的明文密码,而会将用户密码形成摘要后存储对应的摘要,当用户登录账号时,将用户输入的的密码形成摘要后与数据库中存储的摘要做对比,如果对比成功则允许登录。
  • 这么做的好处主要有两个,第一个好处就是公司内部数据库中存储的不是用户的明文信息,就算用户信息泄露了也不会产生太大影响,第二个好处就是形成的摘要是定长的,这样有利于数据库表结构的设计。
  • database()显示当前正在使用的数据库

  • password()函数,MySQL数据库使用该函数对用户加密


password函数和md5函数类似,只是password函数专门用于对MySQL用户的登录密码进行加密的。另外,我有一个有趣的发现,那就是MySQL不会对出现password或者md5的SQL语句做历史记录,因此在命令行模式按上下键找不到刚才执行过的SQL语句,一定程度上也保护了明文密码的安全。

  • ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值


ifnull函数其实就相当于C/C++中的三目运算符。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

求知.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值