目录

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信息函数、聚合函数等。

单行函数 、 多行函数

mysql小数点后置0去掉_字符串

单行函数:只对一行进行变换,每行返回一个结果,可以嵌套,参数可以是一个字段或一个值     

多行函数:将多条信息放在一起,输出一个值,例如求总和,求最大

2. 数值函数

        作用于数值上的函数

2.1 基本函数

mysql小数点后置0去掉_MySQL_02

2.1.1 天花板函数 CEIL(),地板函数 FLOOR()

         天花板 CEIL 和地板 FLOOR 函数---在一个数所在的两个整数区间取天花板和地板 

mysql小数点后置0去掉_sql_03

 2.1.2 随机函数RAND()

        RAND( )是随机产生0-1中的一个浮点数,RAND(x) 里的随机种子x如果相同,就会取到相同的值

         如果想取到0-100中的随机数,可以写 RAND( ) * 100 

mysql小数点后置0去掉_mysql小数点后置0去掉_04

 2.1.3 四舍五入 ROUND (  ) ,截断操作TRUNCATE()

        ROUND(x,y):对 的第 y+1 位进行四舍五入,结果保留到第 

        ROUND (x) = ROUND(x,0):四舍五入到整数位

mysql小数点后置0去掉_进制_05

         TRUNCATE (x,y):截断到小数点后第y位,不管是几都不要

mysql小数点后置0去掉_字符串_06

         单行函数可以嵌套

mysql小数点后置0去掉_sql_07

2.2 三角函数

2.2.1 RADIANS(x) 和 DEGREES(x) 角度与弧度互换

         弧度值与度数之间的换算:

mysql小数点后置0去掉_MySQL_08

         RADIANS(x) 和 DEGREES(x) 可以互相嵌套

mysql小数点后置0去掉_进制_09

 2.2.2 三角函数们

mysql小数点后置0去掉_进制_10

        测试一下~ 别忘了都要转换成弧度制哦  

mysql小数点后置0去掉_字符串_11

 2.3 指数和对数函数们

mysql小数点后置0去掉_sql_12

          指数与对数互为反函数 ,图像在坐标轴上关于y=x对称 

mysql小数点后置0去掉_sql_13

 2.4 进制转换函数

mysql小数点后置0去掉_MySQL_14

        注意一下CONV (  )  ,表示 x 目前是 f1 进制数,要转换成 f2 进制数  

mysql小数点后置0去掉_进制_15

 3. 字符串函数们

,注意括号里的函数用 ‘ ’ 括起来

 3.1 ASCII ( ) ASCII码值,CHAR_LENGTH ( )字符数 ,LENGTH ( ) 长度

mysql小数点后置0去掉_mysql小数点后置0去掉_16

         一个字母占1个字节,1个长度;一个汉字占1个字节,3个长度

mysql小数点后置0去掉_sql_17

 3.2 CONCAT ( )  连接,CONCAT_WS()

mysql小数点后置0去掉_字符串_18

        CONCAT ( ) 是直接连接:

         换成CONCAT_WS ( ) ,发生了一点点变化。注意,插入的符号也要用 ‘ ’ 括起来

mysql小数点后置0去掉_sql_19

 3.3 INSERT ( ) ,REPLACE ( ) 替换 

mysql小数点后置0去掉_字符串_20

                注意!!SQL的第一个字符就是1,不是0!!               

INSERT ( ) 替换某段:

mysql小数点后置0去掉_mysql小数点后置0去掉_21

REPLACE ( ) 替换字符 :

mysql小数点后置0去掉_MySQL_22

 3.4 UPPER( ),LOWER( ) 大小写转换

mysql小数点后置0去掉_mysql小数点后置0去掉_23

         通常用于查询更方便,就可以忽略用户传入数据中的大小写

mysql小数点后置0去掉_字符串_24

3.5 LEFT(), RIGHT ()取特定数量字符

mysql小数点后置0去掉_mysql小数点后置0去掉_25

         当n超过字符长度时,全取 

mysql小数点后置0去掉_sql_26

3.6 LPAD ( ),RPAD ( ) 对齐效果

mysql小数点后置0去掉_mysql小数点后置0去掉_27

          左填充可以实现右对齐,右填充可以实现左对齐 ,用 空格 ‘ ’ 进行填充,效果更好~ 

mysql小数点后置0去掉_进制_28

3.7 TRIM ( ) 去掉空格和字符

mysql小数点后置0去掉_MySQL_29

         TRIM (s1 FROM s) TRIM ( s )的一种特殊情况,TRIM ( s )只能去掉收尾的空格,但是 TRIM (s1 FROM s)可以去掉首尾的特定字符s1,中间的字符不会受影响:

