1、数学函数

名称 描述
CEIL() 进一取整
FLOOR() 舍一取整
MOD 取余数(取模)
POWER() 幂运算
ROUND() 四舍五入
TRUNCATE() 数字截取
ABS() 取绝对值
PI() 圆周率
RAND()和RAND(X) 返回0-1之间的随机数,RAND(X)X相同时返回的随机数相同
SIGN(X) 返回X的符号,X为负数、0、正数分别返回-1、0、1
EXP(X) 计算e的几次方
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
mysql> SELECT CEIL(1.2),CEILING(1.2);
+-----------+--------------+
| CEIL(1.2) | CEILING(1.2) |
+-----------+--------------+
| 2 | 2 |
+-----------+--------------+
1 row in set (0.00 sec)

mysql> SELECT FLOOR(3.14);
+-------------+
| FLOOR(3.14) |
+-------------+
| 3 |
+-------------+
1 row in set (0.00 sec)

mysql> SELECT MOD(3,8);
+----------+
| MOD(3,8) |
+----------+
| 3 |
+----------+
1 row in set (0.00 sec)

mysql> SELECT POW(2,3),POWER(3,3);
+----------+------------+
| POW(2,3) | POWER(3,3) |
+----------+------------+
| 8 | 27 |
+----------+------------+
1 row in set (0.01 sec)

mysql> SELECT ROUND(3.14567,2);
+------------------+
| ROUND(3.14567,2) |
+------------------+
| 3.15 |
+------------------+
1 row in set (0.00 sec)

mysql> SELECT TRUNCATE(3.14567,2);
+---------------------+
| TRUNCATE(3.14567,2) |
+---------------------+
| 3.14 |
+---------------------+
1 row in set (0.00 sec)

mysql> SELECT ABS(-12);
+----------+
| ABS(-12) |
+----------+
| 12 |
+----------+
1 row in set (0.00 sec)

mysql> SELECT PI();
+----------+
| PI() |
+----------+
| 3.141593 |
+----------+
1 row in set (0.00 sec)

mysql> SELECT RAND();
+---------------------+
| RAND() |
+---------------------+
| 0.09555218936461228 |
+---------------------+
1 row in set (0.00 sec)

mysql> SELECT RAND(1); #这样得到的数是一样的
+---------------------+
| RAND(1) |
+---------------------+
| 0.40540353712197724 |
+---------------------+
1 row in set (0.00 sec)

mysql> SELECT SIGN(12),SIGN(0),SIGN(-12);
+----------+---------+-----------+
| SIGN(12) | SIGN(0) | SIGN(-12) |
+----------+---------+-----------+
| 1 | 0 | -1 |
+----------+---------+-----------+
1 row in set (0.00 sec)

mysql> SELECT EXP(3);
+--------------------+
| EXP(3) |
+--------------------+
| 20.085536923187668 |
+--------------------+
1 row in set (0.00 sec)

2、字符串函数

名称 描述
CHAR_LENGTH(S) 返回字符串的字符数
LENGTH 返回字符串的长度
CONCAT(S1,S2…) 将字符串合并为一个字符串
CONCAT_WS(X1,S1,S2…) 以指定分隔符连接字符串
UPPER(S)/UCASE(S) 将字符串转为大写
LOWER(S)/LCASE(S) 将字符串转为小写
LEFT(S,N)/RIGHT(S,N) 返回字符串的前/后n个字符
LPAD(S1,LEN,S2)/RPAD(S1,LEN,S2) 将字符串S1用S2填充到指定的LEN
LTRIM(S)/RTRIM(S)/TRIM(S) 去掉字符串中的空格
TRIM(S1 FROM S) 去掉字符串s中开始处和结尾处的字符串s1
REPEAT(S,N) 重复字符串指定次数
SPACE(N) 返回N个空格
REPLACE(S,S1,S2) 将字符串S中搜索S1替换成S2
STRCMP(S1,S2) 比较字符串,>=<分别返回1,0,-1
SUBSTRING(S,N,LEN) 截取字符串
REVERSE(S) 反转字符串
ELT(N,S1,S2…) 返回指定位置的字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> SELECT CHAR_LENGTH('test'),LENGTH('test');
+---------------------+----------------+
| CHAR_LENGTH('test') | LENGTH('test') |
+---------------------+----------------+
| 4 | 4 |
+---------------------+----------------+
1 row in set (0.00 sec)

