【MySQL】函数

在这里插入图片描述

点赞👍👍收藏🌟🌟关注💖💖
你的支持是对我最大的鼓励,我们一起努力吧!😃😃

在mysql中其实内置了很多的函数操作,这些函数可以让我们在数据统计的时候以及查表的时候进行各自各样的操作。

1.日期函数

函数名称描述
current_date()当前日期
current_time()当前时间
current_timestamp()当前时间戳
date(datetime)返回datetime参数的日期部分
date_add(date,interval d_value_type)在date中添加日期或者时间 ,interval后的数值单位可以是:year、minute、second、day
date_sub(date,interval d_value_type)在date中减去日期或者时间 ,interval后的数值单位可以是:year、minute、second、day
datediff(date1,date2)两个日期的差,单位是天
now()当前日期时间

获得当前日期(年月日)

select current_date();

在这里插入图片描述

获得当前时间(时分秒)

select current_time();

在这里插入图片描述

获得当前时间戳

select current_timestamp();

在这里插入图片描述

获得当前日期时间

select now();

在这里插入图片描述

截断当前时间,只获得日期部分

select date(now());

函数中可以嵌套函数

在这里插入图片描述

在日期的基础上加日期

select date_add(now(),interval 10 year);

在这里插入图片描述

在日期的基础上减去时间

select date_sub(now(),interval 10 minute);

在这里插入图片描述

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

select datediff(now(),'1949-10-01');

前面减后面

在这里插入图片描述

这些函数有什么用呢,下面有两个案例

创建一张表,记录生日

create table tmp(
     id int primary key auto_increment,
     birthday date not null #时间的类型 年月日
     );

在这里插入图片描述

虽然current_time()这里显示的是时分秒,实际上插入的时候也能插入,所有的时间在获取的时候都是年月日 时分秒,只不过显示时是不一样的。
但是不建议这样使用。

在这里插入图片描述

这里时间戳也能插入,你可以理解成隐式类型转化,birthday要的是date日期类型,那么只要你有日期就会把日期拿到。

在这里插入图片描述

建议还是匹配着使用!

创建一个留言表

平常我们评论的时候不仅有内容显示出来,还有对应的时间。

create table msg(
     id int primary key auto_increment,
     content varchar(100) not null,
     sendtime datetime #日期时间  年月日 时分秒
     );

这就是根据时间类型建立带时间的表结构

在这里插入图片描述

显示所有留言信息,发布日期只显示日期,不用显示时间

select content,date(sendtime) from msg;

在这里插入图片描述

请查询在2分钟内发布的帖子

怎么确认表中的数据是2min以内的?
在这里插入图片描述

 select * from msg where date_add(sendtime,interval 2 minute)>now();

在这里插入图片描述

2.字符串函数

函数名称描述
charset(str)返回字符串字符集(编码集)
concat(string [,…])连接字符串
instr(string,substring)返回substring在strign中出现的位置,没有就返回0
ucase(string)转换成大写
lcase(string)转换成小写
left(string,length)从string中的左边起取length个字符
right(string,length)从string中的右边起取length个字符
length(string)string的长度
replace(str,search_str,replace_str)在str中用replace_str替换search_str
strcmp(string1,string2)逐字符比较两字符串大小
substring(str,position [,length])从str的position开始,取length个字符
ltrim(string) rtrim(string) trim(string)去除前空格或者后空格

charset(str) 返回字符串字符集(编码集)

获取emp表的ename列的字符集

select charset(ename) from emp;

根据字符串得到编码格式,万一表中乱码了可以确认mysql本身编码格式以及插入mysql表中特定字段的编码格式。

在这里插入图片描述

concat(string [,…]) 连接字符串

要求显示exam_result表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分”

select concat(name,'的语文是',chinese,'分,','数学','math','分,','英语',english,'分') from exam_result;

在这里插入图片描述

instr(string,substring)返回substring在strign中出现的位置,没有就返回0,注意细节没有就返回0

因为出错返回是0,所以位置是从1开始的。

在这里插入图片描述

ucase(string)转换成大写

在这里插入图片描述

lcase(string)转换成小写

在这里插入图片描述

left(string,length) 从string中的左边起取length个字符

在这里插入图片描述

right(string,length) 从string中的右边起取length个字符

在这里插入图片描述

length(string) string的长度

求学生表中学生姓名占用的字节数

select length(name) from exam_result;

在这里插入图片描述