mysql小数点后置0去掉_进制_30

         同理,TRIM ( LEADING s1 FROM s ) 是只去掉头部的 s1;TRIM ( TRAILING s1 FROM s )是只去掉尾部的 s1

3.8 REPEAT ( ) 返回n个字符串,SPACE( ) 返回空格

mysql小数点后置0去掉_sql_31

 重复输出多次一样的数据用这个

mysql小数点后置0去掉_mysql小数点后置0去掉_32

3.9 STRCMP ( ),比较字符串ASCII码

mysql小数点后置0去掉_sql_33

          结果为正数说明前面的大,结果是负数说明后面的大 

mysql小数点后置0去掉_进制_34

 3.10 SUBSTR ( ) 返回指定位置的字符,LOCATE ( ) 字符定位

mysql小数点后置0去掉_mysql小数点后置0去掉_35

mysql小数点后置0去掉_进制_36

 

mysql小数点后置0去掉_MySQL_37

 3.11 ELT ( ) 返回指定位置的字符串

        字符串列表:在一个括号里有好几个字符串

mysql小数点后置0去掉_进制_38

 

mysql小数点后置0去掉_字符串_39

3.12 FIELD ( ) ,FIND_IN_SET ( ) 查找指定字符串

mysql小数点后置0去掉_字符串_40

mysql小数点后置0去掉_sql_41

         效果一样滴,就是一个十八字符串分开写,一个是写在一个单引号里了

mysql小数点后置0去掉_字符串_42

 3.13 REVERSE ( ) 反转,NULLIF ( ) 比较

mysql小数点后置0去掉_MySQL_43

          这里比较的不是ASC码,而是真正的字符串 

mysql小数点后置0去掉_进制_44

4. 日期和时间函数--数据库必用

4.1 获取时间和日期

mysql小数点后置0去掉_mysql小数点后置0去掉_45

         一行好几个的,选一个记住就行  

mysql小数点后置0去掉_sql_46

 4.2 日期与时间戳的转换

mysql小数点后置0去掉_字符串_47

 时间戳即为毫秒数 

mysql小数点后置0去掉_mysql小数点后置0去掉_48

 4.3 获取月份、星期、星期数、天数

mysql小数点后置0去掉_sql_49

          注意输入日起的时候要用单引号引起来 

mysql小数点后置0去掉_进制_50

   ❤❤命中注定了家人们❤❤     

         可以嵌套

mysql小数点后置0去掉_进制_51

 4.4 EXTRACT ( )  返回部分日期信息

        用于返回日期中的特定部分,比如年份,月份,秒数等等...

mysql小数点后置0去掉_字符串_52

 EXTRACT(type FROM date)函数中type的取值与含义:HOU

mysql小数点后置0去掉_进制_53

mysql小数点后置0去掉_进制_54

4.5 TIME_TO_SEC ( ) 时间和秒钟互相转换

mysql小数点后置0去掉_MySQL_55

mysql小数点后置0去掉_sql_56

 tips:一天是86400秒

4.6 DATE_ADD ( ) 手动计算纪念日

mysql小数点后置0去掉_字符串_57

mysql小数点后置0去掉_字符串_58

 添加的数可以是负数,相当于减 

同时对两个量进行操作时,要写  ‘ 1_1 ’ ,注意用单引号引起来,两个数用 _ 连接

mysql小数点后置0去掉_MySQL_59

 4.7 更多的时间日期加减,看这里

mysql小数点后置0去掉_MySQL_60

 

mysql小数点后置0去掉_MySQL_61

 

mysql小数点后置0去掉_字符串_62

tips: 在后面+0会将时间日期字符串转换成数值型

mysql小数点后置0去掉_MySQL_63

 

 4.7 日期的显式格式化与解析

        格式化:日期  -〉字符串  

        解析:字符串  -〉日期   

        当我们在查询一个日期字段时,只有输入的字符串与该字段的格式完全一致时才能搜索到。例如,那个字段是1998-5-6,那我们也要写 ‘1998-5-6’ 才能收索信息。如果我们输入 ‘ 5-6-1998 ’ ,尽管信息相同,但是搜索不到,这时需要用到显式转换

mysql小数点后置0去掉_字符串_64

fmt中可挑选的样式

mysql小数点后置0去掉_字符串_65

4.7.1 DATE_FORMAT ( ) ,TIME_FORMATE ( ) 格式化        

注意要 ‘ %y - %m - %d ’ 来写出,那么结果里也都是用 ‘ - ’ 来连接的。所以在年月日处建议用 ‘ - ’ 来连接,时分秒 ‘:’ 来连接

mysql小数点后置0去掉_进制_66

         再来个全家桶,NOW()才是yyds!!总之就是想要什么往后放就行,要什么有什么0.0

mysql小数点后置0去掉_mysql小数点后置0去掉_67

