MySQL学习笔记8-----SELECT的单行函数们

                               ==========【康师傅Day7】============                                  

目录

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):对 的第 y+1 位进行四舍五入,结果保留到第 

        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             

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值