SQL

子查询

--子查询(内查询)在主查询之前一次执行一次完成;子查询的结果被主查询使用(外查询)。

select * from score s  where s.grade > (select s.grade from score s where s.id=2);


  为表添加删除新的字段

--添加新的字段 test1

-- alter table emp add test1 varchar(10);

--删除一个字段 test1

--alter table emp drop(test1);


 rowid的使用。

--查询所有的话要在*前面加上别名。

--select rowid,e.* from emp e; 

 

rownum的使用。(用 <        别用 >   )

select rownum,e.* from emp e where rownum < 2;

 


 NVL(E1, E2)的功能为:

--如果E1为NULL,则函数返回E2,否则返回E1本身。但此函数有一定局限,所以就有了NVL2函数。
--拓展:NVL2函数:Oracle/PLSQL中的一个函数,Oracle在NVL函数的功能上扩展,提供了NVL2函数。NVL2(E1, E2, E3)的功能为:如果E1为NULL,则函数返回E3,若E1不为    null,则返回E2。

 case when 用法    

select avg(nvl(e.comm,0)),
case
when avg(nvl(e.comm,0))>300
then '奖金还不错'
when avg(nvl(e.comm,0))>100and avg(nvl(e.comm,0))<300
then '有点点奖金'
when avg(nvl(e.comm,0))<100
then '几乎没奖金'
end 奖金状况
from emp e group by e.deptno; 


 

备份一张表

create table emp1 as select * from emp;

插入指定行数据

insert into emp1 e (e.empno,e.sal,e.deptno) values (7999,4100,30);

 


mysql和oracle的区别

(1)mysql小一点 oracle大一点   (2)oracle可以给用户不同的权限相对安全   (3)查询分页mysql用limit 而oracle用rownum(4)自增mysql用 auto_increment oracle用序列。


MySql 计算两个时间之间的秒数

select timestampdiff(SECOND,'2011-09-30','2011-10-01');

select (UNIX_TIMESTAMP(endTime) - UNIX_TIMESTAMP(startTime)) dif_second from pp_press_status;


 

DECODE 函数

逻辑编程中,经常用到If – Then –Else 进行逻辑判断。在DECODE的语法中,实际上就是这样的逻辑处理过程。它的语法如下:
DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )
Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果。当每个value值被测试,如果value的值为if1,Decode 函数的结果是then1;如果value等于if2,Decode函数结果是then2;等等。事实上,可以给出多个if/then 配对。如果value结果不等于给出的任何配对时,Decode 结果就返回else 。
需要注意的是,这里的if、then及else 都可以是函数或计算表达式。

posted @ 2017-01-09 00:36  小摔哥#1  阅读(169)  评论(0编辑  收藏  举报