💖作者:小树苗渴望变成参天大树🎈
🎉作者宣言:认真写好每一篇博客💤
🎊作者gitee:gitee✨
💞作者专栏:C语言,数据结构初阶,Linux,C++ 动态规划算法🎄
如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧!
文章目录
- 前言
- 一、日期函数
- 二、字符串函数
- 三、数学函数
- 四、其他函数
- 五、总结
前言
前一篇我们讲解完毕了表的基本操作,我们在常用的是select,今天我们讲解的是mysql的一系列函数,在我们语言层面有许多自带函数让我们可以更好去使用,在sql中也有许多好用的函数让我们去使用,在上篇已经使用过了聚集函数,他的好处已经让我们感受到了,今天说的函数也特别方便。话不多说,我们开始进入正文。
一、日期函数
后面的我们提到的日期就是年月日,时间就是时分秒。
-
获取日期:
-
获取时间:
-
获取日期时间:
这两个函数的效果是一样的,但是本质不一样。 -
获取日期时间中的日期部分(函数可以嵌套使用)
-
在日期的基础上加日期或者时间
-
在日期的基础上减日期或者时间
date_add和date_sub函数的第一个参数可以不用是完整的日期和时间,单纯的日期也是可以的。
- 求两个日期的差
总结
其他的不传参的函数都是字面意思,前三个函数和数据类型的日期类型相似。传参的函数看到data说明必须要传日期,但是也可以把时间带上。
案例1:
创建一张表,记录生日
添加当前日期:
insert into tmp(birthday) values(current_date());
案例2:
创建一个留言表
插入数据
显示所有留言信息,发布日期只显示日期,不用显示时间
select content,date(sendtime) from msg;
请查询在2分钟内发布的帖子
------|-----------|-------------|------------------
初始时间 now() 初始时间+2min
select * from msg where date_add(sendtime, interval 2 minute) > now();
二、字符串函数
有几个函数非常简单,就不使用表中的数据給大家演示了。
-
charset(str)
-
instr(str,substring) 返回子串的起始位置
-
ucase(str) 转成大写、lcase(str) 转成小写(不是字母的不做处理)
-
left(str,len) 从str中左边l取len个字符、right(str,len) 从str中右边l取en个字符
5. strcmp(str1,str2) 比较两个字符串是否相等(相等为0,不想等为-1)
接下来的函数操作通过表中的数据給大家演示
- exam_result表
(1)concat
要求显示exam_result表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分”
select concat(name, '的语文是',chinese,'分,数学是',math,'分') as '分数' from exam_result;
(2)length(str)
求exam_result表中学生姓名占用的字节数
注意:length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;
如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数
(与字符集编码有关)
- emp表
(1)replace(str s_str,r_str) 在str中用r_str替换s_str
将EMP表中所有名字中有S的替换成’上海’
select ename,replace(ename,'S','上海') from emp;
(2)substring(str,pos,len)从str的pos位置,取len个字符
截取EMP表中ename字段的第二个到第三个字符
select substring(ename,2,2),ename from emp;
以首字母小写的方式显示所有员工的姓名
substring第三个参数不写默认取到结尾
三、数学函数
- abs(num)绝对值
- bin(num) 十进制转换二进制
我们看到带有小数的数转二进制只取前面整数部分进行转换
- hex(num) 转换成十六进制
- conv(num,from_num,to_num) 进制转换(相对灵活)
- format(num,len),控制num的精度,格式化(小数也四舍五入)
- rand(),随机数,返回随机浮点数,范围[0.0,1.0)
- mod(num1,num2) 求模
8. ceiling(num) 向上取整,floor(num)向下取整
四、其他函数
- user()查询当前用户
- database()显示当前正在使用的数据库
- ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值
- mds(str) 对一个字符串进行md5摘要,摘要后得到一个32位字符串
password()函数,MySQL数据库使用该函数对用户加密
对于数据库,关于密码有关的字段,最好都要进行加密,防止别人盗取你的表数据知道了用户的密码就麻烦。
md5是一种哈希算法生成一个固定长度的字符串插入到表中的,password()是sql自带的。
五、总结
我们这些函数在必要的时候是非常有用的,希望大家掌握
查找字符串中逗号出现的次数大家先不要看答案哦
select id, LENGTH(string) - LENGTH(replace(string, ',','')) cnt from strings;