字符函数是ORACLE中最常用的函数:
Lower(char):将字符串转化为小写格式
Upper(char):将字符转化为大写的格式
Length(char):返回字符串的长度
Substr(char,m,n):取字符串的子串
Trim,Ltrim,Rtrim:去掉空格
 dual 虚表 当没有表可以用的时候 就用虚表
 as  当做  可以理解为别名
 SELECT   LOWER( 'ABCD' ) AS 字符   FROM DUAL; 
 select lower(ename)  as 姓名  from emp;
 SELECT   UPPER( 'aaaaa' ) AS 字符   FROM DUAL; 
 =  --- 一个等号 表示相等
 := --- 冒号+等号  表示赋值
 || --- 两个竖号   表示字符 连接符号  
 select ename  as 姓名, length(ename) as 长度  from emp where  length(ename)=5  ;
 1 表示从第一个字符开始,3 表示取3个字符
 select ename  as 姓名 ,  substr(ename,1,3) as 前三个字符      from   emp;
 select    'A'||  trim('  B B   ')  ||'C' from  dual;
 以首字母大写的方式显示所有员工
 select ename,  (substr(ename,0,1) ||lower(substr(ename,2,length(ename)-1 )) ) as 姓名  from emp;
 Replace (char1,search_string,replace_string)
 显示所有的员工姓名将A替换成“我是A”
 Instr(char1,char2,[,n[,m]])取字符串的位置
 从第二个字符开始找到员工姓名中A所在的位置
select ename, replace(ename,'A','我是A') as replacename from emp;
从ename中的第2个字符开始找A,找第1个
 select ename, instr(ename,'A',2,1)  from emp;
 数学函数的输入参数和返回值的数据类型都是数字类型:
 常用函数
 Round(n,[m])
          四舍五入,如果省掉m,则四舍五入到整数,如果m是整数,则四舍五入到小数点的m位置后,如果是m负数,则  四舍五入到小数点m的位前
? 73.2564 四舍五入到小数点后2位
trunc(n,[m])
用户截取数字,如果省略m,就截去小数部分,如果m是整数就截取到小数点后m位后,如果m是负数,则截取到小数点的前m位
    ? 73.2564  截取到小数点后3位
 Mod(n,[m])取模
      ?  8%3=?
 Floor(n)
 返回小于或是等于n的最大整数 向下取整
      ? 7.5846 向下取整
 Ceil(n)
 返回大于或是等于n的最小整数 向上取整
      ?7.5846 向上取整
 对数字的处理在银行和财务系统用的比较多。
 --默认四舍五入到整数,四舍五入到小数点后2位
 select round(73.2564,2) from dual;
 --默认截取到整数,2表示截取到小数点后2位
 select trunc(73.2564,2) from dual;
 --取余数 
 select mod(8,3) from dual;
 select Floor(7.5846) from dual;
select ceil(7.5846) from dual;
/*
 1 sysdate :返回系统时间  oracle所在服务器的时间
 2 current_date 返回当前时间  程序所在客户机的时间
 3 Next_day(date,week) 给定时间的下一个星期是几号
 4 add_months(d,n):返回在时间d上加n个月的时间
5 last_day(d):返回指定日期所在月份的最后一天
select sysdate,current_date from dual;
 下周一是几号
 select next_day(sysdate,'Monday') from dual;
 十年前
 select add_months(sysdate,-10*12) from dual;
 本月的最后一天
 select last_day(sysdate) from dual;
 --显示满30年份服务年限的员工的姓名和受雇日期
 select  *  from emp  where     add_months(sysdate,-30*12)  > hiredate ;
 --每个员工加入公司的天数
 select round ((sysdate-hiredate)) as  days from emp;
 --找出各月倒数第三天受雇的所有员工
 select * from emp where  (last_day(hiredate)-2 )=hiredate ;
   to_char  
    yyyy:显示年份
    yy :显示年份后2位
    mm:月份
    dd:号
    hh /hh24:小时
    mi分
    ss秒
 select to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual;
 to_char 
 9 :显示数字
 0 :不足则补0
 . :显示小数点
 ,;  显示分隔符
 $ :  显示美元符号
 L :  显示本地货币
 C : 显示国际货币符号
 G : 制定位置显示分割符号
 D : 制定位置显示小数点符号
 薪水指定货币符号
 select ename, sal,to_char(sal,'L00,999.99') from emp;
 select ename, sal,to_char(sal,'L00G999D99') from emp;
 to_date  字符转换成日期类型
 select to_date('15-9月-10') from dual;
 To_number  字符转换成数字类型
 select to_number('001') from dual;
 select to_date('2017-3-15','yyyy-mm-dd') as days  from dual;
 select to_number('009')+1 from dual;
 Sum   求和
 Avg    平均值
 Max    最大值
 Min     最小值
 Count  有值的记录条数
  
 聚集函数不能作为条件放到where后面
 --分组group by 求和 sum  ---先根据deptno分组,再根据job来分组 ,将分完组之后的 sal 加起来
 select   deptno,job, sum(sal)   from emp group by deptno,job;
 --根据部门求平均工资
 select  deptno ,avg(sal)  from emp group by deptno;
 --请查询出每个部门的最高工资和最低工资
 select deptno,max(sal),min(sal) from emp group by deptno;
 --统计每个部门有多少个员工
 select  deptno ,count(*) from emp group by deptno;
   1 、user      显示用户
    
    2 、decode  布尔判断函数 
   
    3 、nvl         空值函数
        
 select user  from dual;
 select count(*) from emp where job='CLERK'
 select job ,decode( job ,'CLERK','A','B'  )  from emp ;
 -- 将所有的人的奖金加50  nvl(comm,0) 如果comm是null就设置为0 否则就是原来的数据
update emp set comm=nvl(comm,0)+50 ;