1.2数值函数
round--四舍五入
select round(12.456) from dual; --12
select round(12.656) from dual; --13
select round(12.456,2) from dual;--12.46
select round(12.456,-1) from dual;--10
select round(16.456,-1) from dual;--20
trunc--截断
select trunc(12.456) from dual; --12
select trunc(12.956) from dual; --12
select trunc(12.456,2) from dual;--12.45
select trunc(12.456,-1) from dual;--10
select trunc(16.456,-1) from dual;--10
mod--取余
select mod(10,3) from dual;--1
select mod(10,2) from dual;--0
1.3日期类型
日期1-日期2=数值(单位:天)
当前时间-入职时间=工龄
select sysdate from dual
获取员工入职的天数
select ename,hiredate,sysdate-hiredate from emp
获取员工入职的周数
select ename,hiredate,round((sysdate-hiredate)/7) from emp
获取员工入职的月数
months_between--两个日期的月数差
select ename,hiredate,months_between(sysdate,hiredate),(sysdate-hiredate)/30 from emp
add_months--添加月
select sysdate from dual
select add_months(sysdate,1) from dual
1.4 转换函数--### 转换函数(重点)
--to_char 数值转成字符串
select 12,to_char(12) from dual
--to_char 日期转成字符串
select * from emp where to_char(hiredate,'yyyy/MM/dd')= '1981/02/20'
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual
select to_char(sysdate,'yyyy'),to_char(sysdate,'mm'),to_char(sysdate,'dd'),to_char(sysdate,'day') from dual
--to_number 字符串转数字
select to_number('12') + to_number('34') from dual
select '12' + '34' from dual
--to_date 字符串转成日期
select add_months(to_date('2016-01-31','yyyy-MM-dd'),1) from dual
select * from emp where hiredate=to_date('1981-02-20','yyyy-MM-dd')
1.5 通用函数--了解
--nvl ---######
语法:nvl(数字类型字段名,0)--当 字段为null时,把它当做0处理。
计算 员工年薪 -- null参与运算结果恒为null
select ename,sal,comm,sal*12+comm from emp
--nvl存在意义:上面 这样写运行结果有问题:comm没有的,导致年薪也为null。
--### null参与运算结果恒为null
select ename,sal,comm,sal*12+nvl(comm,0) from emp
--nvl(comm,0)含义:当comm为null时,把它当做0处理。
====emp表 字段值 英文理解:
CLERK--职员
SALESMAN--销售员
MANAGER--经理
ANALYST--分析师
PRESIDENT--总裁
--decode --是【Oracle独有】的---重点
decode(列名,'表中的数据','显示的值','表中的数据','显示的值','表中的数据','显示的值')
select ename,job,
decode(job, --类似Java:switch case --对某个字段根据取值不同,显示不同的内容
'CLERK','职员',
'SALESMAN','销售员',
'其他'
) from emp
--条件表达式 --任何关系型数据库都支持---
case 列名 when 值 then 显示的值 end ---和decode功能一样:对某个字段根据取值不同,显示不同的内容
select ename,job ,
case job
when 'CLERK' then '职员'
when 'SALESMAN' then '销售员'
else '其他'
end
from emp
--2. 多行函数: 聚合函数 组函数
2.1 聚合函数
sum avg count max min
select avg(sal) from emp
select max(sal)- min(sal) from emp
select count(*) from emp
select sum(sal) from emp
2.1 组函数:分组
group by
查询每个部门的平均工资
select deptno,max(sal) from emp group by deptno
select deptno,avg(sal) from emp group by deptno
查询部门的平均工资大于2000的部门
select deptno,avg(sal) from emp group by deptno
having avg(sal)>2000
--where 和having的区别【笔试题】###
where过滤的是表中的物理列(表中存在的列)
where出现在group by前面, having出现在group by的后面
----------------------小结------
五、day01 总结:
Oracle的安装和配置
1、加载xp虚拟机
2、在虚拟机中安装Oracle数据库
3、配置网络 加一个虚拟网卡
4、在本机上测试客户端工具instantclient_12_1远程连接虚拟机
5、安装plsqlDev工具,并且配置
简单查询和条件查询--必须掌握
--常用 重点函数
1.字符串:
replace
length
substr
2.数字
round
3.类型转换--###
to_char--数字、日期转字符串
to_date--字符串转日期。
4.通用函数(常用 )
nvl
解决:--### n |