条件判断函数
1、IF(expr,v1,v2)函数
如果expr是true,即expr<>0 and expr<>NULL ,则IF()返回v1,否则返回v2,返回的值可以是数字值或字符串值,视语境而定。
2、IFNULL(v1,v2)函数
如果v1不为NULL,则返回v1,否则返回v2。返回的值可以是数字值或字符串值,视语境而定。
3、CASE函数
CASE expr WHEN v1 THEN r1 [WHEN v2 THEN r2][ELSE rn] END
如果expr等于某个vn,则返回对应位置THEN后面的结果,如果与所有值都不相等,则返回ELSE后面的rnCASE WHEN v1 THEN r1[WHEN v2 THEN r2][ELSE rn]END
如某个vn值为TRUE时,返回对应位置THEN后面的结果,如果所有值都不为TRUE,则返回ELSE后的rn
系统信息函数
1、获取MySQL版本号、连接数和数据库名的函数
VERSION() 返回指示MySQL服务器版本的字符串,使用utf8字符集
CONNECTION_ID() 返回MySQL服务器当前连接的次数,每个连接都有各自唯一的ID。
SHOW PROCESSLIST; SHOW FULL PROCESSLIST;
- 返回有哪些线程在运行,不仅可以查看当前所有的连接数,还可以查看当前的链接状态,帮助识别出有问题的查询语句等。
- 如果是root账号,能看到所有用户的当前连接。如果是其他普通账号,则只能看到自己占用的连接。show processlist 只列出前100条,show full processlist 列出全部。
- DATABASE() 和 SCHEMA() 函数返回使用utf8字符集的默认(当前)数据库名。
2、获取用户名的函数
- USER()
- CURRENT_USER()
- SYSTEM_USER()
- SESSION_USER()
都是返回当前被mysql服务器验证的用户名和主机名组合。
3、获取字符串的字符集和排序方式的函数
- CHARSET(str) 返回字符串str自变量的字符集
- CONVERT(str USING type) 把str字符串转化成type字符集
- COLLATION(str) 返回字符串str的字符排列方式
4、获取最后一个自动生成的ID值的函数
- LAST_INSERT_ID() 自动返回最后一个INSERT或UPDATE为AUTO_INCREMENT列设置的第一个发生的值。
与table无关,如果向表a插入数据后,再向表b插入数据,返回b中的id值。
当一次性插入多条数据时,返回插入的第一行数据时产生的值。
加密函数
1、加密函数 PASSWORD(str)
从原明文密码str计算并返回加密后的密码字符串,当参数为NULL时,返回NULL。
在MYSQL服务器的鉴定系统中使用;不应将它用在个人的应用程序中。加密是单向的不可逆。
2、加密函数 MD5(str)
为字符串算出一个MD5 128比特校验码。该值以32位十六进制数字的二进制字符串形式返回,若参数为NULL,则返回NULL。
3、加密函数 ENCODE(str,pswd_str)
使用 pswd_str 作为密码,加密str。使用DECODE()解密结果,结果是一个和str长度相同的二进制字符串
4、解密函数 DECODE(crypt_str,pswd_str)
使用 pswd_str 作为密码,解密加密字符串crypt_str,crypt_str 是由ENCODE()返回的字符串。
其他函数
1、格式化函数 FORMAT(x,n)
将数字x格式化,并以四舍五入的方式保留小数点后n位,结果以字符串的形式返回。若n为0,则返回结果函数不含小数部分。
2、不同进制的数字进行转换的函数
CONV(N,from_base,to_base)
函数进行不同进制数间的转换。返回值为数值N的字符串表示,由from_base进制转化为to_base进制。如任一参数为NULL,则返回NULL。
3、IP地址与数字相互转换的函数
INET_ATON(expr)
给出一个作为字符串的网络地址的点地址表示,返回一个代表该地址数值的整数。地址可以是4或8比特地址。
INET_NTOA(expr)
给定一个数字网络地址(4或8比特),返回作为字符串的该地址的点地址表示。
【计算法:’209.207.224.40’=209*256^3 +207*256^2 +224*256 +40=3520061480】
4、加锁函数 GET_LOCK(str,timeout)
设法使用字符串str给定的名字得到一个锁,超时为timeout秒。若成功得到锁,返回1;超时,返回0;错误,返回NULL。
解锁函数 RELEASE_LOCK(str)
解开用字符串str所命名的锁。
IS_FREE_LOCK(str)
检查名为str的锁是否可以使用,没有被封锁。若可以使用则返回1,正在被使用返回0,出错返回NULL
IS_USED_LOCK(str)
检查名为str的锁是否正在被使用,被封锁。若被封锁,则返回使用该锁的客户端的连接标识符(connection ID),否则返回NULL。
5、重复执行指定操作的函数 BENCHMARK(count,expr)
函数重复count次执行表达式expr。
可以用于计算mysql处理表达式的速度。结果值通常为0(0表示处理过程很快,并不是没有花费时间)。另一个作用是可以在mysql客户端内部报告语句执行的时间。
6、改变字符集的函数 CONVERT(…USING…)
带有USING的CONVERT()函数被用来在不同的字符集之间转化数据。
7、改变数据类型的函数 CAST(x,AS type) 和 CONVERT(x,type) 函数将一个类型的值转换为另一个类型的值,可转换的type有:
- BINARY
- CHAR(n)
- DATA
- TIME
- DATETIME
- DECIMAL
- SIGNED
- UNSIGNED