mysql> SELECT CHAR_LENGTH('嘿'),LENGTH('嘿');
+--------------------+---------------+
| CHAR_LENGTH('嘿') | LENGTH('嘿') |
+--------------------+---------------+
| 1 | 3 |
+--------------------+---------------+
1 row in set (0.00 sec)

需要注意的是在UTF8下一个汉字的长度为3,但字符数为1。
CONCAT是将两个字符串拼接:

1
2
3
4
5
6
7
mysql> SELECT CONCAT('HELLO','WORLD');
+-------------------------+
| CONCAT('HELLO','WORLD') |
+-------------------------+
| HELLOWORLD |
+-------------------------+
1 row in set (0.00 sec)

例如将用户名后面拼接下划线:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> SELECT id,CONCAT(username,'_')FROM student;
+----+----------------------+
| id | CONCAT(username,'_') |
+----+----------------------+
| 1 | king_ |
| 2 | king1_ |
| 3 | king2_ |
| 4 | king3_ |
| 5 | king4_ |
| 6 | king5_ |
| 7 | king6_ |
| 8 | king7_ |
| 9 | king8_ |
+----+----------------------+
9 rows in set (0.00 sec)

注意:当拼接的字符中有null时,结果为 NULL

1
2
3
4
5
6
7
mysql> SELECT CONCAT('a','b',null);
+----------------------+
| CONCAT('a','b',null) |
+----------------------+
| NULL |
+----------------------+
1 row in set (0.00 sec)

CONCAT_WS是以特定的字符串连接字符:

1
2
3
4
5
6
7
mysql> SELECT CONCAT_WS('-!-','a','b','c');
+------------------------------+
| CONCAT_WS('-!-','a','b','c') |
+------------------------------+
| a-!-b-!-c |
+------------------------------+
1 row in set (0.00 sec)

注意:当拼接的字符中有null时,结果为 NULL,但是如果是连接的内容中有null是结果不为NULL
UPPER|UCASE和LOWER|UCASE,大小写转化:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> SELECT UPPER('this is a test'),UCASE('this is a test');
+-------------------------+-------------------------+
| UPPER('this is a test') | UCASE('this is a test') |
+-------------------------+-------------------------+
| THIS IS A TEST | THIS IS A TEST |
+-------------------------+-------------------------+
1 row in set (0.00 sec)

mysql> SELECT LOWER('HELLO WORLD'),LCASE('HELLO WORLD');
+----------------------+----------------------+
| LOWER('HELLO WORLD') | LCASE('HELLO WORLD') |
+----------------------+----------------------+
| hello world | hello world |
+----------------------+----------------------+
1 row in set (0.00 sec)

通过LEFTRIGHT返回字符串的前几个或后几个字符:

1
2
3
4
5
6
7
mysql> SELECT LEFT('ABCDEF',2),RIGHT('ABCDEF',2);
+------------------+-------------------+
| LEFT('ABCDEF',2) | RIGHT('ABCDEF',2) |
+------------------+-------------------+
| AB | EF |
+------------------+-------------------+
1 row in set (0.00 sec)

通过LPADRPAD在指定位置填充字符:

1
2
3
4
5
6
7
mysql> SELECT LPAD('A',5,'?'),RPAD('A',5,'!'); # 填充到5个字符
+-----------------+-----------------+
| LPAD('A',5,'?') | RPAD('A',5,'!') |
+-----------------+-----------------+
| ????A | A!!!! |
+-----------------+-----------------+
1 row in set (0.00 sec)

