您现在的位置是:网站首页> 编程资料编程资料
非常实用的MySQL函数全面总结详解示例分析教程_Mysql_
2023-05-26
418人已围观
简介 非常实用的MySQL函数全面总结详解示例分析教程_Mysql_
1.MySQL中关于函数的说明
"概念":类似java、python中的方法,将一组逻辑语句封装在方法体中,对外暴露方法名;
"好处":Ⅰ隐藏了实现细节;Ⅱ提高代码的重用性;
"调用":select 函数名(实参列表) [from 表];
"特点":Ⅰ叫什么(函数名);Ⅱ干什么(函数功能);
"分类":Ⅰ单行函数;Ⅱ分组函数;
"什么是单行函数:":作用于表中的每一行记录,一条记录出来一个结果;
"什么是聚合函数:":作用于一行或者多行,最终返回一个结果;
2.单行函数分类
字符函数;
数学函数;
日期函数;
其他函数;
流程控制函数;
3.字符函数
1)length(str):获取参数值的字节个数;
对于utf8字符集来说,一个英文占1个字节;一个中文占3个字节;
对于gbk字符集来说,一个英文占1个字节;一个中文占2个字节;
操作如下 :

2) concat(str1,str2,…):拼接字符串;
操作如下:

3)upper(str):将字符中的所有字母变为大写;
操作如下:

4)lower(str) :将字符中所有字母变为小写;
操作如下:

5)substr(str,start,len):从start位置开始截取字符串,len表示要截取的长度; 没有指定len长度:表示从start开始起,截取到字符串末尾。指定了len长度:表示从start开始起,截取len个长度。
操作如下:

6)instr(str,要查找的子串) :返回子串第一次出现的索引,如果找不到,返回0; 当查找的子串存在于字符串中:返回该子串在字符串中【第一次】出现的索引。当查找的子串不在字符串中:返回0。
操作如下:

7)trim(str):去掉字符串前后的空格; 该函数只能去掉字符串前后的空格,不能去掉字符串中间的空格。
操作如下:

8)lpad(str,len,填充字符):用指定的字符,实现对字符串左填充指定长度;
操作如下:

9)rpad(str,len,填充字符):用指定的字符,实现对字符串右填充指定长度;
操作如下:

10) replace(str,子串,另一个字符串):将字符串str中的字串,替换为另一个字符串;
操作如下:

4.数学函数
1)round(x,[保留的位数]) :四舍五入; 当对正数进行四舍五入:按照正常的计算方式,四舍五入即可。当对负数进行四舍五入:先把符号丢到一边,对去掉负号后的正数进行四舍五入,完成以后,再把这个负号,补上即可。
操作如下:

2)ceil(x):向上取整,返回>=该参数的最小整数。(天花板函数) 天花板函数,在excel,python中均存在这个函数。你就想象一下你家的天花板,把这个数字丢到天花板上,求的是大于等于这个数字的最小整数。
操作如下:

3)floor(x):向下取整,返回<=该参数的最大整数。(地板函数) 地板函数:在excel,python中均存在这个函数。你就想象一下你家的地板,把这个数字丢到地板上,求的是小于等于这个数字的最大整数。
操作如下:

4)truncate(x,D) :截断; truncate函数,也是在excel,python中均存在,含义基本都是一致的。但是这个函数理解起来有点难,我这里带着大家好好学习一下。
理解如下:
"参考下面的示例图,体会如下文字"
1)D是正数,操作的是小数点右侧的小数部分。
D=1,直接从第1个位置处,砍掉后面的部分。
D=2,直接从第2个位置处,砍掉后面的部分。
......
2)D是0,直接去掉小数部分。
3)D是负数,操作的是小数点左侧的整数部分。
D=-1,直接从-1位置处,先砍掉后面的小数部分,
并且"从当前位置起(包括当前位置),后面整数部分替换为0"。
D=-2,直接从-2位置处,先砍掉后面的小数部分,
并且"从当前位置起(包括当前位置),后面整数部分替换为0"。
示例图:

