目录
1.函数的理解
2. 数值函数
2.1 基本函数
2.1.1 天花板函数 CEIL(),地板函数 FLOOR()
2.1.2 随机函数RAND()
2.1.3 四舍五入 ROUND ( ) ,截断操作TRUNCATE()
2.2 三角函数
2.2.1 RADIANS(x) 和 DEGREES(x) 角度与弧度互换
2.2.2 三角函数们
2.3 指数和对数函数们
2.4 进制转换函数
3. 字符串函数们
3.1 ASCII ( ) ASCII码值,CHAR_LENGTH ( )字符数 ,LENGTH ( ) 长度
3.2 CONCAT ( ) 连接,CONCAT_WS()
3.3 INSERT ( ) ,REPLACE ( ) 替换
3.4 UPPER( ),LOWER( ) 大小写转换
3.5 LEFT(), RIGHT ()取特定数量字符
3.6 LPAD ( ),RPAD ( ) 对齐效果
3.7 TRIM ( ) 去掉空格和字符
3.8 REPEAT ( ) 返回n个字符串,SPACE( ) 返回空格
3.9 STRCMP ( ),比较字符串ASCII码
3.10 SUBSTR ( ) 返回指定位置的字符,LOCATE ( ) 字符定位
3.11 ELT ( ) 返回指定位置的字符串
3.12 FIELD ( ) ,FIND_IN_SET ( ) 查找指定字符串
3.13 REVERSE ( ) 反转,NULLIF ( ) 比较
4. 日期和时间函数--数据库必用
4.1 获取时间和日期
4.2 日期与时间戳的转换
4.3 获取月份、星期、星期数、天数
4.4 EXTRACT ( ) 返回部分日期信息
4.5 TIME_TO_SEC ( ) 时间和秒钟互相转换
4.6 DATE_ADD ( ) 手动计算纪念日
4.7 更多的时间日期加减,看这里
4.7 日期的显式格式化与解析
4.7.1 DATE_FORMAT ( ) ,TIME_FORMATE ( ) 格式化
4.7.2 STR_TO_DATE ( ) 解析
4.7.3 GET_FORMAT ( ) 匹配成现成的格式
5. 流程控制函数
5.1 IF()
5.2 IFNULL()
5.3 CASE WHEN...THEN...WHEN...THEN...ELSE...END
6. 加密与解密函数
6.1 PASSWORD(),被8.0弃用的加密函数
6.2 MD5(),SHA()不可逆的加密
6.3 ENCODE(),DECODE()可逆的加密
7. MySQL当前信息函数
8. 其他函数
8.1 FORMAT()格式化数据--要几位留几位
8.2 CONV()进制间的转换
8.3 INET_ATON ( ) ,INET_ATON ( ) 针对IP地址的格式转换
8.4 BENCHMARK ( ) 测试处理表达式所耗费的时间
8.5 CONVERT ( ) 字符编码修改
1.函数的理解
函数的作用:将经常使用的代码封装起来,提高代码效率,提高用户对数据库的管理效率
函数的分类: 可分为 内置函数 与 自定义函数
不同DBMS函数的差异:不同的数据库管理系统(例如Orical)之间,函数差异非常大,这就导致SQL语言的移植性很差
MySQL的内置函数与分类:
MySQL提供的内置函数从 实现的功能角度 可以分为数值函数、字符串函数、日期和时间函数、流程控制函数、加密与解密函数、获取MySQL信息函数、聚合函数等。
单行函数 、 多行函数
单行函数:只对一行进行变换,每行返回一个结果,可以嵌套,参数可以是一个字段或一个值
多行函数:将多条信息放在一起,输出一个值,例如求总和,求最大
2. 数值函数
作用于数值上的函数
2.1 基本函数
2.1.1 天花板函数 CEIL(),地板函数 FLOOR()
天花板 CEIL 和地板 FLOOR 函数---在一个数所在的两个整数区间取天花板和地板
2.1.2 随机函数RAND()
RAND( )是随机产生0-1中的一个浮点数,RAND(x) 里的随机种子x如果相同,就会取到相同的值
如果想取到0-100中的随机数,可以写 RAND( ) * 100
2.1.3 四舍五入 ROUND ( ) ,截断操作TRUNCATE()
ROUND(x,y):对 x 的第 y+1 位进行四舍五入,结果保留到第 y 位
ROUND (x) = ROUND(x,0):四舍五入到整数位
TRUNCATE (x,y):截断到小数点后第y位,不管是几都不要
单行函数可以嵌套:
2.2 三角函数
2.2.1 RADIANS(x) 和 DEGREES(x) 角度与弧度互换
弧度值与度数之间的换算:
RADIANS(x) 和 DEGREES(x) 可以互相嵌套
2.2.2 三角函数们
测试一下~ 别忘了都要转换成弧度制哦
2.3 指数和对数函数们
指数与对数互为反函数 ,图像在坐标轴上关于y=x对称
2.4 进制转换函数
注意一下CONV ( ) ,表示 x 目前是 f1 进制数,要转换成 f2 进制数
3. 字符串函数们
,注意括号里的函数用 ‘ ’ 括起来
3.1 ASCII ( ) ASCII码值,CHAR_LENGTH ( )字符数 ,LENGTH ( ) 长度
一个字母占1个字节,1个长度;一个汉字占1个字节,3个长度
3.2 CONCAT ( ) 连接,CONCAT_WS()
CONCAT ( ) 是直接连接:
换成CONCAT_WS ( ) ,发生了一点点变化。注意,插入的符号也要用 ‘ ’ 括起来
3.3 INSERT ( ) ,REPLACE ( ) 替换
注意!!SQL的第一个字符就是1,不是0!!
INSERT ( ) 替换某段:
REPLACE ( ) 替换字符 :
3.4 UPPER( ),LOWER( ) 大小写转换
通常用于查询更方便,就可以忽略用户传入数据中的大小写
3.5 LEFT(), RIGHT ()取特定数量字符
当n超过字符长度时,全取
3.6 LPAD ( ),RPAD ( ) 对齐效果
左填充可以实现右对齐,右填充可以实现左对齐 ,用 空格 ‘ ’ 进行填充,效果更好~
3.7 TRIM ( ) 去掉空格和字符
TRIM (s1 FROM s) 是 TRIM ( s )的一种特殊情况,TRIM ( s )只能去掉收尾的空格,但是 TRIM (s1 FROM s)可以去掉首尾的特定字符s1,中间的字符不会受影响:
同理,TRIM ( LEADING s1 FROM s ) 是只去掉头部的 s1;TRIM ( TRAILING s1 FROM s )是只去掉尾部的 s1
3.8 REPEAT ( ) 返回n个字符串,SPACE( ) 返回空格
重复输出多次一样的数据用这个
3.9 STRCMP ( ),比较字符串ASCII码
结果为正数说明前面的大,结果是负数说明后面的大
3.10 SUBSTR ( ) 返回指定位置的字符,LOCATE ( ) 字符定位
3.11 ELT ( ) 返回指定位置的字符串
字符串列表:在一个括号里有好几个字符串
3.12 FIELD ( ) ,FIND_IN_SET ( ) 查找指定字符串
效果一样滴,就是一个十八字符串分开写,一个是写在一个单引号里了
3.13 REVERSE ( ) 反转,NULLIF ( ) 比较
这里比较的不是ASC码,而是真正的字符串
4. 日期和时间函数--数据库必用
4.1 获取时间和日期
一行好几个的,选一个记住就行
4.2 日期与时间戳的转换
时间戳即为毫秒数
4.3 获取月份、星期、星期数、天数
注意输入日起的时候要用单引号引起来
❤❤命中注定了家人们❤❤
可以嵌套
4.4 EXTRACT ( ) 返回部分日期信息
用于返回日期中的特定部分,比如年份,月份,秒数等等...
EXTRACT(type FROM date)函数中type的取值与含义:HOU
4.5 TIME_TO_SEC ( ) 时间和秒钟互相转换
tips:一天是86400秒
4.6 DATE_ADD ( ) 手动计算纪念日
添加的数可以是负数,相当于减
同时对两个量进行操作时,要写 ‘ 1_1 ’ ,注意用单引号引起来,两个数用 _ 连接
4.7 更多的时间日期加减,看这里
tips: 在后面+0会将时间日期字符串转换成数值型
4.7 日期的显式格式化与解析
格式化:日期 -〉字符串
解析:字符串 -〉日期
当我们在查询一个日期字段时,只有输入的字符串与该字段的格式完全一致时才能搜索到。例如,那个字段是1998-5-6,那我们也要写 ‘1998-5-6’ 才能收索信息。如果我们输入 ‘ 5-6-1998 ’ ,尽管信息相同,但是搜索不到,这时需要用到显式转换
fmt中可挑选的样式:
4.7.1 DATE_FORMAT ( ) ,TIME_FORMATE ( ) 格式化
注意要 ‘ %y - %m - %d ’ 来写出,那么结果里也都是用 ‘ - ’ 来连接的。所以在年月日处建议用 ‘ - ’ 来连接,时分秒 ‘:’ 来连接
再来个全家桶,NOW()才是yyds!!总之就是想要什么往后放就行,要什么有什么0.0
4.7.2 STR_TO_DATE ( ) 解析
前面字符串的格式要务必和后面的格式一致!!!不然无法识别
4.7.3 GET_FORMAT ( ) 匹配成现成的格式
下表中的日期类型和格式化类型进行匹配,作为 GET_FORMAT ( ) 的两个参数。这个函数的两个参数都是现成的,只能从下表进行选择匹配!
配合 DATE_FORMAT 使用,可以将日期转换成需要的规范格式
5. 流程控制函数
流程处理函数可以根据不同的条件,执行不同的处理流程。常用的有 IF(),IFNULL(),CASE()
5.1 IF()
注意,IF前有个逗号
5.2 IFNULL()
是IF()的特殊情况,针对NULL的判断语句一种简化方式。下面简化一下上面的语句:
输出都是一样滴~
5.3 CASE WHEN...THEN...WHEN...THEN...ELSE...END
结构就是下面这样啦:
查询部门号为 10,20, 30 的员工信息, 若部门号为 10, 则打印其工资的 1.1 倍, 20 号部门, 则打印其工资的 1.2 倍, 30 号部门打印其工资的 1.3 倍数:
SQL不需要循环语句,自带循环
6. 加密与解密函数
对数据库中的数据进行加密和解密操作,防止他人窃取,对数据库安全问题非常有用
6.1 PASSWORD(),被8.0弃用的加密函数
这个函数在MySQL8.0中被弃用啦
6.2 MD5(),SHA()不可逆的加密
这两种方式都是不可逆的,即只能从明文转成暗文,无法转换回来
同样的明文转换出来的暗文都是一致的
6.3 ENCODE(),DECODE()可逆的加密
这对好兄弟在MySQL8.0种也不能用了 TAT
在MySQL5.7里测试一下这俩:
注意,在解密的时候不能把加密后的乱码作为value!!!要像上面那么写才可以
7. MySQL当前信息函数
获取 MySQL当前信息
跑一下~
8. 其他函数
8.1 FORMAT()格式化数据--要几位留几位
理解为砍掉数据不需要的尾数,如果n小于等于0,则只保留整数位
8.2 CONV()进制间的转换
将 value 从 from 进制转换成 to 进制
8.3 INET_ATON ( ) ,INET_ATON ( ) 针对IP地址的格式转换
以“192.168.1.100”为例,计算方式为192乘以256的3次方,加上168乘以256的2次方,加上1乘以256,再加上100。
8.4 BENCHMARK ( ) 测试处理表达式所耗费的时间
有时候执行一次语句的时间微乎其微,可以跑很多次来查看时间,检验执行效率。这个语句我们要看的不是查询结果了,而是 [ 信息 ] 里的执行时间
8.5 CONVERT ( ) 字符编码修改
说明:原本的 ‘ mysql ’ 默认是utf8mb3。即3个字节表示一个字符;我们用CONVERT函数将其转换为utf8mb4,即4个字节表示一个字符;再使用CHARSET嵌套一下,看看转过来没 :
终于.....把这章...看完了......Orz