根据MySQL 5.7 的官方文档,列出了442个内置函数和表达式。
默认情况下,函数名和它后面的括号之间不能有空格。这有助于MySQL解析器区分函数调用和对具有与函数相同名称的表或列的引用。但是,函数参数周围的空格是允许的。
一、表达式中的类型转换
表达式是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。
涉及到的场景有:
数字型转换为字符型
字符型转换为数字型
注意比较操作中的类型转换
二、运算符概述
2.1、运算符优先级
运算符的优先级决定了表达式中条件的评估顺序。要显式重写此顺序和组术语,请使用括号。
2.2、比较函数和比较运算符
比较操作的结果是1 (TRUE),0 (FALSE)或NULL。这些操作适用于数字和字符串。必要时,字符串会自动转换为数字和数字。
=、<=>、<> (!=)、<=、>=、>
IS NULL
ISNULL
IS NOT NULL
IN (element1,element2...)
NOT IN
LEAST
GREATEST
BETWEEN . . . AND. . .
LIKE
RLIKE
REGEXP:匹配字符串可用正则表达式模式
2.3、逻辑运算符
逻辑运算符的运算结果:TRUE、FALSE或NULL
NOT 或者 !
AND 或者 &&
OR 或者 ||
XOR(异或)
2.4、赋值运算符
=
赋值(作为SET 语句的一部分 ,或作为语句中的SET子句的 一部分UPDATE)
:=
分配一个值
三、流程控制语句
流程控制语句有:case\if()\ifnull()\nullif()
四、函数相关列表
4.1、字符串函数
字符串比较函数
正则表达式
字符集和函数结果整理
4.2、数字函数和操作符
算数运算符
数学函数
4.3、日期和时间函数
CURTIME()返回当前时间
DATE()提取日期或日期时间表达式的日期部分
DATE_ADD()将时间值(间隔)添加到日期值
...
4.4、XML函数
ExtractValue() 使用XPath符号从XML字符串提取值
UpdateXML() 返回替换XML片段
4.5、位操作符和函数
BIT_COUNT() 返回设置的位数
位或(|)
位与(&)
位异或(^ )
位左移(<
位右移(<
位取反(~)
4.6、加密和压缩函数
AES_DECRYPT() 使用AES解密
AES_ENCRYPT() 使用AES加密
...
4.7、信息函数
CONNECTION_ID() 返回连接的连接ID(线程ID)
CURRENT_USER(), CURRENT_USER 经过验证的用户名和主机名
...
4.8、空间分析函数
MySQL提供了对空间数据执行各种操作的功能。
4.9、JSON函数
对于采用JSON参数的函数,如果参数不是有效的JSON值,则会发生错误。解析为JSON的参数表示为json_doc; 表示的参数val不被解析。
JSON_APPEND() (不赞成5.7.9) 将数据追加到JSON文档
JSON_ARRAY() 创建JSON数组
...
4.10、用于全局事务ID的函数
所有这些函数都以GTID集的字符串表示作为参数,这一点非常重要 – 因此,GTID集必须始终在与它们一起使用时引用
4.11、MySQL企业加密函数
MySQL Enterprise Encryption是MySQL企业版(一种商业产品)中的扩展。
从MySQL 5.7.9开始,MySQL企业版包含一组基于OpenSSL库的加密函数,这些函数在SQL级别提供OpenSSL功能
4.12、聚合(GROUP BY)函数
AVG() 返回参数的平均值
BIT_AND() 按位返回AND
...
4.13、其他函数
INET_ATON() 返回IP地址的数字值
INET_NTOA() 从数值中返回IP地址
INET6_ATON() 返回IPv6地址的数字值
...
五、其他补充
5.1、全文搜索功能
自然语言全文搜索、全文限制…
5.2、cast功能和操作符
Cast函数和运算符可以将值从一种数据类型转换为另一种数据类型。
5.3、日历
MySQL uses what is known as a proleptic Gregorian calendar.
5.4、精度数学
精确值操作的精确数学范围包括精确值数据类型(整数和 DECIMAL类型)和精确值数字文字