通过TRIM()LTRIM()RTRIM()来去除空格、左空格、右空格

1
2
3
4
5
6
7
mysql> SELECT CONCAT('_',TRIM(' ABC '),'_'),CONCAT('_',LTRIM(' ABC '),'_'),CONCAT('_',RTRIM(' ABC '),'_');
+-------------------------------+--------------------------------+--------------------------------+
| CONCAT('_',TRIM(' ABC '),'_') | CONCAT('_',LTRIM(' ABC '),'_') | CONCAT('_',RTRIM(' ABC '),'_') |
+-------------------------------+--------------------------------+--------------------------------+
| _ABC_ | _ABC _ | _ ABC_ |
+-------------------------------+--------------------------------+--------------------------------+
1 row in set (0.00 sec)

可以通过TRIM(S1 FROM S2)REPEAT()来去除指定字符和重复指定字符:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
mysql> SELECT TRIM('A' FROM 'ABCBCA');
+-------------------------+
| TRIM('A' FROM 'ABCBCA') |
+-------------------------+
| BCBC |
+-------------------------+
1 row in set (0.00 sec)

mysql> SELECT REPEAT('H',5);
+---------------+
| REPEAT('H',5) |
+---------------+
| HHHHH |
+---------------+
1 row in set (0.00 sec)
```
`SPACE(n)`返回n分空格:

```SQL
mysql> SELECT CONCAT('_',SPACE(5),'_');
+--------------------------+
| CONCAT('_',SPACE(5),'_') |
+--------------------------+
| _ _ |
+--------------------------+
1 row in set (0.00 sec)

REPLACE实现字符替换:

1
2
3
4
5
6
7
mysql> SELECT REPLACE('ABCBCA','A','_'); # 区分大小写
+---------------------------+
| REPLACE('ABCBCA','A','_') |
+---------------------------+
| _BCBC_ |
+---------------------------+
1 row in set (0.00 sec)

STRCMP比较大小写:

1
2
3
4
5
6
7
mysql> SELECT STRCMP('A','A'),STRCMP('A','a'),STRCMP('B','A'); # 不区分大小写
+-----------------+-----------------+-----------------+
| STRCMP('A','A') | STRCMP('A','a') | STRCMP('B','A') |
+-----------------+-----------------+-----------------+
| 0 | 0 | 1 |
+-----------------+-----------------+-----------------+
1 row in set (0.00 sec)

SUBSTRING字符串截取:

1
2
3
4
5
6
7
mysql> SELECT SUBSTRING('ABCDEF',2,2);
+-------------------------+
| SUBSTRING('ABCDEF',2,2) |
+-------------------------+
| BC |
+-------------------------+
1 row in set (0.00 sec)

代表从第2个字符开始截取2位,字符串下标从1开始。
REVERSE实现字符串翻转:

1
2
3
4
5
6
7
mysql> SELECT REVERSE('ABC');
+----------------+
| REVERSE('ABC') |
+----------------+
| CBA |
+----------------+
1 row in set (0.00 sec)

ELT返回指定位置的字符:

1
2
3
4
5
6
7
mysql> SELECT ELT(2,'A','B','C');
+--------------------+
| ELT(2,'A','B','C') |
+--------------------+
| B |
+--------------------+
1 row in set (0.00 sec)

3、日期时间函数

名称 描述
CURDATE(),CURRENT_DATE() 返回当前日期
CURTIME(),CURRENT_TIME() 返回当前时间
NOW() 返回当前日期和时间
MONTH(D) 返回日期中月份的值
MINTHNAME(D) 返回日期中月份名称,如:January
DAYNAME(D) 返回日期是几,如:Monday
DAYOFWEEK(D) 返回一周内的第几天,1代表星期日
WEEKDAY(D) 返回日期是星期几,0代表星期一
WEEK(D) 一年中的第几个星期
YEAR(D) 返回年份值
HOUR(T) 返回小时值
MINUTE(T) 返回分钟值
SECOND(T) 返回秒数
DATEDIFF(D1,D2) 计算两个日期之间相隔的天数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
mysql> SELECT CURDATE(),CURRENT_DATE();
+------------+----------------+
| CURDATE() | CURRENT_DATE() |
+------------+----------------+
| 2017-10-12 | 2017-10-12 |
+------------+----------------+
1 row in set (0.00 sec)

