Oracle复习小结

毕业两年了,从毕业到现在一直在使用Sybase数据库,渐渐的把Oracle给淡忘了,对Oracle也越来越陌生了,这两天抽出了几个小时把Oracle复习了一下,感觉到了很多新意,在这里把随学笔记记录下来,自己想看的时候就看看:

alter user scott account unlock;

desc tablename//查看表结构

oracle语句中字符串连接符是 ||  比如 select ename||sal from emp;

表示一个字符串都是用一个单引号引起来 ‘’;比如:select ename||'liuyi' from emp;

引号里面有单引号 要用两个单引号才能表示一个单引号

distinct不取重复的值 如果是:select distinct deptno from emp;是去掉重复的deptno的值

如果是:select distinct deptno,job from emp;是去掉了 deptno和job的重复的组合

where语句后面的 >, <, <>,between .. and .. 相当与>=800 and <=1500

where 后面: job is null;job is not null;

oracle 处理日期:select ename,hiredate from emp

where hiredate>’20-2月-81‘不用日期格式的话 必须按照系统的格式

select ename from emp where ename like '%all%';

select ename from emp where ename like '_all%';

如果匹配字段中有%的话 要加转义字符‘/’

select  ename from emp where ename like '%/%%'

自定义转义字符

select ename  from emp where ename like '%$%%' escape '$'

select ename,sal,deptno from emp order by deptno asc,ename desc;//意思是先按照deptno的升序排列

在deptno排列的基础上如果deptno相同的话再按照ename的降序排列;

 

函数: lower 全部小写;upper 全部大写化;

       substr是单行函数;select substr(ename,2,3) from emp;

       chr转化成字符:select chr(65) from emp;

       ascii是把字符转化成数字 selct ascii(a) from emp;

       round 四舍五入 selct round(23.5456) from emp结果是24;

       select round(23.5445,2) from emp 结果是23.54四舍五入到小数点的第二位

       select round(23.5456,1) from emp 结果是23.5

       select round(23.5456,-1) from emo 结果是20;

       to_char select to_char(sal,'$99,999.9999') from emp;9就是代表一位数字 L代表本地货币

       select to_char(sal,'L00000.000') from emp

       

       日期格式化:to_date to_char

       select to_char(hiredate,'YYYY-MM-DD HH:MI:SS') from emp;

       select to_char(hiredate,'YYYY-MM-DD HH24:MI:SS') FROM DUAL;

       HH24是格式话成24小时制

       select empname from emp where hiredate>to_date('1999-9-9 12:34:56','YYYY-MM-DD HH:MI:SS');

      to_number转化成数字:

      select empname from emp where sal>to_number('$1345.4500','$99,999.9999');  

     空值判断函数:NVL

     select ename,sal*12+NVL(comm,0) from emp;如果不为空值就取comm若为空值就取0;

     

     多行函数:把多条记录产生一条输入 

     max最大值 min最小值 avg平均值 sum取和 count(*) 

     select to_char(avg(sal),'9999.99') from emp 取小数点后两位

     count(*)是查看这个表有多少条记录 count里面要是挂字段的话 是取不为空值的总数

     

     group by 分组函数 ,有多行函数时,字段要嘛出现在多组函数中,要嘛出现在了group by里面

     select avg(sal) from emp group by deptno;

     select deptno,job,max(sal) from emp group by deptno;

     select deptno,ename from emp where select max(sal) from emo

     group by deptno;

     select deptno,max(sal) from emp group by deptno;

     

     

     where是对单条记录进行过滤的,不能对多组组函数进行过滤,这时要用having

     having 是对分组进行限制

     例如:select avg(sal),deptno from emp group by deptno having avg(sal)

     >2000;

     

     子查询的关键是:把子查询看成一张表

     例如:select ename,sal from emp join(select max(sal) max_sal,deptno from emp

     group by deptno) t on(emp.sal=t.max_sal and emp.deptno=t.deptno);

   

    自连接 即表自关联就是:给同一张表取不同的别名,当成不同的表去关联查询 例如:

      select e1.ename,e2.ename from emp e1,emp e2 where e2.empno=e1.mgr;

   等值连接

       select e1.ename,e2.ename from emp e1 join emp e2 on(e1.mgr=e2.empno);

   等值左外连接 select e1.ename,e2.ename from emp e1 left join emp e2 on(e1.mgr=e2.empno);

   概念:左外连接是左边表里面有的数据而右面表没有的数据也取出来 同理右外连接 是把右边表里面多余的数据也给拿出来

   right join  同样还有全连接既是把左右两边的多余的数据都给拿出来 是full join .. on   

 

  conn sys/manager as dba 赋权限 grand create table,create view to scott

 

     

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值