根据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类型)和精确值数字文字