【MYSQL】-函数

2023-12-31 00:19:30

在这里插入图片描述
💖作者:小树苗渴望变成参天大树🎈
🎉作者宣言:认真写好每一篇博客💤
🎊作者gitee:gitee?
💞作者专栏:C语言,数据结构初阶,Linux,C++ 动态规划算法🎄
如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧!


前言

前一篇我们讲解完毕了表的基本操作,我们在常用的是select,今天我们讲解的是mysql的一系列函数,在我们语言层面有许多自带函数让我们可以更好去使用,在sql中也有许多好用的函数让我们去使用,在上篇已经使用过了聚集函数,他的好处已经让我们感受到了,今天说的函数也特别方便。话不多说,我们开始进入正文。

一、日期函数

在这里插入图片描述

后面的我们提到的日期就是年月日,时间就是时分秒。

  1. 获取日期:
    在这里插入图片描述

  2. 获取时间:
    在这里插入图片描述

  3. 获取日期时间:
    在这里插入图片描述
    在这里插入图片描述
    这两个函数的效果是一样的,但是本质不一样。

  4. 获取日期时间中的日期部分(函数可以嵌套使用)
    在这里插入图片描述

  5. 在日期的基础上加日期或者时间
    在这里插入图片描述
    在这里插入图片描述

  6. 在日期的基础上减日期或者时间
    在这里插入图片描述
    在这里插入图片描述

date_add和date_sub函数的第一个参数可以不用是完整的日期和时间,单纯的日期也是可以的。

  1. 求两个日期的差
    在这里插入图片描述

总结
其他的不传参的函数都是字面意思,前三个函数和数据类型的日期类型相似。传参的函数看到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();

在这里插入图片描述

二、字符串函数

在这里插入图片描述
有几个函数非常简单,就不使用表中的数据給大家演示了。

  1. charset(str)
    在这里插入图片描述

  2. instr(str,substring) 返回子串的起始位置
    在这里插入图片描述

  3. ucase(str) 转成大写、lcase(str) 转成小写(不是字母的不做处理)
    在这里插入图片描述

  4. left(str,len) 从str中左边l取len个字符、right(str,len) 从str中右边l取en个字符

在这里插入图片描述
5. strcmp(str1,str2) 比较两个字符串是否相等(相等为0,不想等为-1)
在这里插入图片描述

接下来的函数操作通过表中的数据給大家演示

  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函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;
如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数
(与字符集编码有关)

  1. 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第三个参数不写默认取到结尾

三、数学函数

在这里插入图片描述

  1. abs(num)绝对值
    在这里插入图片描述
  2. bin(num) 十进制转换二进制
    在这里插入图片描述

我们看到带有小数的数转二进制只取前面整数部分进行转换

  1. hex(num) 转换成十六进制
    在这里插入图片描述
  2. conv(num,from_num,to_num) 进制转换(相对灵活)
    在这里插入图片描述
  3. format(num,len),控制num的精度,格式化(小数也四舍五入)
    在这里插入图片描述
  4. rand(),随机数,返回随机浮点数,范围[0.0,1.0)
    在这里插入图片描述
  5. mod(num1,num2) 求模

在这里插入图片描述
8. ceiling(num) 向上取整,floor(num)向下取整
在这里插入图片描述
在这里插入图片描述

四、其他函数

  1. user()查询当前用户
    在这里插入图片描述
  2. database()显示当前正在使用的数据库
    在这里插入图片描述
  3. ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值
    在这里插入图片描述
  4. mds(str) 对一个字符串进行md5摘要,摘要后得到一个32位字符串
    password()函数,MySQL数据库使用该函数对用户加密

对于数据库,关于密码有关的字段,最好都要进行加密,防止别人盗取你的表数据知道了用户的密码就麻烦。
在这里插入图片描述

md5是一种哈希算法生成一个固定长度的字符串插入到表中的,password()是sql自带的。

五、总结

我们这些函数在必要的时候是非常有用的,希望大家掌握

查找字符串中逗号出现的次数大家先不要看答案哦

select id, LENGTH(string) - LENGTH(replace(string, ',','')) cnt from strings;

文章来源:https://blog.csdn.net/qq_69369227/article/details/135308947
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。