以前说过mysql的字符真的就是一个字符,utf8中一个汉字占3个字节。

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

replace(str,search_str,replace_str) 在str中用replace_str替换search_str

将EMP表中所有名字中有S的替换成’上海’

在怎么换实际只是字符串级别的更换,并不会更改数据库中原始数据

在这里插入图片描述

substring(str,position [,length]) 从str的position开始,取length个字符

从特定位置开始截取length长字符串,如果没有指明length就默认截取到结尾

在这里插入图片描述

截取EMP表中ename字段的第二个到第三个字符

select ename,substring(ename,2,2) from emp;

在这里插入图片描述

以首字母小写的方式显示所有员工的姓名
首先将名字首字母和剩下的区分开,然后将首字母变成小写,然后在拼接

select ename,concat(lcase(substring(ename,1,1)),substring(ename,2)) from emp;

在这里插入图片描述

ltrim(string) rtrim(string) trim(string)去除前空格或者后空格

在这里插入图片描述

3.数学函数

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

abs(number) 绝对值函数

在这里插入图片描述

bin(decimal_number) 十进制转换二进制

在这里插入图片描述

hex(decimalNumber) 转换成十六进制

在这里插入图片描述

conv(number,from_base,to_base) 进制转换

在这里插入图片描述

format(number,decimal_places) 格式化,保留小数位数

在这里插入图片描述

rand()|返回随机浮点数,返回[0.0,1.0)

在这里插入图片描述

mod(number,denominator) 取模,求余

在这里插入图片描述

ceiling(number) 向上去整
floor(number) 向下去整

一般我进行取整的时候是进行四舍五入取整,但是除了四舍五入还有其他的取整方式。
我们把丢弃小数部分的取整方式称为0向取整,以前我们在C学的9/2=4 就是0向取整、还有向大的方向取的向上取整、向小的方向取的向下取整

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

4.其他函数

user() 查询当前用户

select user();

在这里插入图片描述

database()显示当前正在使用的数据库

select database();

在这里插入图片描述

md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串
比如密码在数据库绝对不能是明文保存的。万一表结构泄漏了,用户信息就全部被泄漏了。

这里有一个细节mysql对于sql里面涉及核心密码password关键字之类的这个sql语句就不会被保存,不能上翻下翻了

在这里插入图片描述

密码被变成固定32位字符串,就不用担心密码被泄漏了。但是登录的时候也必须是数据库的摘要密码。

在这里插入图片描述

除了md5进行保存密码之外,数据库还提供更复杂的密码设定的函数。
password()函数,MySQL数据库使用该函数对用户加密
在数据库设密码通常用的更多的是password()

在这里插入图片描述

ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值
类似于三目操作符 ? : 为真返回第一个,为假返回第二个

在这里插入图片描述

  • 102
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 121
    评论
MySQL函数是一种可以被调用并执行特定任务的功能性代码块。MySQL提供了许多内置函数,可以在查询过程中使用,以提供更高级的功能。 MySQL函数可以分为以下几类: 1. 字符串函数MySQL提供了许多字符串函数,可以用来处理和操作字符串数据。例如,CONCAT()函数用于连接多个字符串,SUBSTR()函数用于提取子字符串,UPPER()函数用于将字符串转换为大写,LOWER()函数用于将字符串转换为小写,等等。 2. 数学函数MySQL提供了丰富的数学函数,可以进行各种数值计算。常见的数学函数包括ABS()函数用于返回绝对值,ROUND()函数用于四舍五入,CEILING()函数用于向上取整,FLOOR()函数用于向下取整等。 3. 日期和时间函数MySQL提供了许多日期和时间函数,用于在数据库中处理日期和时间数据。例如,NOW()函数用于返回当前日期和时间,DATE()函数用于提取日期部分,MONTH()函数用于提取月份,YEAR()函数用于提取年份等。 4. 聚合函数MySQL提供了一些聚合函数,用于对数据进行汇总计算。常见的聚合函数包括SUM()函数用于求和,AVG()函数用于求平均值,MAX()函数用于获取最大值,MIN()函数用于获取最小值,等等。 5. 控制流函数MySQL还提供了一些控制流函数,用于在查询过程中进行条件判断和控制流程。常见的控制流函数包括IF()函数用于条件判断,CASE WHEN语句用于多条件判断,等等。 通过使用这些不同类型的MySQL函数,可以方便地对数据库中的数据进行处理和计算,提高查询的效率和灵活性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值