自学mysql数据库之函数(2)

本文介绍了SQL中的条件判断函数,如IF、IFNULL及CASE语句,系统信息函数包括获取MySQL版本号、连接数、数据库名、用户名等功能,以及字符串的字符集和排序方式的查询方法。

条件判断函数

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后面的rn

  • CASE 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值