Oracle总结

  1. 字符串大小写敏感 
  2. 日期格式敏感  修改日期格式 查询(select * from v$nls_parameters;) alter session set NLS_DATE_FORMAT='yyyy-mm-dd';
  3. between  and 在。。。。之间  select  *from emp  where sal between 1000 and 2000;含有边界  2. 小值在前 大值在后
  4. in 在。。。之中 SQL> select * from emp where deptno in (10,20); not in 不在。。。之中  null值 如果集合中含有null,不能使用not in;但可以使用in
  5. 模糊查询  select * from emp  where ename like 'S%'; select * from emp  where ename like '____' 已一条下划线代表一个字母。如果需要匹配含有下划线的名字需要加转意字符\ 且在语句最后添加escape '\'
  6.  rollback; 回滚
  7. --order by后面 + 列、表达式、别名、序号 desc 降序 默认升序 desc只会作用于前面一个,当排序的那一列当中有null时null最大,取消null的影响加nulls last;
  8. SQL> --清屏
    SQL> host cls   显示当前用户 show user;查询当前用户的表select * from tab;查询表的结构 desc emp
  9. select后面的列名可以包含算数表达式,但是包含null值得表达式都为null,需要用一个函数去除这种情况nvl(comm,0)前面一个参数为可能含有null的值,后面一个参数为替代的值。如果需要查询某一列为null  应该列名 is null;
  10. distinct 作用于后面所有的列 ( 当所有列相同才会去除)select distinct 。
  11. dual表:伪表
    SQL> --伪列
    SQL> select 'Hello'||'  World'  字符串 from dual; ||为连接符
  12. 单行函数: lower() 转小写,upper() 转大写,initcap() 首字母大写   substr(a,b) 从a中,第b位开始取,substr(a,b,c) 从a中,第b位开始取,取c位,length 字符数  lengthb字节数,instr(a,b)返回b在a中首次出现的下标。lpad('abcd',10,'*') 左,rpad('abcd',10,'*')  右填充用*,10代表10位。select trim('H' from 'Hello WorldH') from dual;去掉指定的字符。select replace('Hello WOrld','l','*') from dual;用*替换l字母。round(45.926,2)四舍五入取小数点后面两位。trunc(45.926,2)截断与四舍五入相对应。select sysdate from dual;得到系统日期,select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;格式化时间。months_between (a,b)相差的月数,add_months(sysdate,53)添加53个月。last_day(sysdate)本月最后一天。next_day(sysdate,'星期五')下一个星期五,round(sysdate,'month'),round(sysdate,'year'),年和月的四舍五入。select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是"day'),nvl2(a,b,c) 当a=null的时候,返回c;否则返回b,nullif(a,b) 当a=b的时候,返回null;否则返回a。coalesce 从左到右 找到第一个不为null的值。
  13. 函数实现逻辑判断                                                                                                                                                                        select empno,ename,job,sal 涨前,
              case job when 'PRESIDENT' then sal+1000
                       when 'MANAGER' then sal+800
                        else sal+400
              end 涨后
       from emp;相当于                                                                                                                                                                          select empno,ename,job,sal 涨前,
              decode(job,'PRESIDENT',sal+1000,
                         'MANAGER',sal+800,
                                    sal+400) 涨后
         from emp;
  14. 多行函数:sum(sal)某一列求和,count(*)统计数量,avg(sal)求平均,count(a)组函数(多行函数)自动滤空;group by :先按照第一个列分组;再按照第二列分组,以此类推。where和having的区别:where后面不能使用多行函数,SQL优化 原则:3. 尽量使用where。select deptno,job,sum(sal) from emp group by deptno,job,当其中的job为null时会将该行自动不显示,为了避免这种情况,select deptno,job,sum(sal) from emp group by rollup(deptno,job);使用这种方式。break on deptno skip 2,每个分组之间隔两行。break on null取消隔行。
  15. 多表查询:等值连接,不等值连接 where e.sal between s.losal and s.hisal;  set linesize 80;外连接 希望:对于某些不成立的记录(40号部门),任然希望包含在最后的结果中
       左外连接:当where e.deptno=d.deptno不成立的时候,等号左边的表任然被包含在最后的结果中
          写法:where e.deptno=d.deptno(+)
       右外连接:当where e.deptno=d.deptno不成立的时候,等号右边的表任然被包含在最后的结果中
          写法: where e.deptno(+)=d.deptno    自连接,通过表的别名,将同一张表视为多张表。最后有一个层次查询。
  16.  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值