进阶4:常见函数。
函数与函数之间可以嵌套使用。
函数概念: 就是方法。 将一组逻辑语句封装在方法体重,对外暴露方法名。
好处: 隐藏了细节,简化了,简单。 提供了代码的复用性。
调用: select 函数名(实参) [from 表];
分类:
单行函数:concat、length、finull 等
分组函数: group by
功能:做统计使用,又称为统计函数、聚合函数、组函数。
一、字符函数。
length() 用于获取字节个数。
例子:select length("fuqiang")
concat 拼接字符
例子:select concat(对字段或者任意字符进行拼接连接处用逗号隔开)from 表名;
upper(转换大写),lower(转换小写)
例子:select upper('john'); select lower ("john");
substr、substring 截取字符
sql语言索引从1开始
例子:select substr('付强666',1 of 2) 结果是:付强 左合右合
instr 返回“子串”第一次出现的”索引的位置下标“,如果找不到返回0
select instr('付强666我的giao付强','付强') 这里后面要筛选的‘付强’就是字串。 结果为:1
trim 去掉前后空格
select trim(" 付强 ") 结果:只有付强空格已经筛选掉了。
trim还可以去掉指定的字符
例子:select trim ('a' from 'aaaaaa付aaaaaa强aaaa')
结果:付强
lpad : 选用指定的字符和长度 进行左填充
这里指:如果这个字符串本身长度不够就进行填充。
lpad('字符串','指定字符串的总个数','要填充的字符串')
例子:select lpad('付强','5','') 结果为:**付强
rpad 用指定的字符串进行右填充指定长度。。
replace 替换
select replace('aaaaaaaabbbbbb','a','b') 把a替换成b
结果:aaaaaaaaaa
二数学函数
round 四舍五入
select round(1.65);
select round(1.6575,2);#后面的 2 是小数点保留2位。
ceil 向上取整
1的向上取整还是1
1.2的话就是2了。
floor 向下取整
返回<=该参数的最大整数。
select floor (-9.99); 结果:10
truncate 截断
select truncate(1.69999,1)#第二个参数表示截断小数点后面几位
结果:1.6
mod 取余
select mod(10,3); 等于 select 10%3;
结果为:1
取余公式: (-10,-3):-10-(-10)/(-3)*(-3)=-1
rand 随机函数返回一个0-1的小数。。
三 日期函数
now 返回当前系统日期+时间
selct now();
curdate 返回当前系统日期不包含时间。
select curdate();
curtime 返回当前时间,不包含日期。
select curtime();
获取指定的部分 。
比如 只获得 年、月、日、小时、分钟、秒
例子: select year(NOw()) as 年;
select year('1999-1-4') as 年;
select year(hiredate) 年 from employees;
除了年还可以 月 month() monthname()月。
str_to_date :将日期格式的字符转换成指定格式的日期
select str_to_date('1998-8-3','%Y-%c-%d');
date_format 将日期转换为字符串
select date_format(now(),'%y年%m月%d日');
datediff 日期极差函数
select datediff(减数日期,被减数日期);
只能用于日期,并且前面的日期不能大于后面的日期,否则会返回null
栗子:select datediff("2020-10-10","2019-10-10");结果:366
其他函数
select version();
select database();
select user();
流程控制图
if函数 :if else 的效果
select if(10>5,"大","小");
case 控制结构(函数)
case 要判断的字段或者表达式
when 变量1 then 要显示的值1或者语句1
when 变量2 then 要显示的值1或者语句2
……
else 要显示的值n 或者语句n;
end
分组函数
功能:用作统计使用,又称聚合函数或者统计函数或者组函数
分类: sum求和 avg平均值 max最大值 min最小值 count 计算个数
简单的案例:
select sum() from 表名;
select sum() 和,avg() 平均,max() 最大值 from 表名;
这样就会出现多个分组函数。
参数支持那些类型:
sum、avg 不可以用字符串运行,虽然不报错。一般就是处理数值型。
max 与 min 是可以支持比较字符型与日期型的大小的。
count基本都可以运行。计算不为null的个数
以上的分组函数都忽略NULL值
distinct:去重 也可以跟函数一块用。
count函数的详细介绍:
select count(*) from 表。 可以用来统计行数。这里的原理是全部的列中只要有一个不为null就给你加上1。
select count(1) from 表名 统计行数
和分组函数一同查询的字段要求是group by后的字段 其他是非常不建议的。