mysql算法函数_十个实用MySQL函数
本文首发于个人微信公众号《andyqian》,期待你的关注!
前言
继上一次《十个实用MySQL命令》后,今天奉上十个实用MySQL函数。下面都是一些比较常用且简单的函数,在工作中也是非常常用的。
函数
0. 显示当前时间
命令:select now()。
作用: 显示当前时间。
应用场景: 创建时间,修改时间等默认值。
例子:
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2017-12-27 20:14:56 |
+---------------------+
1 row in set (0.00 sec)
1. 字符长度
命令:select char_length('andyqan')。
作用: 显示指定字符长度。
应用场景: 查看字符长度时。
例子:
mysql> select char_length('andyqian');
+-------------------------+
| char_length('andyqian') |
+-------------------------+
| 8 |
+-------------------------+
1 row in set (0.00 sec)
2. 日期格式化
命令:select date_format(now(),'%y-%m-%d)。
作用:格式化日期。
应用场景:格式化日期时。
例子:
mysql> select date_format(now(),'%y-%m-%d');
+-------------------------------+
| date_format(now(),'%y-%m-%d') |
+-------------------------------+
| 17-12-28 |
+-------------------------------+
1 row in set (0.00 sec)
这里支持的格式有:
%y:表示年(两位数),例如: 17 年。
%Y:表示4位数中的年,例如: 2017年
%m:表示月(1-12)
%d: 表示月中的天
%H: 小时(0-23)
%i: 分钟 (0-59)
%s: 秒 (0-59)
年月日时分秒: %y-%m-%d %H:%i:%s,
如下所示:
mysql> select DATE_FORMAT(now(),'%y-%m-%d %H:%i:%s');
+----------------------------------------+
| DATE_FORMAT(now(),'%y-%m-%d %H:%i:%s') |
+----------------------------------------+
| 17-12-27 20:28:54 |
+----------------------------------------+
1 row in set (0.00 sec)
3. 添加/减少日期时间
命令:
DATE_ADD(date,interval expr unit)
DATE_SUB(date,interval expr unit)
作用: 增加/减少日期时间
应用场景:当前时间的前一天,前几分钟。 常用于数据统计。
例子:
mysql> select date_add(now(),interval 1 day);
+--------------------------------+
| date_add(now(),interval 1 day) |
+--------------------------------+
| 2017-12-28 20:10:17 |
+--------------------------------+
1 row in set (0.00 sec)
其中Date表示日期格式,其中就包括: 如
2017-12-27,now() 等格式。
expr:表示数量。
unit:表示单位,支持毫秒(microsecond),秒(second),小时(hour),天(day),周(week),年(year)等。
4. 类型转换
命令: CAST(expr AS type)
作用: 主要用于显示类型转换
应用场景:显示类型转换
例子:
mysql> select cast(18700000000 as char);
+---------------------------+
| cast(18700000000 as char) |
+---------------------------+
| 18700000000 |
+---------------------------+
1 row in set (0.00 sec)
需要注意的是,其中type支持的不是全部基本数据类型,支持的详细类型,请参考之前的文章《谈谈MySQL显示类型转换》。
5. 加密函数
命令: md5(data)
作用: 用于加密数据
应用场景:加密,一些隐私数据,例如银行卡号,身份证等需要存储密文,(当然,不建议使用数据库层加密,应该在应用层加密)
例子:
mysql> select md5("andyqian");
+----------------------------------+
| md5("andyqian") |
+----------------------------------+
| 8a6f60827608e7f1ae29d1abcecffc3a |
+----------------------------------+
1 row in set (0.00 sec)
注意事项: 如果目前你们数据库中的数据还是明文,此时可以使用数据库加密算法进行加密。
例如: (仅做演示):
update t_base_user set name=md5(name),updated_time=now() where id=1;
支持的加密函数有:
md5()
des_encrypt(加密) / des_decrypt(解密);
sha1()
password() 等等
这里不再一一介绍,有兴趣的同学,可以移步至官网进行详细了解。
6. 字符串连接
命令: concat(str,str2,str3)
作用:拼接字符串
应用场景:拼接字符串,例如在某些字段上同一加上指定字符串。
例子:
mysql> select concat("andy","qian");
+-----------------------+
| concat("andy","qian") |
+-----------------------+
| andyqian |
+-----------------------+
1 row in set (0.00 sec)
该函数平时也还是用的比较多的,基本上场景是,在某些数据上,加上特定的字符串。方法如下:
7. JSON函数(5.7版本才支持)
命令:json_object(函数)
作用:转换json字符串
应用场景:指定数据转换json字符串
例子:
mysql> select json_object("name","andyqian","database","MySQL");
+---------------------------------------------------+
| json_object("name","andyqian","database","MySQL") |
+---------------------------------------------------+
| {"name": "andyqian", "database": "MySQL"} |
+---------------------------------------------------+
1 row in set (0.00 sec)
其中包括json_array:
mysql> select json_array("name","andyqian","database","MySQL");
+--------------------------------------------------+
| json_array("name","andyqian","database","MySQL") |
+--------------------------------------------------+
| ["name", "andyqian", "database", "MySQL"] |
+--------------------------------------------------+
1 row in set (0.00 sec)
判断是否为json字符串的json_valid():
select json_valid('{"name": "andyqian", "database": "MySQL"}');
其中为有效json字符串时为1。
无效json字符串时为0.
还有很多方法,不再一一演示。
8. 聚合函数
命令: sum(),count(),avg(),max(),min()
作用:统计,求平均值,最大,最小值
应用场景:这类函数非常常见,主要用于数据统计,在SQL优化方面,也适用。
例子:
mysql> select max(id) from t_base_user;
+---------+
| max(id) |
+---------+
| 2 |
+---------+
1 row in set (0.00 sec)
这里有个小技巧,如果主键是有序递增的,当需要有多少用户时,可以使用max(id)来代替count(*)函数。
9. distinct()
命令: distinct
作用:去重
应用场景:需要统计类型,状态,计算区分度时。
例子:
mysql> select count(distinct(name))/count(*) from t_base_user;
+--------------------------------+
| count(distinct(name))/count(*) |
+--------------------------------+
| 0.6667 |
+--------------------------------+
1 row in set (0.00 sec)
上述为计算区分度的例子,如有不明白的,可以参考之前的文章《写会MySQL索引》
最后: 祝大家晚安!
相关阅读:
扫码关注,一起进步
mysql算法函数_十个实用MySQL函数相关推荐
- mysql function函数_详解MySQL如何按表创建千万级的压测数据
概述 有时我们要对系统做压测,或者数据库压力测试,这时候需要对某些表插入几百万或者上千万数据,下面介绍下怎么利用MySQL循环和存储过程对特定表的创建千万行数据. 1.准备测试表 CREATE TAB ...
- mysql独有的函数_数据库之MySQL函数(一)
一.数学函数 1.绝对值函数 ABS(x) :返回 x 的绝对值 mysql> select ABS(2),ABS(-2.3),ABS(-22); 返回的结果如下: 数学学得好的大佬应该知道(本 ...
- mysql数据库支持的函数_数据库MySQL--常见函数
函数:将一组逻辑语句封装在函数体中,对外暴露函数名 调用:select 函数名() from 表:(若用到表中的字段则家上'from 表') 函数分类: 1.单行函数(例:concate.leng ...
- mysql 开发规范_专业级的MySQL开发设计规范及SQL编写规范
在团队开发过程中为了项目的稳定,代码的高效,管理的便捷制定内部种开发设计规范是必不可少的, 这里分享一份我们定义MySQL开发设计规范包括表设计规范,字段设计规范,SQL编写规范 数据库对象命名规范 ...
- mysql 自然排序_如何在mysql中实现自然排序
背景 熟悉mysql的同学应该清楚,mysql在对字符串做order by排序时是按照字典序进行排序的,但是如果字符串中包含数字的话(我们称这种类型的字符串为alphanumeric),仅按照字典序的 ...
- mysql映射表_[玩转MySQL之四]MySQL缓存机制
一.前言 在当今的各种系统中,缓存是对系统性能优化的重要手段.MySQL Query Cache(MySQL查询缓存)在MySQL Server中是默认打开的,但是网上各种资料以及有经验的DBA都建议 ...
- mysql停止主从_不停止mysql服务配置主从
不影响主库线上的服务前提下,增加从库,前提是线上的主库配置中已经开启binlog并且指定了server-id. linux主192.168.0.70 版本Centos6.7 nginx1.10 php ...
- 编写分段函数子函数_编写自己的函数
编写分段函数子函数 PYTHON编程 (PYTHON PROGRAMMING) In Python, you can define your own functions. 在Python中,您可以定义 ...
- 计算机二级mysql是什么_计算机二级mysql考什么内容?
计算机二级mysql考什么内容? 一.基本概念与方法 1.数据库基础知识 (1)数据库相关的基本概念 (2)数据库系统的特点与结构 (3)数据模型 2.关系数据库.关系模型 3.数据库设计基础 (1) ...
最新文章
- 数字图像处理4:图像的像素级运算
- CNN结构:MXNet设计和实现简介
- IE9真的支持CSS3和HTML5?
- 证书的应用之一 —— TCPSSL通信实例及协议分析(上)
- Python_主成分分析
- python爬取小说基本信息_Python爬虫零基础实例---爬取小说吧小说内容到本地
- 练习1:创建一个简单的银行程序包
- SpringAs3的一些配置参数
- leetcode python3 简单题231. Power of Two
- python的pass语句_Python pass语句–通过Python
- [书目20110326]高素质员工的28堂必修课
- oracle grant的用法,oracle grant总结
- 线程安全的单例模式C++实现
- jspstudy启动mysql失败_Mysql 启动失败常见错误
- 罗振宇《时间的朋友2018》跨年演讲全文
- NetBeans修改字体中文乱码问题
- php自学提升进阶路线
- 最新MTK芯片型号汇总,MTK开发资料大全下载
- 【软件推荐系列第 3 篇】如何下载、设置时钟屏保
- ::= 语法是什么意思BNF