4.函数
1.介绍函数
-
在Java中,函数也称为方法,是一段具有特定功能、可重复使用的代码块。
-
函数的返回值:
-
通过return语句返回一个值,返回值的类型必须与函数定义中的返回值类型一致
-
若函数不需要返回值,返回类型为void
-
-
函数的作用
-
提高代码的复用性,避免重复编写相同的代码
-
使代码结构更清晰,将复杂的任务分解为多个简单的函数,便于理解和维护
-
2.字符函数
-
char:固定长度,例如:性别;
-
varchar:可变长度,例如:地址;
-
text:备注,说明之类;
-
blob:二进制的,可以存储图片或者声音文件。但在实际中一般不会直接把图片存储到数据库里面,因为数据库扛不起那么大的内存压力,会用专用的图片存储服务器存储图片。
-
大小转换
-
upper:转大写
-
lower():转小写
select upper('adc') select lower('AdcA')
-
-
随机数
-
uuid()
-
由 数字+字母+四个横杠组成的一个36位的随机字符串
select uuid()
-
-
替换
-
replace()
select replace ('aaaddd', 'a ' , ' b ')第一个是参数 第二个是要替换的 第三个是替换后的值 嵌套:select replace (replace ('aaaddd', 'a ' , ' b '), 'd' ,'D' )
-
-
截取
-
substring()
select substring( ' asdfg ' , 2, 4 )从第2个字符开始截取4个 包括了第二个 select substring( ' asdfg ' ,2) 从第2个开始截取所有
-
-
去除空格
-
trim()
-
默认去除前后空格,或者去除字符串的指定首字符串、去除字符串的指定首位字符串
select trim( ' sfggh ')
-
-
获取字节的个数
-
length()
-
获取字节的个数 (MySQL默认编号是utf-8,每个汉字占3个字节,数字 英文都是1个字节,编码ANSI 汉字占2个字节)
select length( trim ( ' sss哈ha '))
-
-
获取字符的个数
-
char_length()
select char_length(trim ( ' sssssad ')
-
-
concat()
-
拼接字符串函数,返回结果为连接参数产生的字符串,参数可以是一个或多个;
-
应用场景:模糊查询、字符串拼接
select * from tb_student where sname like concat('%','四','%');
select * from tb_student where sname like concat('四','%');
select * from tb_student where sname like concat('%','四');
select concat('a',1);
-
3.日期函数
-
date:年月日,对应java里面的:yyyy-MM-dd格式;
-
time:时分秒,对应java里面的:HH:mm:ss格式;
-
datetime:年月日时分秒,对应yyyy-MM-dd HH:mm:ss格式;
-
timestamp:时间戳从1970-1-1开始计算到现在的总毫秒数,就是java里面的格林尼治时间;
-
获取当前系统时间:
-
now()、sysdate()
-
语法:
语法一:select now() 语法二:select sysdate()
-
-
提取指定日期里面的年月日
-
提取指定日期的日:day() 语法:select day(2004-12-27)
-
提取指定日期的月份:month()
-
提取指定日期的年份:year()
-
提取默认当前时间的年月日:
select day(now()) 是指当前时间的多少号 select month(now()) 当前时间的多少月 select year(now()) 当前时间的多少年
-
-
日期转换函数
-
date_format()格式
-
格式化指定的日期,将日期转换成指定格式的字符类型日期,date类型和字符串型的日期都可以转换,fromat格 式的常用指示符
-
表示年份:
-
%Y:4位数表示年份
-
%y:2位数形式表示年份,取最后两位数
-
-
表示月份:
-
%M:以英文形式表示
-
%m:以数字形式表示
-
-
表示日期/号:
-
%d
-
-
表示小时:
-
%H:以24小时制
-
%h:以12小时制
-
-
表示分钟
-
%i
-
-
表示秒:
-
%s:以双位数形式 01,02
-
-
-
-
格式转换:
select date_fromat(now(),'%y年%m月%d日 %H时%i分%s秒')时间 select str_to_date(now(), '%y-%m-%d-%h-%i-%s')
-
案例
查询学生的年龄用当前时间减去出生时间 年份 select year(now())-year(birthday) from tb_srudent
查询本月过生日的学生 select * from tb_stdent where month(birthday) =month(now())
-
4.数值函数
-
int:整型,对应 java里面的 int/Integer;
-
bigint:长整型,对应 java里面的 BigInteger/Long;
-
float:小数,一般用来存储分数相关的,不会用来存储货币相关的;
-
decimal:小数,一般用来存储与货币相关的数据,对应的java类型: java.math.BigDecimal;
-
例如:decimal(5,2):表示整数位最多3位数,小数位2位数,小数位多出的位数进行四舍五入,但是四舍五入后整数位不能超过3位数,如:999.999就不能存储,因为小数位的9四舍五入后整数位会变成1000,超过了3位数。
-
向下取整
-
floor()
-
没有四舍五入,注意负数情况
select floor(3.14) 结果:3 select floor(-3.14) 结果:-4
-
-
向上取整
-
celi()
-
小数位除了纯0外其他往个位数进一,注意负数情况
select ceil(3.14) 结果: 4 select ceil(-3.14) 结果: -3
-
-
四舍五入
-
roundound()
-
四舍五入,也可以指定本保留的小数位数
select round (3.14) 结果: 3 select round (3.5) 结果: 4 select round (3.14, 3) 结果: 3.140
-
5.条件判断函数
-
mysql里面函数的作用等于三元运算符的效果
-
if()
语法: if(条件,结果(条件成立),结果(条件不成立)) select if( 3>2, ' 正确', '错误')
-
ifnull()
-
判断第一个值是否为空,如果不为空 就返回第一个值 ,为空 就返回第二个值
select ifnull(name, ' 空 )from tb_student
-
-
case..when...end
select case when else end from select *, case when xid=1 then ' 语文 ' when xid=2 then ' 数学 ' (先判断 后赋值) end 取个列名 from 表名
6.聚合函数
1.什么是聚合函数?
-
聚合函数作用于一组数据,并对一组数据返回一个值
2.聚合函数类型
-
AVG()
-
SUM()
-
MAX()
-
COUNT()
3.聚合函数语法
-
聚合函数不能嵌套调用。比如不能出现类似"AVG(SUM(字段名称))"形式的调用
3.1.AVG和SUM函数
-
可以对数值型数据使用AVG和SUM函数
-
AVG():平均数
-
SUM():总和
3.2 MIN和MAX函数
-
可以对任意数据类型的数据使用 MIN 和 MAX 函数。
-
MIN():最小值
-
MAX():最大值
3.3 COUNT函数
-
COUNT(*)
返回表中记录总数,适用于任意数据类型。SELECT COUNT(*) FROM employees WHERE department_id = 50;
-
COUNT(expr)
返回expr不为空的记录总数。SELECT COUNT(commission_pct) FROM employees WHERE department_id = 50;
3.4 GROUP BY
-
可以使用GROUP BY子句将表中的数据分成若干组
7.合并
-
前提条件:结果集列数个数相同,列的类型还要相同或是兼容
-
使用场景:在项目统计报表模块,用来合并数据
-
union:
-
将所有的查询结果合并到一起,然后去除相同的记录,交集
-
-
b.union all:
-
将所有的查询结果合并在一起 不会去除系统记录,并集
-
select ' s ' union (拼接) select ' dd'
select 'sss' union all select ' hhhh '
8.给查询的字段取别名
-
两种方式:控股个和as
-
语法
select 字段名 别名,字段名 as 别名 from 表名