日期:2014-05-16  浏览次数:20529 次

马士兵老师oracle视频学习笔记(一)
为用户解锁:
    以管理员身份进入oracle,system/system as sysdba
    输入alter user scott account unlock;
切换用户:conn scott/scott
查看表结构:desc emp;
自定义转义符:select ename from emp where ename like '%$%%' escape '$'; 通常用\来转义
  not like 的使用:select ename ,sal*12 annual_sal form emp where wname not like '_A%' and sal > 800 order by sal desc;
oracle常用函数:
   单行函数:
       lower(全部转化成小写) upper(全部转换成大写)
select substr(ename,i,j) from emp;从第i个字符开始截,总共截j个字符。
       chr() 将ascii码转化正字母。如:chr(65) 为 A。 ascii()将字母转化成ascii码。
       round(23.652)四舍五入 结果为24。 round(23.652,2)为23.65    round(23.652,-1)为20
      char():将数字或日期转化成给定的格式 to_char(sal,'$99,999,9999') sal等于800的结果是 $800.0000   to_char(sal,'L99,999,9999') sal等于800的结果是 ¥800.0000   9则表示有则显示没有则不显示,如果吧9换成0的话,则都会显示
       to_char(cratedate,'yyyy-MM-dd hh:mm:ss')
日期比较大小时要将日期的字符串转化成日期格式如:createdate >  to_date('2013-05-02 12:01:20','yyyy-MM-dd hh:mm:ss')
数字比较大小时将字符串转化成数字 select sal from emp where sal > to_number('$1,250,00','$99,999,99');
nvl(comm,0)如果comm有空值的话用0代替。
   组函数:
max(); select max(sal) from emp; 找出最高的薪水
min(); select min(sal) from emp; 找出最低的薪水
avg(); select avg(sal) from emp; 找出人均薪水
   函数套用:select to_char(avg(sal),'999999.99') from emp;
sum();求总和  如:select sum(sal) from emp;每个月总共支出多少薪金。
count(*);求总共有多少条记录。count(*),count(1),count(rowid)三个的结果是一样的
group by :select avg(sal) from emp group by deptno.
having:分组之后的限制语句,和group by一起使用。
如:select avg(sal),deptno from emp group by deptno having avg(sal) > 2000;(部门平均薪水大于2000的信息)
总结:
sql语句执行的先后顺序:select --> where --> group by --> having --> order by
找出薪水大于1200,平均工资大于1500的员工所在部门的平均工资,按部门编号降序排列:
select avg(sal) from emp where sal > 1200 group by deptno having avg(sal) > 1500 order by deptno desc;