目录
14.-> 计算路径后JSON列的返回值;等效于JSON_EXTRACT()。
15.->> 计算路径并取消对结果的引用后,返回JSON列的值;等效于JSON_UNQUOTE(JSON_EXTRACT())。
1.BENCHMARK() 函数执行表达式expr重复计数次数。
4.BIN_TO_UUID() 将二进制UUID转换为字符串
3.EXPORT_SET() 返回一个字符串,这样,对于值位中设置的每个位,您都会得到一个on字符串,对于未设置的每一位,都会得到off字符串
5.ExtractValue() 使用XPath表示法从XML字符串中提取值
2.FIND_IN_SET() 第二个参数中第一个参数的索引(位置)
1.GeomCollection() 从几何图形构建几何图形集合
2.JSON_ARRAY_APPEND() 将数据附加到JSON文档
3.JSON_ARRAY_INSERT() 插入JSON数组
4.JSON_ARRAYAGG() 将结果集作为单个JSON数组返回
5.JSON_CONTAINS() JSON文档是否在路径处包含特定对象
3.LAST_INSERT_ID() 上一次INSERT的AUTOINCREMENT列的值
1.MAKE_SET() 返回一组逗号分隔的字符串,这些字符串设置了相应的位
4.MASTER_POS_WAIT() 阻止,直到复制副本读取并将所有更新应用到指定位置
7.MBRContains() 一个几何图形的MBR是否包含另一个几何图元的MBR
8.MBRCoveredBy() 一个MBR是否由另一个MBR覆盖
10.MBRDisjoint() 两个几何体的MBR是否不相交
12.MBRIntersects() 两个几何体的MBR是否相交
13.MBROverlaps() 两个几何体的MBR是否重叠
14.MBRTouches() 两种几何形状的MBR是否接触
15.MBRWithin() 一种几何体的MBR是否在另一种几何结构的MBR内
17.MEMBER OF() 如果第一个操作数与作为第二个操作数传递的JSON数组的任何元素匹配,则返回true(1),否则返回false(0)
25.MultiLineString() 使用Point或WKB Point参数构造MultiPoint值。
27.MultiPolygon() 从多边形值构造多重多边形
3.NOT BETWEEN ... AND ... 值是否不在值范围内
9.NTILE() 分区内当前行的Bucket编号——详见窗口函数
10.NULLIF() 如果expr1=expr2,则返回NULL
6.Polygon() 从LineString参数构造多边形
10.PS_CURRENT_THREAD_ID() 当前线程的性能架构线程ID
11.PS_THREAD_ID() 给定线程的性能架构线程ID
6.REGEXP_INSTR() 匹配正则表达式的子字符串的起始索引
8.REGEXP_REPLACE() 替换与正则表达式匹配的子字符串
9.REGEXP_SUBSTR() 返回匹配正则表达式的子字符串
10.RELEASE_ALL_LOCKS() 释放所有当前命名的锁
17.ROLES_GRAPHML() 返回表示内存角色子图的GraphML文档
2.SEC_TO_TIME() 将秒转换为“hh:mm:ss”格式
5.SHA1(), SHA() 计算SHA-1 160位校验和
8.SIN() 返回X的正弦值,其中X以弧度表示。如果X为NULL,则返回NULL。
12.SOURCE_POS_WAIT() 阻止,直到复制副本读取并将所有更新应用到指定位置
16.ST_AsBinary(), ST_AsWKB() 从内部几何图形格式转换为WKB
17.ST_AsGeoJSON() 从几何图形生成GeoJSON对象
18.ST_AsText(), ST_AsWKT() 从内部几何图形格式转换为WKT
19.ST_Buffer() 返回距几何体给定距离内的点的几何体
20.ST_Buffer_Strategy() 生成ST_Buffer()的策略选项
6.TIMESTAMP() 使用单个参数,此函数返回日期或日期时间表达式;有两个参数时,参数的总和
8.TIMESTAMPDIFF() 从日期时间表达式中减去间隔
9.TO_BASE64() 返回转换为base-64字符串的参数
11.TO_SECONDS() 返回从0年开始转换为秒的日期或日期时间参数
3.UNCOMPRESSED_LENGTH() 返回压缩前字符串的长度
11.UTC_TIMESTAMP() 返回当前UTC日期和时间
14.UUID_TO_BIN() 将字符串UUID转换为二进制
1.VALIDATE_PASSWORD_STRENGTH() 确定密码强度
6.VERSION() 返回指示MySQL服务器版本的字符串
1.WAIT_FOR_EXECUTED_GTID_SET() 等待在复制副本上执行给定的GTID。
2.WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS()
6. WEIGHT_STRING() 返回字符串的权重字符串
(一)特殊符号
1.& 位运算符
2.> 大于
select 3>2; # 1 true
select 5>7; # 0 false
3.>> 右移
向右移动长(BIGINT)数字或二进制字符串。
结果类型取决于位参数是作为二进制字符串还是数字计算的:
当位参数具有二进制字符串类型,并且不是十六进制文字、位文字或NULL文字时,会发生二进制字符串求值。否则进行数值计算,根据需要将参数转换为无符号64位整数。
二进制字符串求值生成与位参数长度相同的二进制字符串。数值计算产生无符号64位整数。
无论参数类型如何,从值末尾偏移的位都会丢失而不发出警告。特别地,如果移位计数大于或等于位参数中的位数,则结果中的所有位都是0。
4.>= 大于等于
select 3>=2; # 1
5.< 小于
select 3<2;# 0
6.<>,!= 不等于
select 3<>2;# 1
select 3!=2;# 1
7.<< 向左位移
8.<= 小于等于
select 2<=3;# 1
9.<=> NULL安全相等
NULL安全相等。此运算符执行与=运算符类似的相等比较,但如果两个操作数都为NULL,则返回1而不是NULL,如果一个操作数为NULL,那么返回0而不是NULL。
<=>运算符等效于标准的SQL is NOT DISTINCT FROM运算符
10. %,MOD 取模
SELECT 6%2;# 0
SELECT MOD(6,2);# 0
11. * 乘以
select 2*3;# 6
12.+ 加
select 2+3;# 5
13.- 减;或者更改参数的符号
select 2-3;# -1
14.-> 计算路径后JSON列的返回值;等效于JSON_EXTRACT()。
15.->> 计算路径并取消对结果的引用后,返回JSON列的值;等效于JSON_UNQUOTE(JSON_EXTRACT())。
16./ 除号
select 9/3;# 3
17. := 赋值运算符。
使运算符左侧的用户变量取其右侧的值。右侧的值可以是文本值、存储值的另一个变量或任何产生标量值的合法表达式,包括查询结果(前提是该值是标量值)。可以在同一SET语句中执行多个赋值。可以在同一语句中执行多个赋值。
与=不同,:=运算符从不被解释为比较运算符。这意味着您可以在任何有效的SQL语句中使用:=(而不仅仅是在SET语句中)为变量赋值。
18.= 等于号
select 9=3;# 0
19.^ 按位XOR。
结果类型取决于参数是以二进制字符串还是数字计算:
当参数具有二进制字符串类型,并且其中至少有一个不是十六进制文字、位文字或NULL文字时,就会发生二进制字符串求值。否则进行数值计算,根据需要将参数转换为无符号64位整数。
二进制字符串求值生成与参数长度相同的二进制字符串。如果参数长度不等,则会发生ER_INVALID_BITWISE_OPERANDS_SIZE错误。数值计算产生无符号64位整数。
有关更多信息,请参阅本节中的介绍性讨论。
(二)A
1.ABS() 返回绝对值
select ABS(-9);# 9
2.ACOS() 返回X的反余弦,即余弦为X的值。
如果X不在-1到1的范围内,或者X为NULL,则返回NULL。
select acos(1);# 0
3.ADDDATE() 日期添加
当使用第二个参数的INTERVAL形式调用时,ADDDATE()是DATE_ADD()的同义词。相关函数SUBDATE()是DATE_SUB()的同义词。
SELECT ADDDATE(CURDATE(),INTERVAL 1 MONTH );
4.ADDTIME() 时间添加
ADDTIME(表达式1,表达式2)
ADDTIME()将expr2添加到expr1并返回结果。expr1是时间或日期时间表达式,expr2是时间表达式。如果expr1或expr2为NULL,则返回NULL。
从MySQL 8.0.28开始,此函数和SUBTIME()函数的返回类型确定如下:
如果第一个参数是一个动态参数(例如在一个准备好的语句中),则返回类型为TIME。
否则,函数的解析类型将从第一个参数的解析类型派生。
SELECT ADDTIME('01:30:30','12:30:00');# 14:00:30
5.AES_DECRYPT()
AES_DECRYPT(crypt_str,key_str[,init_vector][,kdf_name][,salt][,info|迭代])
此函数使用官方AES(高级加密标准)算法对数据进行解密。有关详细信息,请参阅AES_ENCRYPT()的说明。使用AES_DECRYPT()的语句对于基于语句的复制是不安全的。
6.AES_ENCRYPT()
AES_ENCRYPT()和AES_DECRYPT。默认情况下,这些函数使用128位密钥长度实现AES。可以使用196或256位的密钥长度,如后所述。关键长度是性能和安全性之间的权衡。
7.AND,&&
select (3>2) AND (5>7); # 0 false
select (3>2) AND (5>4); # 1 true
8.ANY_VALUE(arg)
当启用ONLY_FUL_GROUP_BY SQL模式时,此函数对于GROUP BY查询非常有用,当MySQL拒绝您知道是有效的查询,原因是MySQL无法确定时。函数的返回值和类型与其参数的返回值及类型相同,但不会针对ONLY_FUL_GROUP_BY SQL模式检查函数结果。
9.ASCII()
SELECT ASCII('A');# 65
10.ASIN() 返回X的正弦弧,即正弦值为X的值。
如果X不在-1到1的范围内,或者X为NULL,则返回NULL。
11.ATAN()
返回X的反正切值,即切线为X的值。如果X为NULL,则返回NULL
12.AVG() 平均值
SELECT student_name, AVG(test_score) FROM student GROUP BY student_name;
(三)B
1.BENCHMARK() 函数执行表达式expr重复计数次数。
它可以用来计算MySQL处理表达式的速度。结果值为0,对于不适当的参数(如NULL或负重复计数),结果值为NULL。预期用途来自mysql客户端,它报告查询执行时间
2.BETWEEN...AND.. 值是否在值范围内
mysql> SELECT 2 BETWEEN 1 AND 3, 2 BETWEEN 3 and 1;
-> 1, 0
mysql> SELECT 1 BETWEEN 2 AND 3;
-> 0
mysql> SELECT 'b' BETWEEN 'a' AND 'c';
-> 1
mysql> SELECT 2 BETWEEN 2 AND '3';
-> 1
mysql> SELECT 2 BETWEEN 2 AND 'x-3';
-> 0
3.BIN() 返回包含数字二进制表示的字符串
返回二进制值N的字符串表示形式,其中N是长(BIGINT)数。这相当于CONV(N,10,2)。如果N为NULL,则返回NULL。
4.BIN_TO_UUID() 将二进制UUID转换为字符串
5.BINARY() 将字符串转换为二进制字符串
mysql> SELECT 'a' = 'A';
-> 1
mysql> SELECT BINARY 'a' = 'A';
-> 0
mysql> SELECT 'a' = 'a ';
-> 1
mysql> SELECT BINARY 'a' = 'a ';
-> 0
6.BIT_AND() 返回expr中所有位的按位AND。
结果类型取决于函数参数值是以二进制字符串还是数字计算:
当参数值具有二进制字符串类型,并且参数不是十六进制文字、位文字或NULL文字时,会发生二进制字符串求值。否则进行数值计算,根据需要将参数值转换为无符号64位整数。
二进制字符串求值生成与参数值长度相同的二进制字符串。如果参数值的长度不相等,则会发生ER_INVALID_BITWISE_OPERANDS_SIZE错误。如果参数大小超过511字节,则会发生ER_INVALID_BITWISE_AGGREGATE_OPERANDS_size错误。数值计算产生无符号64位整数。
如果没有匹配的行,BIT_AND()将返回一个长度与参数值相同的中性值(所有位设置为1)。
除非所有值都为NULL,否则NULL值不会影响结果。在这种情况下,结果是一个长度与参数值相同的中性值。
7.BIT_LEBGTH() 以位为单位的参数返回长度
8.BIT_OR() 按位返回OR
9.BIT_XOR() 按位返回OR
(四)C
1.CEIL() 返回不小于参数的最小整数值
mysql> SELECT CEILING(1.23);
-> 2
mysql> SELECT CEILING(-1.23);
-> -1
2.CHAR() 返回传递的每个整数的字符
mysql> SELECT CHAR(77,121,83,81,'76');
+--------------------------------------------------+
| CHAR(77,121,83,81,'76') |
+--------------------------------------------------+
| 0x4D7953514C |
+--------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT CHAR(77,77.3,'77.3');
+--------------------------------------------+
| CHAR(77,77.3,'77.3') |
+--------------------------------------------+
| 0x4D4D4D |
+--------------------------------------------+
1 row in set (0.00 sec)
3.CHARSET() 返回参数的字符集
mysql> SELECT CHARSET('abc');
-> 'utf8mb3'
mysql> SELECT CHARSET(CONVERT('abc' USING latin1));
-> 'latin1'
mysql> SELECT CHARSET(USER());
-> 'utf8mb3'
4.CONCAT() 返回连接字符串
mysql> SELECT CONCAT('My', 'S', 'QL');
-> 'MySQL'
mysql> SELECT CONCAT('My', NULL, 'QL');
-> NULL
mysql> SELECT CONCAT(14.3);
-> '14.3'
5.COUNT() 返回返回的行数计数
mysql> SELECT student.student_name,COUNT(*)
FROM student,course
WHERE student.student_id=course.student_id
GROUP BY student_name;
(五)D
1.DATABASE() 返回默认(当前)数据库名称
SHOW DATABASES;
2.DATE() 提取日期或日期时间表达式的日期部分
mysql> SELECT DATE('2003-12-31 01:02:03');
-> '2003-12-31'
3.DATE_ADD() 将时间值(间隔)添加到日期值
4.DATE_FORMAT() 字符串转换为日期格式
5.DATE_SUB() 从日期中减去时间值(间隔)
(六)E
1.ELT() 返回索引号处的字符串
2.EXP() 提高到的功率
返回e的值(自然对数的基数)的X次方。此函数的逆函数是LOG()(仅使用单个参数)或LN()。如果X为NULL,则此函数返回NULL。
3.EXPORT_SET() 返回一个字符串,这样,对于值位中设置的每个位,您都会得到一个on字符串,对于未设置的每一位,都会得到off字符串
4.EXTRACT() 提取日期的一部分
mysql> SELECT EXTRACT(YEAR FROM '2019-07-02');
-> 2019
mysql> SELECT EXTRACT(YEAR_MONTH FROM '2019-07-02 01:02:03');
-> 201907
mysql> SELECT EXTRACT(DAY_MINUTE FROM '2019-07-02 01:02:03');
-> 20102
mysql> SELECT EXTRACT(MICROSECOND
-> FROM '2003-01-02 10:30:00.000123');
-> 123
5.ExtractValue() 使用XPath表示法从XML字符串中提取值
(七)F
1.FIELD() 后续参数中第一个参数的索引(位置)
mysql> SELECT FIELD('Bb', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff');
-> 2
mysql> SELECT FIELD('Gg', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff');
-> 0
2.FIND_IN_SET() 第二个参数中第一个参数的索引(位置)
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
-> 2
3.FIRST_VALUE() 窗框第一行的参数值
mysql> SELECT
time, subject, val,
FIRST_VALUE(val) OVER w AS 'first',
LAST_VALUE(val) OVER w AS 'last',
NTH_VALUE(val, 2) OVER w AS 'second',
NTH_VALUE(val, 4) OVER w AS 'fourth'
FROM observations
WINDOW w AS (PARTITION BY subject ORDER BY time
ROWS UNBOUNDED PRECEDING);
+----------+---------+------+-------+------+--------+--------+
| time | subject | val | first | last | second | fourth |
+----------+---------+------+-------+------+--------+--------+
| 07:00:00 | st113 | 10 | 10 | 10 | NULL | NULL |
| 07:15:00 | st113 | 9 | 10 | 9 | 9 | NULL |
| 07:30:00 | st113 | 25 | 10 | 25 | 9 | NULL |
| 07:45:00 | st113 | 20 | 10 | 20 | 9 | 20 |
| 07:00:00 | xh458 | 0 | 0 | 0 | NULL | NULL |
| 07:15:00 | xh458 | 10 | 0 | 10 | 10 | NULL |
| 07:30:00 | xh458 | 5 | 0 | 5 | 10 | NULL |
| 07:45:00 | xh458 | 30 | 0 | 30 | 10 | 30 |
| 08:00:00 | xh458 | 25 | 0 | 25 | 10 | 30 |
+----------+---------+------+-------+------+--------+--------+
4.FLOOR() 返回不大于参数的最大整数值
mysql> SELECT FLOOR(1.23), FLOOR(-1.23);
-> 1, -2
5.FORMAT() 返回格式化为指定小数位数的数字
mysql> SELECT FORMAT(12332.123456, 4);
-> '12,332.1235'
mysql> SELECT FORMAT(12332.1,4);
-> '12,332.1000'
mysql> SELECT FORMAT(12332.2,0);
-> '12,332'
mysql> SELECT FORMAT(12332.2,2,'de_DE');
-> '12.332,20'
(八)G
1.GeomCollection() 从几何图形构建几何图形集合
2.GET_FORMAT() 返回日期格式字符串
Function Call | Result |
---|---|
GET_FORMAT(DATE,'USA') | '%m.%d.%Y' |
GET_FORMAT(DATE,'JIS') | '%Y-%m-%d' |
GET_FORMAT(DATE,'ISO') | '%Y-%m-%d' |
GET_FORMAT(DATE,'EUR') | '%d.%m.%Y' |
GET_FORMAT(DATE,'INTERNAL') | '%Y%m%d' |
GET_FORMAT(DATETIME,'USA') | '%Y-%m-%d %H.%i.%s' |
GET_FORMAT(DATETIME,'JIS') | '%Y-%m-%d %H:%i:%s' |
GET_FORMAT(DATETIME,'ISO') | '%Y-%m-%d %H:%i:%s' |
GET_FORMAT(DATETIME,'EUR') | '%Y-%m-%d %H.%i.%s' |
GET_FORMAT(DATETIME,'INTERNAL') | '%Y%m%d%H%i%s' |
GET_FORMAT(TIME,'USA') | '%h:%i:%s %p' |
GET_FORMAT(TIME,'JIS') | '%H:%i:%s' |
GET_FORMAT(TIME,'ISO') | '%H:%i:%s' |
GET_FORMAT(TIME,'EUR') | '%H.%i.%s' |
GET_FORMAT(TIME,'INTERNAL') | '%H%i%s' |
3.GREATEST() 返回最大的参数
mysql> SELECT GREATEST(2,0);
-> 2
mysql> SELECT GREATEST(34.0,3.0,5.0,767.0);
-> 767.0
mysql> SELECT GREATEST('B','A','C');
-> 'C'
4.GROUP_CONCAT() 返回连接字符串
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val]);
mysql> SELECT student_name,
GROUP_CONCAT(test_score)
FROM student
GROUP BY student_name;
(九)H
1.HEX() 十进制或字符串值的十六进制表示
2.HOUR() 返回日期中的小时数
SELECT HOUR('12:10:30');# 12
(十)I
1.IF() If/else构造
2.IFNULL() if/else构造为空
3.IN() 值是否在一组值内
4.INET_ATON() 返回IP地址的数值
(十一)J
1.JSON_ARRAY() 创建JSON数组
mysql> SELECT JSON_ARRAY(1, "abc", NULL, TRUE, CURTIME());
+---------------------------------------------+
| JSON_ARRAY(1, "abc", NULL, TRUE, CURTIME()) |
+---------------------------------------------+
| [1, "abc", null, true, "11:30:24.000000"] |
+---------------------------------------------+
2.JSON_ARRAY_APPEND() 将数据附加到JSON文档
3.JSON_ARRAY_INSERT() 插入JSON数组
4.JSON_ARRAYAGG() 将结果集作为单个JSON数组返回
5.JSON_CONTAINS() JSON文档是否在路径处包含特定对象
(十二)L
1.LAG() 分区内滞后于当前行的行的参数值
mysql> SELECT
t, val,
LAG(val) OVER w AS 'lag',
LEAD(val) OVER w AS 'lead',
val - LAG(val) OVER w AS 'lag diff',
val - LEAD(val) OVER w AS 'lead diff'
FROM series
WINDOW w AS (ORDER BY t);
+----------+------+------+------+----------+-----------+
| t | val | lag | lead | lag diff | lead diff |
+----------+------+------+------+----------+-----------+
| 12:00:00 | 100 | NULL | 125 | NULL | -25 |
| 13:00:00 | 125 | 100 | 132 | 25 | -7 |
| 14:00:00 | 132 | 125 | 145 | 7 | -13 |
| 15:00:00 | 145 | 132 | 140 | 13 | 5 |
| 16:00:00 | 140 | 145 | 150 | -5 | -10 |
| 17:00:00 | 150 | 140 | 200 | 10 | -50 |
| 18:00:00 | 200 | 150 | NULL | 50 | NULL |
+----------+------+------+------+----------+-----------+
2.LAST_DAY 返回参数的月份最后一天
SELECT LAST_DAY('2021-12-08');# 2021-12-31
3.LAST_INSERT_ID() 上一次INSERT的AUTOINCREMENT列的值
4.LAST_VALUE() 窗框最后一行的参数值
5.LCASE() LOWER()的同义词
(十三)M
1.MAKE_SET() 返回一组逗号分隔的字符串,这些字符串设置了相应的位
mysql> SELECT MAKE_SET(1,'a','b','c');
-> 'a'
mysql> SELECT MAKE_SET(1 | 4,'hello','nice','world');
-> 'hello,world'
mysql> S