mysql> SELECT CURTIME(),CURRENT_TIME();
+-----------+----------------+
| CURTIME() | CURRENT_TIME() |
+-----------+----------------+
| 17:32:27 | 17:32:27 |
+-----------+----------------+
1 row in set (0.00 sec)

mysql> SELECT NOW();
+---------------------+
| NOW() |
+---------------------+
| 2017-10-12 17:32:27 |
+---------------------+
1 row in set (0.00 sec)

mysql> SELECT MONTH('2015-1-3');
+-------------------+
| MONTH('2015-1-3') |
+-------------------+
| 1 |
+-------------------+
1 row in set (0.00 sec)

mysql> SELECT MONTH(NOW());
+--------------+
| MONTH(NOW()) |
+--------------+
| 10 |
+--------------+
1 row in set (0.00 sec)

mysql> SELECT MONTHNAME(NOW());
+------------------+
| MONTHNAME(NOW()) |
+------------------+
| October |
+------------------+
1 row in set (0.01 sec)

mysql> SELECT DAYNAME(NOW());
+----------------+
| DAYNAME(NOW()) |
+----------------+
| Thursday |
+----------------+
1 row in set (0.00 sec)

mysql> SELECT DAYOFWEEK(NOW());
+------------------+
| DAYOFWEEK(NOW()) |
+------------------+
| 5 |
+------------------+
1 row in set (0.00 sec)

mysql> SELECT WEEKDAY(NOW());
+----------------+
| WEEKDAY(NOW()) |
+----------------+
| 3 |
+----------------+
1 row in set (0.00 sec)

mysql> SELECT WEEK(NOW());
+-------------+
| WEEK(NOW()) |
+-------------+
| 41 |
+-------------+
1 row in set (0.00 sec)

mysql> SELECT YEAR(NOW());
+-------------+
| YEAR(NOW()) |
+-------------+
| 2017 |
+-------------+
1 row in set (0.00 sec)

mysql> SELECT HOUR(NOW());
+-------------+
| HOUR(NOW()) |
+-------------+
| 17 |
+-------------+
1 row in set (0.00 sec)

mysql> SELECT MINUTE(NOW());
+---------------+
| MINUTE(NOW()) |
+---------------+
| 32 |
+---------------+
1 row in set (0.00 sec)

mysql> SELECT SECOND(NOW());
+---------------+
| SECOND(NOW()) |
+---------------+
| 27 |
+---------------+
1 row in set (0.00 sec)

mysql> SELECT DATEDIFF(CURRENT_DATE(),'1990-1-1');
+-------------------------------------+
| DATEDIFF(CURRENT_DATE(),'1990-1-1') |
+-------------------------------------+
| 10146 |
+-------------------------------------+
1 row in set (0.00 sec)

4、条件判断函数

名称 描述
IF(EXPR,V1,V2) 如果表达式EXPR成立,返回结果V1,否则V2
IFNULL(V1,V2) 如果V1的不为空就显示V1的值,否则V2
CASE WHEN exp1 THEN v1[WHEN exp2 THEN v2][ELSE vn] END CASE表示函数开始,END表示函数介绍。如果表达式exp1成立时返回v1,如果表达式exp2成立时返回v2的值,以此类推,最后玉带ELSE时返回vn