4.7.2 STR_TO_DATE ( ) 解析

         前面字符串的格式要务必和后面的格式一致!!!不然无法识别 

mysql小数点后置0去掉_mysql小数点后置0去掉_68

4.7.3 GET_FORMAT ( ) 匹配成现成的格式

        下表中的日期类型和格式化类型进行匹配,作为 GET_FORMAT ( ) 的两个参数。这个函数的两个参数都是现成的,只能从下表进行选择匹配!

mysql小数点后置0去掉_sql_69

         配合 DATE_FORMAT 使用,可以将日期转换成需要的规范格式

mysql小数点后置0去掉_进制_70

 5. 流程控制函数

        流程处理函数可以根据不同的条件,执行不同的处理流程。常用的有 IF(),IFNULL(),CASE()

 5.1 IF()

mysql小数点后置0去掉_进制_71

        注意,IF前有个逗号 

mysql小数点后置0去掉_字符串_72

 

mysql小数点后置0去掉_mysql小数点后置0去掉_73

 

5.2 IFNULL()

mysql小数点后置0去掉_sql_74

        是IF()的特殊情况,针对NULL的判断语句一种简化方式。下面简化一下上面的语句:

mysql小数点后置0去掉_sql_75

         输出都是一样滴~

5.3 CASE WHEN...THEN...WHEN...THEN...ELSE...END

mysql小数点后置0去掉_mysql小数点后置0去掉_76

         结构就是下面这样啦:

mysql小数点后置0去掉_mysql小数点后置0去掉_77

         查询部门号为 10,20, 30 的员工信息, 若部门号为 10, 则打印其工资的 1.1 倍, 20 号部门, 则打印其工资的 1.2 倍, 30 号部门打印其工资的 1.3 倍数:

mysql小数点后置0去掉_进制_78

 SQL不需要循环语句,自带循环

 6. 加密与解密函数

对数据库中的数据进行加密和解密操作,防止他人窃取,对数据库安全问题非常有用

6.1 PASSWORD(),被8.0弃用的加密函数

 这个函数在MySQL8.0中被弃用啦

mysql小数点后置0去掉_mysql小数点后置0去掉_79

6.2 MD5(),SHA()不可逆的加密

mysql小数点后置0去掉_MySQL_80

         这两种方式都是不可逆的,即只能从明文转成暗文,无法转换回来

mysql小数点后置0去掉_sql_81

         同样的明文转换出来的暗文都是一致的

6.3 ENCODE(),DECODE()可逆的加密

这对好兄弟在MySQL8.0种也不能用了 TAT

mysql小数点后置0去掉_MySQL_82

         在MySQL5.7里测试一下这俩:

mysql小数点后置0去掉_MySQL_83

 

mysql小数点后置0去掉_MySQL_84

         注意,在解密的时候不能把加密后的乱码作为value!!!要像上面那么写才可以

7. MySQL当前信息函数 

         获取 MySQL当前信息

mysql小数点后置0去掉_mysql小数点后置0去掉_85

        跑一下~ 

mysql小数点后置0去掉_sql_86

 8. 其他函数

8.1 FORMAT()格式化数据--要几位留几位

        理解为砍掉数据不需要的尾数,如果n小于等于0,则只保留整数位

mysql小数点后置0去掉_mysql小数点后置0去掉_87

 

mysql小数点后置0去掉_字符串_88

 8.2 CONV()进制间的转换

mysql小数点后置0去掉_MySQL_89

         将 value from 进制转换成 to 进制

mysql小数点后置0去掉_字符串_90

8.3 INET_ATON ( ) ,INET_ATON ( ) 针对IP地址的格式转换

mysql小数点后置0去掉_字符串_91

 

mysql小数点后置0去掉_字符串_92

   以“192.168.1.100”为例,计算方式为192乘以256的3次方,加上168乘以256的2次方,加上1乘以256,再加上100。

8.4  BENCHMARK ( ) 测试处理表达式所耗费的时间

mysql小数点后置0去掉_MySQL_93

         有时候执行一次语句的时间微乎其微,可以跑很多次来查看时间,检验执行效率。这个语句我们要看的不是查询结果了,而是 [ 信息 ] 里的执行时间 

mysql小数点后置0去掉_mysql小数点后置0去掉_94

8.5 CONVERT ( ) 字符编码修改

mysql小数点后置0去掉_sql_95

        说明:原本的 ‘ mysql ’ 默认是utf8mb3。即3个字节表示一个字符;我们用CONVERT函数将其转换为utf8mb4,即4个字节表示一个字符;再使用CHARSET嵌套一下,看看转过来没 :

mysql小数点后置0去掉_mysql小数点后置0去掉_96


                 终于.....把这章...看完了......Orz