【MySQL】数据库精细化讲解:内置函数知识穿透与深度学习解析

**前言:**本节内容讲述mysql里面的函数的概念, 在mysql当中, 内置了很多函数工作。 这些函数丰富了我们的操作。 比如字符串函数、数据函数以及一些其他函数等等。

ps:友友们学习了表的基本操作后就可以观看本节内容啦!

目录

日期函数

current_date和current_time

current_timestamp

now函数

date提取日期

date_add和date_sub时间推导

datediff时间相减

字符串函数

[charset(str) 返回字符串的字符集](#charset(str) 返回字符串的字符集)

concat拼接字符串

length求字符串长度

replace替换字符

substring字符串截取

ltrim和rtrim

数学函数

abs

bin十进制转二进制

conv将一个数字从某个进制转化为另一个进制

ceiling和floor取整

其他函数

user()

database();

md密码加密


日期函数

current_date和current_time

在mysql中, 使用select可以直接使用current函数:

sql 复制代码
select current_date;

同样的, 也可以直接使用current_time:

sql 复制代码
select current_time;

上面current_date是显示当前的日期, current_time是现实当前的时间, 所以, 两个函数一起使用就能查看当前的日期以及时间:

sql 复制代码
select current_date, current_time;

current_timestamp

我们除了可以上面的两个函数一起使用, 也可以使用current_timestamp查看时间戳:

sql 复制代码
select current_timestamp;

now函数

我们也可以使用now函数, 查看当前的时间:(now函数必须加括号)

sql 复制代码
select now();

date提取日期

我们也可以使用date(日期和时间)来截取当前的日期:

sql 复制代码
select date('1999-10-1 06:06:06');

date_add和date_sub时间推导

date_add可以进行时间的加法推导, 就是当前的时间加上一个日期, 分钟或者秒之后是什么日期,什么时间。 如下为例子:

sql 复制代码
select date_add('2020-10-1', interval 10 day);
select date_add('2020-10-1', interval 40 day);
select date_add(now(), interval 10 day);
select date_add(now(), interval 10 minute);
sql 复制代码
select date_sub(now(), interval 10 day);
select date_sub(now(), interval 1000 day);
select date_sub(now(), interval 10000 day);
select date_sub(now(), interval 10000 minute);

datediff时间相减

datediff可以进行时间的相减:

sql 复制代码
select datediff(now(), '2000-1-1');

字符串函数

charset(str) 返回字符串的字符集

sql 复制代码
select charset(字符串);

charset能返回字符的编码格式。

concat拼接字符串

concat能够连接字符串, 可以跟两个参数, 拼接两个字符串;也可以跟三个参数, 拼接三个字符串, 也可以跟更多....。

sql 复制代码
select concat('字符串', '字符串2');
select concat('字符串', '字符串2', '字符串3');
select concat('字符串', '字符串2', '字符串3', ...);

length求字符串长度

注意, length求的是字节, 不是字符个数。

sql 复制代码
select length(字符串);

replace替换字符

replace能够替换字符

就比如我们将我们员工表中含有'S'的数据替换成上海:

sql 复制代码
select replace(ename, 'S', '上海'), ename from emp;

replace 三个参数中第一个参数是原数据列, 第二个参数是被替换的字符, 第三个参数是目标的字符。

substring字符串截取

substring能够截取一个字符串, 从第几个位置截取到第几个位置:

sql 复制代码
substring('字符串', 起始位置, 截取长度);

将字符串分割:

sql 复制代码
select ename, substirng(ename, 1, 1), substring(ename,2) from emp; 第三个参数不写表示截取到最后一个字符。

ltrim和rtrim

ltrim和rtrim可以去掉字符串中的左右空格:

数学函数

abs

abs取绝对值, 不解释:

sql 复制代码
select abs(10);
select abs(-10);

bin十进制转二进制

sql 复制代码
select bin(20);
select bin(10);
select bin(1);
select bin(2);

conv将一个数字从某个进制转化为另一个进制

sql 复制代码
select conv(数字, 进制1, 进制2);

ceiling和floor取整

我们从负数到整数。 我们一般取整就是四舍五入。 但是我们celling使用的是将小数去掉。 即对于正数来说, 是向下取整。对于负数来说, 是向上取整。正数和负数都向零趋近, 所以, 这种取整方式叫做向零取整。

另一种取整方式是向上取整, 就是对于负数-3.1, 去掉小数位-3。 对于正数3.1, 向上取整为4。

ceiling是向上取整:

floor是向下取整

其他函数

user()

查看当前用户:

sql 复制代码
select user();

database();

sql 复制代码
select database();

md密码加密

我们在向数据库中进行插入密码的时候, 一定要使用md进行加密。 否则如果数据库被人盗走, 那么这个服务里面的所有用户的密码账号就全部被盗取了, 这个危害就太大了。 所以我们如果要插入密码, 一定要使用md进行转码:

sql 复制代码
create table user3(
id int primary key auto_increment,
password varchar(32)
);

insert into user3(password) values('helloworld');
insert into user3(password) values(md5('helloworld'));

然后我们就能看到如下图为两个密码的区别, id为1是没有加密的密码; id为2是加密后的密码, 这个密码只能由数据库自己识别。 这个md5转化成的这个加密字符串一定是等长的, 即便原字符串只有1个字符, 转化后的字符串也是等长的。

未来我们想要利用密码筛选信息怎么筛选呢? 同样是使用md5:

sql 复制代码
select id from user3 where password = md5('helloworld');

------------------以上就是本节全部内容哦, 如果对友友们有帮助的话可以关注博主, 方便学习更多知识哦!!!

相关推荐
SelectDB技术团队8 分钟前
兼顾高性能与低成本,浅析 Apache Doris 异步物化视图原理及典型场景
大数据·数据库·数据仓库·数据分析·doris
inventecsh24 分钟前
mongodb基础操作
数据库·mongodb
白云如幻28 分钟前
SQL99版链接查询语法
数据库·sql·mysql
爱吃烤鸡翅的酸菜鱼1 小时前
MySQL初学之旅(4)表的设计
数据库·sql·mysql·database
计算机毕设指导61 小时前
基于 SpringBoot 的作业管理系统【附源码】
java·vue.js·spring boot·后端·mysql·spring·intellij-idea
The_Ticker2 小时前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
Elastic 中国社区官方博客2 小时前
Elasticsearch 开放推理 API 增加了对 IBM watsonx.ai Slate 嵌入模型的支持
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
企鹅侠客2 小时前
ETCD调优
数据库·etcd
Json_181790144802 小时前
电商拍立淘按图搜索API接口系列,文档说明参考
前端·数据库
煎饼小狗2 小时前
Redis五大基本类型——Zset有序集合命令详解(命令用法详解+思维导图详解)
数据库·redis·缓存