函数

函数就是封装了特定的一些功能,直接拿过来使用,如字符串的处理,日期的运算,数值的运算等等。
函数只是对查询结果中的数据进行处理,不会改变数据库中数据表的值。
函数分为单行函数多行函数
单行函数:单行函数是指对每一条记录进行计算,并得到相应的结果,返回给用户,也就是说,每条记录作为一个输入参数,经过函数计算得到每条记录的计算结果
多行函数:多行函数是指对一组数据进行计算,针对这一组数据(多行记录)只返回一个结果,也称为分组函数
:改变每一条结果,每一条数据对应一条结果
:多条数据,最终展示一个结果。
:除了多行函数(max,min,count,sum,avg),都是单行函数

select empno,ename,lower(ename),upper(ename),sal from emp;  -- 单(多个结果)

运行结果:

  select max(sal),min(sal),count(sal),sum(sal),avg(sal) from emp; -- 多 (一个结果)

运行结果:


 单行函数:

1.字符串函数:

select ename,length(ename),substring(ename,2,3) from emp;  -- length长度  substring(2,3)字符串截取从2开始,截取长度为3

运行结果:

  2.数值函数:

select abs(-5),ceil(5.2),floor(5.4),round(3.14) from emp; -- abs取绝对值 ceil向上取整 floor向下取整  round四舍五入  这里显示14行,没有必要

运行结果:

  select abs(-5),ceil(5.2),floor(5.4),round(3.14) from dual;   -- dual实际是一个伪表  在控制台打印一行

运行结果:

 注:如果没有where条件的话,from dual 可以省略不写,运行结果还是一样的。

select abs(-5),ceil(5.2),floor(5.4),round(3.14) ;

运行结果:

 

 3.日期与时间函数:

select curdate(),curtime();  -- 获取当前年月日,时分秒

运行结果:

 select now(),sysdate(),sleep(2),now(),sysdate() from dual;  -- 都是返回年月日时分秒 但是sysdate是返回函数执行的日期和时间

运行结果:

 

insert into emp values (5200,'bobo','salasman',7698,now(),1000,null,30);   -- now()可以表示年月日时分秒,但是插入数据的时候还是要参照表的结构的

添加成功后,查看表,select * from emp;

运行结果:

 

 

 desc emp;  -- date 对应年月日  datetime对应 年月日时分秒

运行结果:

 4.流程函数:

if相关:

select empno,ename,sal,if(sal>=2500,'高薪','底薪') as '薪资等级' from emp;  -- if - else 双分支结构

运行结果:

 

 

 select empno,ename,sal,comm,sal+ifnull(comm,0) from emp; -- 如果comm是null,那么取值为0  单分支

运行结果:

 

 

 select nullif(1,1),nullif(1,2) from dual;  -- 如果value1等于value2,则返回null,否者返回value1

运行结果:

 

 

 case相关:

case等值判断:

 

select empno,ename,job,
case job
when 'clerk' then '店员'
when 'salesman' then '销售'
when 'manager' then '经理'
else '其他'
end as '岗位',
sal from emp;

运行结果:

 case区间判断:

select empno,ename,sal,
case
when sal<=1000 then 'A'
when sal<=2000 then 'B'
when sal<=3000 then 'C'
else 'D'
end as '公资等级',
deptno from emp;

运行结果:

 5.JSON函数:先略

6.其他函数:

select database(),user(),version()from dual;   -- database数据库  user用户 version版本

运行结果:


多行函数:

select max(sal),min(sal),count(sal),sum(sal),avg(sal) from emp;   -- max最大 min最小 count计数 sum总共 avg平均

运行结果:

  select max(comm),min(comm),count(comm),sum(comm),avg(comm) from emp;    -- max(),min(),count()针对所有类型   sum(),avg()只针对数值类型有效

运行结果:

 

 

 count一般用来计算:

select * from emp;

运行结果:

 

 

 select count(ename) from emp;

运行结果:

select count(*) from emp;

运行结果:

 

  都是14条记录。

posted @ 2021-12-28 22:56  努力学爪哇  阅读(41)  评论(0编辑  收藏  举报