【MySQL】内置函数

目录

一、内置函数

二、字符串函数

三、数学函数

四、其他函数


一、内置函数

mysql中常见的内置函数有如下:

current_date:获取当前的日期。

current_time:获取当前的时间(时分秒)。

current_timestamp:获取当前的时间戳。

now:获取当前的日期时间。

date:获取datetime参数的日期部分。

date_add:在date日期的基础上 日期或者时间,interval 后面的加数的单位可以是 day/minute/second/year

当然这里加的时候如果加成数时,就是我们下面要介绍的减了。

date_sub:在date日期的基础上 去日期或者时间,interval 后面的加数的单位可以是 day/minute/second/year

datediff:获取来两个日期之间的差,单位是天。

案例使用1:

创建一张表记录生日tmp

先创建一张表,里面的字段只有两个id和brithday,其中id是 int 类型设为住键且自增,brithday是date类型即可。

然后插入一批数据进去:

使用案例2:

创建一张留言表msg

字段有id int类型,设为主键且自增,ccontent 为varchar类型且不为空,sendtime 为datetime类型。

插入一批数据

显示所有的信息,发布的日期只显示日期不显示时间。

查询2分钟以内发布的贴子。

实际上就是sendtime+2分钟>当前时间的所有留言消息

二、字符串函数

mysql常见的字符串函数如下:

charset:获取字符串使用的字符集

比如我们可以查看以前员工表的ename字段的字符集:

可以在现实的时候使用charset函数进行处理!

concat:连接字符换

了解了这个我们可以对成绩表进行显示的处理!我们目前的exam_result表中是一列列的显示的

我们可以将他进行使用cancat进行将他的格式进行处理:

instr:返回 substr在string中出现的位置,没有则返回 0

ucase 和 lcase:将str转为大写/小写

left:从字符串str的左边开始获取len个字符

right:从字符串str的右端开始获取len个字符

length:获取字符串str的长度。单位是字节

介绍了length我们就可以求出exam_result中学生的姓名的所占的字节数了

**注意:**不同的编码中一个汉字所占的字节是不同的,utf8中一个汉字是占3字节,而gbk中一个汉字占2字节。而我们这里的是 utf8所以三个汉字就是9字节。

replace:将str中的prv被tail替换。

介绍了这个我们就可以将emp表中的所有含有某个字符串的内容替换为特定的内容。例如:将所有的ename中含有S的字符替换为 上海:

strcmp:逐字符比较两个字符串的大小。

和C语言的一样,s1>s2 返回1;s1<s2 返回-1;s1 == s2 返回 0;

strcmp不区分大小写。

strcmp不区分大小写:

substring:从pos位置开始获取len个字符,如果不指定len则从pos开始截取到string结束;

和C++类似。注意:pos的起始是从1开始的,这点与cpp的不同!

我们可以利用这个将员工表中ename的第二个到第三个字符给全部截取出来:

介绍到这里,我们可以结合前面的大小写、字符串拼接、以及子串截取,我们就可以完成将emp表中的员工姓名以首字小写的方式显示:

实现思路:先通过substring将ename的第一个字符截取出来然后转小写,然后再利用substring 将剩下的截取,最后利用concat将他们两个一起拼接显示即可!

trim:去除字符串的前后空格

ltrim:去除字符串的前空格

rtrim:去除字符串的后空格

trim:去除字符串的前后空格

ltrim:去除字符串的前空格

rtrim:去除字符串的后空格

三、数学函数

mysql常见的数学函数如下:

abs:绝对值函数

bin:将十进制转换为二进制

hex:将十进制转换为十六进制

conv:将num从from_base格式转换为to_base格式

ceiling:向上取整

需要注意的是:负数 在向上取整的时候是向数轴的正无穷方向取的。也就是说-3.4向上取整就是-3

floor:向下取整。

注意的是:负数在向下取整的时候,是向数轴的负无穷方向取的。也就是说-3.2向下取整就是-4;

关于向上取整和向下取整的记忆方式就是:

向上取整本质是变大,就是尽可能的取大,始终是向正无穷的方向取的。

向下取整本质是变小,就是尽可能的取小,始终是向负无穷的方向取的。


format:保留数字的前n位小数(四舍五入)

rand:生成随机浮点数,范围在 0.0 -- 1.0 之间

如果我们想生成 0 - 100 之间的随机数呢?其实很简单,我们可以rand() 乘以100 然后在使用一种取整方式即可。

mod:对数x使用n取余;

四、其他函数

use函数:获取当前链接mysql的用户名和主机名

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

拓展:

一般情况下公司内部数据库不会存储用户的明文密码 ,而会将用户密码形成摘要后存储对应的摘要,当用户登录账号时,将用户输入的的密码形成摘要后与数据库中存储的摘要做对比,如果对比成功则允许登录。

这么做的好处主要有两个,第一个好处就是公司内部数据库中存储的不是用户的明文信息,就算用户信息泄露了也不会产生太大影响,第二个好处就是形成的摘要是定长的,这样有利于数据库表结构的设计。

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

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

ifnull(val1,val2)函数,如果第一个参数不为空,则返回val1否则返回val2。

相关推荐
小陈工1 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
0xDevNull5 小时前
MySQL数据冷热分离详解
后端·mysql
科技小花6 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸6 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain6 小时前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希6 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神6 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员7 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java7 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿7 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb