=========================================== mysql 相关函数 =================================================
=========================================== 数学函数 =====================================================
绝对值函数 abs()
圆周率函数 PI()
开平方根函数 sqrt()
求余函数 mod(x, y) 返回x除以y的余数
获取整数的函数 ceil(x), ceiling(x), 向上取整, floor(x) 向下取整
获取随机数的函数 rand(), 产生0-1之间的随机小数 rand(x),相同参数x获取的随机数相同,不同则不同
round(x), 返回最接近x的整数, round(x, y), 四舍五入,保留y位小数, truncate(x, y), 截取操作,保留y位小数
符号函数 sign(x), 返回x的符号, 0则返回0, -2放回-1
幂函数 pow(x, y) , power(x, y),返回x的y次方, exp(3) ,返回e的三次方
对数运算函数 log(x), log10(x)
角度与弧度相互转换的函数 radians(180) = 3.14 degrees(pi()) = 180
round(sin(pi())) = 0 cos(0) = 1 round(tan(pi()/4)) = 1
=========================================== 字符串函数 ===================================================
计算字符串长度函数 char_length("date") = 4 length("张波") = 6 返回字节长度 一个汉字三个字节
合并字符串函数 concat('my sql', '5.7') = 'my sql5.7' concat_ws('-', '1', '2', '3') = '1-2-3'
替换字符串函数 insert(s1, x, len, s2)
字母大小写转换的函数 lower('BEAUTIFUL')=beautiful, lcase('Z') = z, upper('black')=BLACK, ucase('z')=Z
获取指定长度的字符串函数 left('foot', 2)=fo , right('foot', 2)=ot
填充字符串函数 lpad('she', 2, '??')= sh, lpad('she', 4, '??')= ?she,
rpad('she', 2, '??')= sh, rpad('she', 4, '??')= she?,
删除空格的函数 ltrim(' b ')='b ' rtrim(' b ')=' b' trim(' b ')='b'
删除指定字符串函数 trim('xy' from 'xysxyxxy')= 'sxys' 删除两端的xy
重复生成字符串函数 repeat('my', 3)='mymymy'
空格函数 space(n) 返回n哥空格组成的字符串
替换函数 replace('xxxx.mysql.com', 'x', 'w')='www.mysql.com'
比较字符串大小的函数 strcmp('a', 'as') = -1 strcmp('as', 'as') = 0 strcmp('as', 'a') = 1
获取子串的函数 substring(s,n,len) 返回起始位置n,长度为len的子串 mid(s, n, len)和前面函数返回结果一样
获取子串开始位置的函数 locale('ball', 'football')=5 position('ball' in 'football')=5 insert('football', 'ball')=5
字符串逆序的函数 reverse('abc') = 'cba'
获取指定位置的字符串的函数 elt(3, '1', '2', '3')='3' elt(4, '1', '2', '3')=null
field('hi', 'hihi', 'hi', 'h') = 2 field('hi', 'hihi', 'h') = 0
获取子串位置的函数 find_in_set('hi', 'hihi, hi, h')=2
选取字符串的函数 make_set(x, s1, s2) 跟二进制有关系 有点复杂 请读者自行验证
========================================== 日期和时间函数 =================================================
获取当前日期和时间的函数 curdate() = '2018-08-10' current_date() = '2018-08-10' curdate() + 0 = 20180810 返回数值型
current_timestamp() = localtime() = now() = sysdate() = '2018-08-10 23:33:33'
unix时间戳函数 unix_timestamp() = unix_timestamp(now()) = 1533915373 from_timestamp('1533915373') = '2018-08-10 23:33:33'
utc日期函数和utc时间函数 utc_date() = '2018-08-10' utc_date() + 0 = '20180810'
utc_time() = '23:33:33' utc_time() + 0 = '233333.000000'
获取月份的函数 month('2018-08-10') = 8 monthname('2018-08-10') = August
获取星期的函数 dayname('2018-08-12')=sunday dayofweek('2018-08-12')=1 weekday('2018-08-12')=6
获取星期数的函数 week('2018-08-12') weekofyear(d) 返回某天在一年中的第几周 用的不多吧 详情请看书
返回一年中的第几天 dayofyear('2016-02-20')=51 dayofmonth('2016-02-20')=20 返回一个月中的第几天
返回指定日期对应的年份 year('11-02-03')=2011 00-69 - 2000-2069
返回对应的季度 quarter('2018-04-01')=2 minute('16-02-03 10:10:11')=10 返回对应的分钟值
返回指定时间的秒数 second('16-02-03 10:10:11')=11
获取日期指定值得函数 extract('year from '2016-02-03') = 2016 extract('year_month from '2016-02-03') = 201602
extract('day_minute from '2016-02-03 10:10:22') = 031010
时间秒针转换函数 time_to_sec('23:23:00')=84180 23 * 3600 + 23 * 60 + 0 = 84180
sec_to_time 与上面互为反函数
计算时间和日期的函数 date_add('2010-12-31 23:59:59', interval 1 second) = 2011-01-01 00:00:00
adddate('2010-12-31 23:59:59', interval 1 second) = 2011-01-01 00:00:00
date_add('2010-12-31 23:59:59', interval '1:1' minute_second) = 2011-01-01 00:01:00
date_sub 和 subdate是上面函数的反函数
addtime('2010-12-31 23:59:59', '1:1:1') = 2011-01-01 01:01:00 subtime() 是反函数
返回两个日期之间的间隔天数 datediff(date1, date2) = date1 - date2
日期和时间格式化函数 date_format('2018-08-12 14:12:12', '%W %M %Y') = sunday August 2018
格式化请参阅书本157页 太多了 还有time_format(date, '%x')
================================= 条件判断函数,系统信息函数, 加/解密函数,其他函数 ====================================
条件判断函数 if(expr, v1, v2) 如果expr为真 返回v1, 为假返回v2 if(1>2, 2, 3) = 3
ifnull(v1, v2) v1不为null 返回v1 否则返回v2 ifnull(1, 2) = 1 ifnull(null, 10) = 10
case expr when v1 then r1 [when v2 then r2] [else rn] end
expr = vn 则返回对应的then后面的rn值, 否则返回end
case when v1 then r1 when v2 then r2 else rn vn为true则返回对应then后面的rn
系统信息函数 version() 查看mysql的版本号 5.7.10 connection_id() 查看mysql服务器当前连接次数
show processlist 当前用户连接信息 这个可以用到哦 特别是查看 mysql账号的时候 ***********重点关注**********
书上面有各个字段名的解释 不懂得可以参考一下 162页
show database() , show schema() 查看当前数据库 返回mysql
show user(), current_user(), system_user() 查看用户名
获取字符串的字符集和排列方式的函数 charset('abs') = utf8 charset(convert('abs' using latin1)) = latin1
collation() 返回字符串排列方式 latin2_general_ci utf8_general_ci
查看最后一次插入生成的生成的第一个ID last_insert_id()
加密函数 password(str) MD5(str) encode(str, pswd_str) 使用pswd_str加密str
解密函数 decode(encode(str, pswd_str), pswd_str) = str
格式化函数 format(x, n) format(12.3456, 2) = 12.34 format(12.3456, 6) = 12.345600 保留小数点位指定值 **重点关注**
不同进制的数字进行转换到的函数 conv(n, form_base, to_base) 详情请看书 168
IP地址与数字相互转换的函数 inet_aton('209.207.224.40') = 3520061480 字符串网络地址转换成数值网络地址
加锁函数和解锁函数 get_lock(str, timeout) get_lock('lock1', 10) = 1 加锁成功 0 加锁失败
is_used_lock(str) is_used_lock('lock1') = 1 正在被使用
is_free_lock(str) is_free_lock('lock1') = 0 正在被使用
release_lock(str) release_lock('lock1') = 1 解锁成功
重复执行指定操作函数 benchmark(count, expr) expr函数执行count次
改变字符集的函数 charset(convert('abs' using latin1)) = latin1
改变数据类型的函数 case(x, as type), convert(x, type) 意思显而易见
case(100, as char(2)) = 10
convert('2018-08-12 15:22:23', time) = 15: 22: 23 这是一个美好的周末 听着朴树的空帆船(很好听的歌哦)
=========================================== mysql 相关函数 结束 =================================================