IF(EXPR,V1,V2)以学员表为例,分数大于60输出及格,否则输出不及格:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> SELECT id,username,score,IF(score>=60,'及格','不及格') AS ’输出‘ FROM student;
+----+----------+-------+--------------+
| id | username | score | ’输出‘ |
+----+----------+-------+--------------+
| 1 | king | 95 | 及格 |
| 2 | king1 | 35 | 不及格 |
| 3 | king2 | 45 | 不及格 |
| 4 | king3 | 55 | 不及格 |
| 5 | king4 | 65 | 及格 |
| 6 | king5 | 75 | 及格 |
| 7 | king6 | 80 | 及格 |
| 8 | king7 | 90 | 及格 |
| 9 | king8 | 25 | 不及格 |
+----+----------+-------+--------------+
9 rows in set (0.01 sec)

IFNULL(V1,V2),在cms_user表中学员id为12的用户年龄为NULL,测试一下显示为100:

1
2
3
4
5
6
7
8
9
mysql> SELECT id,username,age,IFNULL(age,'100')FROM cms_user WHERE id>10;# WHERE 条件为了少显示一部分数据
+----+----------+------+-------------------+
| id | username | age | IFNULL(age,'100') |
+----+----------+------+-------------------+
| 11 | john | 65 | 65 |
| 12 | test1 | NULL | 100 |
| 13 | TEST2 | 18 | 18 |
+----+----------+------+-------------------+
3 rows in set (0.00 sec)
1
2
CASE WHEN exp1 THEN v1[WHEN exp2 THEN v2][ELSE vn] END
# CASE表示开始,END表示结束,exp1为真,返回v1,否则exp2,为真返回v2,否则返回vn

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> SELECT id,username,score, CASE WHEN score>60 THEN '不错' WHEN score=60 THEN '刚及格' ELSE '没及格' END FROM student;
+----+----------+-------+--------------------------------------------------------------------------------------+
| id | username | score | CASE WHEN score>60 THEN '不错' WHEN score=60 THEN '刚及格' ELSE '没及格' END |
+----+----------+-------+--------------------------------------------------------------------------------------+
| 1 | king | 95 | 不错 |
| 2 | king1 | 35 | 没及格 |
| 3 | king2 | 45 | 没及格 |
| 4 | king3 | 55 | 没及格 |
| 5 | king4 | 65 | 不错 |
| 6 | king5 | 75 | 不错 |
| 7 | king6 | 80 | 不错 |
| 8 | king7 | 90 | 不错 |
| 9 | king8 | 25 | 没及格 |
+----+----------+-------+--------------------------------------------------------------------------------------+
9 rows in set (0.00 sec)

5、系统信息函数

名称 描述
VERSION() 返回数据库的版本号
CONNECTION_ID 返回服务器的连接数
DATABASE(),SCHEMA() 返回当前数据库名
USER(),SYSTEM_USER() 返回当前用户
CURRENT_USER(),CURRENT_USER 返回当前用户
CHARSET(STR) 返回字符串STR的字符集
COLLATION(STR) 返回字符串STR的校验字符集
LAST_INSERT_ID() 返回最近生成的AUTO_INCREMENT值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.7.19 |
+-----------+
1 row in set (0.00 sec)

mysql> SELECT CONNECTION_ID();
+-----------------+
| CONNECTION_ID() |
+-----------------+
| 12 |
+-----------------+
1 row in set (0.00 sec)

mysql> SELECT DATABASE(),SCHEMA();
+------------+----------+
| DATABASE() | SCHEMA() |
+------------+----------+
| cms | cms |
+------------+----------+
1 row in set (0.00 sec)

mysql> SELECT USER(),SYSTEM_USER();
+----------------+----------------+
| USER() | SYSTEM_USER() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
1 row in set (0.00 sec)

mysql> SELECT CURRENT_USER(),CURRENT_USER;
+----------------+----------------+
| CURRENT_USER() | CURRENT_USER |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
1 row in set (0.00 sec)

mysql> SELECT CHARSET('AAA');
+----------------+
| CHARSET('AAA') |
+----------------+
| utf8 |
+----------------+
1 row in set (0.00 sec)

