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,比较简洁
Oracle学习笔记

select empno,ename,job,sal 涨前,

  case job wheen "PRESIDENT" then sal +1000

                 when 'MANAGER' then sal+800

         end   涨后

from emp;//when相当于等号,根据职位涨工资的sql语句

Oracle学习笔记

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;

Oracle学习笔记

查看各部么所对应的工作的工资是多少、

 

select depno,avg(sal)

          from emp

          group by deptno

           having avg(sal)>2000;