将一组逻辑语句封装在方法体中,对外暴露方法名:
好处:1.隐藏了实现细节 2. 提高代码的重用性
调用:select 函数名(实参列表) 【from表】
特点:1. 该方法函数名 2. 函数的功能
分类:单行函数:如concat , length 、ifnull‘等
分组函数:做统计使用,又称为统计函数,聚合函数,组函数
1. length 获取参数值的字节个数
Select length(’张三丰hahaha’); --15
2. concat 拼接字符串
Select concat(str1,str2,。。。) as 名 from 表
3. upper、lower:大写,小写转换
Select upper(‘jo’);
Select lower(’JO’);
#示例:将姓变大写,名变小写,然后拼接
Select concat(upper(last_name),lower(first_name))as 姓名 from 表;4.
4. Substr / substring 截取字符串
Select substr(‘截取字符串示例’,6);--sql语句默认从1开始,“示例“,截取索引位置到之后所有内容
Select substr(‘截取字符串示例’,1,2);--截取从指定索引处开始到指定个数;
#案例:姓名中首字符大写,其他字符小写然后用_拼接,显示出来
Select concat (upper(substr(last_name,1,1)),’_’
Instr 返回字串第一次出现的索引,找不到返回0;Select instr(‘str1’,’st’);--1
Trim 去除字符串前后空格,可指定去除Select length(trim(‘ str1 ’));--3
Select trim(‘a’ from ’aaaaaaastraaa1aaaa‘));--straaa1 # 去除字符串前后指定的字符
Lpad :用于指定的字符实现左填充指定长度Select lpad(‘str1’,‘5’,‘*’)#*str1
Select lpad(‘str1’,‘2’,‘*’)#st
rpad :用于指定的字符实现右填充指定长度Select lpad(‘str1’,‘5’,‘*’)#str1*
replace 替换select replace(‘str1‘,’st‘,’2‘);
select round(-1.55); # -2
select round(1.567,2)#1.57
ceil 向上取整,返回大于等于该参数的最小整数select ceil(1.002);#2
select ceil(-1.002);#-1
floor 向下取整,返回小于等于该参数的最大值select floor(-9.99); #-10
truncate 截断select truncate(1.65,1);#1.6
mod 取余select mod(-10,-3);#-1
select mod(10,-3);#1
select now();
curdate 返回当前系统日期,不包含时间select curdata();
curtime 返回当前系统日期,不包含日期select curtime();
YEAR(),MONTH(),DAY(),可以获取指定的部分,年月日时分秒Select year(now())as 年;
Select year(’1998-1-1’)AS 年; #1998
Select year(字段名)AS 年 from 表名;
STR_TO_DATA:将日期格式的字符转换成指定的日期
STR_TO_DATA(‘9-13-1999‘,’%m-%d-%Y‘) # 1999-09-13
Data_format:将日期转换成字符
Data_format(‘2018/6/6‘,’%Y年%m月%d日’) #2018年06月06日
其他函数:
Select varsion();#查看版本 select database();查看当前数据库 select user();当前用户。
If(10<5,’大’,’小’) #小
Case函数的使用一:swatch case的效果语法:case 判断语句 end #case where 条件1 then 结果1 .。。。else 结果 end as 字段名 from 表名;
Eg:select 字段名,
Case 要判断的表达式或字段
When 条件1 then 结果1
When 条件2 then 结果2
When 条件3 then 结果3
Else 结果
End as 字段别名
From 表名;
Case函数的使用二:多重else if
Case
When 条件1 then 结果1
When 条件2 then 结果2
When 条件3 then 结果3
Else 结果
End as 字段别名
From 表名;
常见函数:
字符函数:length ; concat ; substr ; instr ; trim ; upper ; lower ; lpad ; rpad ; replace ;
数学函数:round ; ceil ; floor ; truncate ; mod ;
日期函数:now ; curdata ; curtime ; year ; month ; monthname ; day ; hour ; minute ; second ; str_to_data ; data_format ;
其他函数 ; version ; database ; user ;
控制函数:if ; case
max;select max(字段名) from 表名;
select 表名.* from 表名 where 字段名=(select max(字段值)from字段名);
聚合函数
说明
SUM()
求所有行中单列结果的总和
AVG()
平均值
MAX()
最大值
MIN()
最小值
COUNT()
求总行数
特点:1.sum、avg一般用于处理数值型,max,min,count可以处理任何类型
2.以上分组函数都忽略null值
3.可以搭配distinct搭配
4.count(*)统计行数,count(1)统计1的个数,效率:myisam存储引擎下,count(*)的效率最高,innodb存储引擎下,count(*)和count(1)的效率差不多
5.
语法:SELECT 列名 FROM 表名 WHERE 条件 [GROUP BY 分组依据(列);]()
关键字:GROUP BY,必须在where之后生效,与聚合连用