操作如下:

5)mod(被除数,除数) :取余; 当被除数为正数,结果就是正数。当被除数为负数,结果就是负数。
操作如下:

5.日期时间函数
日期的含义:指的是我们常说的年、月、日。
时间的含义:指的是我们常说的时、分、秒。
在讲述下面函数之前,我们先补充一个知识,不同时间格式符表示什么含义呢?

1)now() :返回系统当前的日期和时间;
操作如下:

2)curdate() :只返回系统当前的日期,不包含时间;
操作如下:

3)curtime() :只返回系统当前的时间,不包含日期;
操作如下:

4)获取日期和时间中年、月、日、时、分、秒;
获取年份:year();
获取月份:month();
获取日:day();
获取小时:hour();
获取分钟:minute();
获取秒数:second();
5)weekofyear() :获取当前时刻所属的周数;
操作如下:

6)quarter() :获取当前时刻所属的季度;
操作如下:

7)str_to_date() :将日期格式的字符串,转换成指定格式的日期;
操作如下:

8)date_format() :将日期转换成日期字符串; %Y-%m-%d返回的月份是01,02…这样的格式。%Y-%c-%d返回的月份是1,2…这样的格式。
操作如下:

9)date_add() + interval :向前、向后偏移日期和时间;

操作如下:

10)last_day() :提取某个月最后一天的日期;
操作如下:

11)datediff(end_date,start_date) :计算两个时间相差的天数;
操作如下:

12)timestampdiff(unit,start_date,end_date) :计算两个时间返回的年/月/天数;
unit参数是确定(start_date,end_date)结果的单位,表示为整数,以下是有效单位:
year:年份
month:月份
day:天
hour:小时
minute 分钟
second:秒
microsecond:微秒
week:周数
quarter:季度
YEAR:年份
操作如下:

6.其它常用系统函数

7.流程控制函数
1)if函数:实现if-else的效果;

2)ifnull函数:判断值是否为null,是null用指定值填充;

3)case…when函数的三种用法;
case … when共有三种用法,我相信自己的总结会相当全面。希望大家一定要好好研究这几种用法,都是很有用的。
等值判断:类似于java中switch case的效果;
区间判断:类似于python中if-elif-else的效果;
case … when和聚合函数联用;
① case … when用作等值判断的语法格式;
case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1
when 常量2 then 要显示的值2或语句2
...
else 要显示的值n或语句n
end
操作如下:

② case … when用作区间判断的语法格式;
case
when 条件1 then 要显示的值1或语句1
when 条件2 then 要显示的值2或语句2
...
else 要显示的值n或语句n
end
操作如下:

③ case…when与聚合函数的联用

利用上述原始表,完成如下问题:
-- 18、查询各科成绩最高分、最低分和平均分,以如下形式显示:
-- 课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率
-- 及格为:>=60,中等为:70-80,优良为:80-90,优秀为:>=90
操作如下:
select sc.c,cname, max(score) 最高分,min(score) 最低分,avg(score) 平
相关内容
- MySQL初学者可以告别分组聚合查询的困扰了_Mysql_
- MySQL系列关于NUll值的经验总结分析教程_Mysql_
- Linux下MYSQL 5.7 找回root密码的问题(亲测可用)_Mysql_
- MySQL系列多表连接查询92及99语法示例详解教程_Mysql_
- MySQL教程子查询示例详解_Mysql_
- MySQL数据分析存储引擎示例讲解_Mysql_
- MySQL系列数据库设计三范式教程示例_Mysql_
- 详细聊聊MySQL中的LIMIT语句_Mysql_
- MySQL系列理解运用union(all)与limit及exists关键字教程_Mysql_
- MySQL教程彻底学懂存储过程_Mysql_
点击排行
本栏推荐
