oracle第二周

select *from emp where comm in(3000,5000) or comm is null;  这里就是将奖金里3000,5000还有为空的查询出来.
select *from emp where deptno not in(10);  这里则是将不是10部门的所有人员查询出来.
select *from emp order by sal +desc(降序);  将工资作为升序,降序排列.
select ename,sal,sal*12 年薪 from emp order by 年薪; 这里by后面可以直接用别名. 也可以用数字就是低几列.   
select * from emp order by comm desc nulls last;  这里就是将那些值为null的数据也按降序排列起来.

select *from emp where ename like 'A%';这里就是将姓名为A开头的人员查询出来,还有一个'%a%',这个就是将名字中有A的人员查询出来.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        select *from emp where ename like 'K___'; 这里就是将K开头名字长度为4的查询出来. _代表字符. 名字注意要大写.    
select *from emp where ename like '%\%%' escape '\'; escape 转义符. 因为\他在oracle中有其他意义通过转义拿到他本身的含义.

函数
select upper/lower('sds') from dual;  大小写的转化.
select substr('what happened just now',5) from dual; 从第四个开始截取字符串.
select substr('what happened just now',5,9) from dual  截取字符串中5-9的字符.
select length('aaaa') from dual;  查询前面字符串的长度为多少.
select instr('whsb happened just now','st') from dual; 查询后面st在前面字符串中所在的位置. 他查询的是S的位置.加T是给它具体的信息.找到T前面那个S.而不是B前面那个S.   

select round(192.168,0),round(192.268,1),round(192.168,2)round(192.168,-1)from dual; 四舍五入. -1时结果为190.也要四舍五入
select trunc(192.168,0),trunc(192.168,1),trunc(192.168,-1) from dual; 截取多少位.-1时为190.

select sysdate from dual;  获取当前系统的时间.
select trunc(sysdate,'yyyy') from dual;   截取一系列的时间.
select trunc(sysdate,'mm') from dual;
select trunc(sysdate,'d') from dual;
select trunc(sysdate,'dd') from dual;
select trunc(sysdate,'hh') from dual;     

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; 将当前时间的格式改为字符型.
select systimestamp from dual;   查询系统时间. 包括微秒.时区.
select sysdate+1/-1 from dual;  当前日期加一天或者减一天.
select last_day(sysdate) from dual;  查询当前时间的最后天是多久.
select ename,round((sysdate-hireddate)/365) from emp;  查询工作了多久.   
select ename,months_between(sysdate,hiredate) from emp; 查询在他入职到现在有多少个月.
select add_months(sysdate,10) from dual;  这里查询的是10个月后的今天.
select next_day(sysdate,'星期一') from dual; 这里就是下个星期一是什么时候.
select nullif('aa','aa'/'cc');  这里就是判断他们是否相等,相等返回true不相等返回第一个.
select ename,sal,comm,coalesce(comm,sal) from emp; 先看comm是否为空.为空的话再看sal是否为空. 如果不是为空那就输出.

1  select ename,job,sal,
  2      case job when 'PRESIDENT' then sal+1000
  3          when 'MANAGER'then sal+800
  4          else sal+400
  5      end
  6* from emp

 1  select ename,job,sal,decode(job,'PRESIDENT',nvl2(sal,sal,0)+1000,
  2          'MANAGER',nvl2(sal,sal,0)+800,nvl2(sal,sal,0)+400
  3      )
  4*  from emp

select count(*) from emp;  emp  表中多少行.*所有.
select count(ename) from emp;   所有的名字. 但是为空的都不行.
select sum(sal)/avg(sal) from emp;  总和与平均数的函数.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值