mysql> SELECT COLLATION('AAA');
+------------------+
| COLLATION('AAA') |
+------------------+
| utf8_general_ci |
+------------------+
1 row in set (0.00 sec)

mysql> SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 0 |
+------------------+
1 row in set (0.00 sec)

6、加密函数

名称 描述
MD5(str) 信息摘要算法
PASSWORD(str) 密码算法
ENCODE(str,pwd_str) 加密结果是一二进制数,必须使用BLOB类型字段保存
DECODE(crypt_str,pwd_str) 对通过ENCODE加密之后的内容解密

MD5(str)加密后会返回32位的字符串:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> SELECT MD5('ADMIN');
+----------------------------------+
| MD5('ADMIN') |
+----------------------------------+
| 73acd9a5972130b75066c82595a1fae3 |
+----------------------------------+
1 row in set (0.00 sec)

mysql> SELECT LENGTH(MD5('ADMIN'));
+----------------------+
| LENGTH(MD5('ADMIN')) |
+----------------------+
| 32 |
+----------------------+
1 row in set (0.00 sec)

PASSWORD(str)主要是对密码进行加密:

1
2
3
4
5
6
7
mysql> SELECT PASSWORD('root');
+-------------------------------------------+
| PASSWORD('root') |
+-------------------------------------------+
| *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-------------------------------------------+
1 row in set, 1 warning (0.00 sec)

剩下两种用的少,暂不了解

7、其他常用函数

名称 描述
FORMAT(x,n) 将数字x进行格式化,将x保留到小数点后n位
ASCLL(s) 返回字符串s的第一个字符的ASCLL码
BIN(x) 返回x的二进制编码
HEX(x) 返回x的十六进制编码
OCT(x) 返回x的八进制编码
CONV(x,f1,f2) 将x从f1进制数变成f2进制数
INET_ATON(IP) 将IP地址转化为数字
INET_NTOA(n) 将数值转化成IP地址
GET_LOCT(name,time) 定义锁
RELEASE_LOCK(name) 解锁

FORMAT(x,n)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
mysql> SELECT FORMAT(3.14567,2);
+-------------------+
| FORMAT(3.14567,2) |
+-------------------+
| 3.15 |
+-------------------+
1 row in set (0.00 sec)

mysql> SELECT ASCII('abc');
+--------------+
| ASCII('abc') |
+--------------+
| 97 |
+--------------+
1 row in set (0.02 sec)

mysql> SELECT BIN(5),HEX(5),OCT(5);
+--------+--------+--------+
| BIN(5) | HEX(5) | OCT(5) |
+--------+--------+--------+
| 101 | 5 | 5 |
+--------+--------+--------+
1 row in set (0.02 sec)

mysql> SELECT CONV(5,10,2);
+--------------+
| CONV(5,10,2) |
+--------------+
| 101 |
+--------------+
1 row in set (0.00 sec)

mysql> SELECT INET_ATON('127.0.0.1');
+------------------------+
| INET_ATON('127.0.0.1') |
+------------------------+
| 2130706433 |
+------------------------+
1 row in set (0.06 sec)

mysql> SELECT INET_NTOA(2130706433);
+-----------------------+
| INET_NTOA(2130706433) |
+-----------------------+
| 127.0.0.1 |
+-----------------------+
1 row in set (0.02 sec)

mysql> SELECT GET_LOCK('KING',10);
+---------------------+
| GET_LOCK('KING',10) |
+---------------------+
| 1 |
+---------------------+
1 row in set (0.05 sec)

mysql> SELECT IS_FREE_LOCK('KING');
+----------------------+
| IS_FREE_LOCK('KING') |
+----------------------+
| 0 |
+----------------------+
1 row in set (0.00 sec)

mysql> SELECT RELEASE_LOCK('KING');
+----------------------+
| RELEASE_LOCK('KING') |
+----------------------+
| 1 |
+----------------------+
1 row in set (0.00 sec)