Oracle学习笔记
Oracle:
1.把小写字符转为大写
upper()//转大写
lower()转大写
select substr('Hello World',3) from dual
--------llo World
select lengthb('hello'),length('hello') from dual
--------5,5
select instr('hello','3')
----l
select trim('H',from 'Hello')
----from ello
ROUND(45.44,2)==45.44
round(45.99,1)==46.0
upper('smith')
select upper('smith') from dual
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
select ename,hiredate,(sysdate-hiredate)/30 一,months_between
select next_day(sysdate,'星期六') from dual;
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是星期"day') from dual
select to_char(sal,'L9,999.99') from dual
select nullif('abc','abc') from dual;//判断是否相等
select empno,ename,job,sal from emp;
If-then-else
使用两种方法
case表达式:Sql99的语法,类似Base,比较繁琐
Decode函数:Oracle自己的语法,类似Java,比较简洁
select empno,ename,job,sal 涨前,
case job wheen "PRESIDENT" then sal +1000
when 'MANAGER' then sal+800
end 涨后
from emp;//when相当于等号,根据职位涨工资的sql语句
DECODE (job,'PRESIDENT',sal+1000,'MANAGER',sal+800,sal+400)涨后
from emp;//decode形式的if -else
组函数
----null 值 5. 组函数(多行函数)自动滤空;
select avg(nvl(comm,0)) from emp;//滤空函数
select deptno,avg(sal) from emp group by deptno;通常的sql语句
抽象Oracle要求的写法
select select emp,deptno,avg(sal) from emp group by emp deptno;通常的sql语句
注意!在SELECT列表中所有未包含在组函数中的列都应该包含在GROUP BY子句中
select deptno,job,sum(sal)
from emp
group by depno,job
order by 1;
查看各部么所对应的工作的工资是多少、
select depno,avg(sal)
from emp
group by deptno
having avg(sal)>2000;