sql笔记

select sal+100 from emp;

 

oracle null 不占存储空间

null处理:select sal+nvl(comm,0) from emp;

 

to_char 日期处理

select to_char(hiredate,"YYYY-MM-DD") from emp;

 

排除重复

select destinct job from emp;

 

between A and B 闭区间 a《b

 

 转义

where ename like '王?_' escape '?'          

 

函数---oracle自定义---多行函数

                            ---单行函数

      ---用户自定义函数

 

localtimestamp

sysdate

日期型数据与数值型数据操作

1=1天

sysdate+1/24/60 -----加一分钟

 

case表达式

select case deptno when 10 then sal*1.1

                               when 20 then sal*1.2

                               when 30 then sal*1.3

                               else sal*1.5

         end raise_sal from emp;

 

decode用法

select ename ,sal ,decode(deptno,10,sal*1.1,20,sal*1.2,30,sal*1.3,sal*1.5) raise_sal from emp;

          

 

自连接

select a.ename worker,b.ename manager  from emp a,emp b where a.mgr=b.empno;

boss的mgr为null,自连接查不出来

 

添加外连接,就可以查出(加在显示少的行)

select a.ename worker,b.ename manager  from emp a,emp b where a.mgr=b.empno(+);

 

avg() 计算平均值不计null

 

group by 不能跟别名

 

where 比having更高效,where是查询数据字典,having是分组后过滤,一个在前一个在后。

 

select deptno,sum(sal) from emp

                          where deptno !=30

                          group by deptno

                          having sum(sal)>1500;select里出现的必须在group by子句中 

单行子查询 返回一行 括号必须在右边

多行子查询 返回多行 in,all,any

 

select ename from emp where empno not in ( select nvl(mgr,0) from emp); 

not in 子句返回值含有null时查询结果会出错 

 

cal sal  format "$99.999.99" 设定格式

 

create table emp1 as select * from emp where 1=2;创建表根据emp,不会复制数据,约束

 

insert into emp1 select * from emp;

 

rownum---行号

select * from

           (select * from emp order by sal desc)

           where rownum <=3;得到工资前三的数据

 

数据库定义语言 ddl

char(60) 不可变,空格补齐

varchar2(4000) 最长4000

number(m,n)默认n等于0,及取整

 

 事物处理

 以下情况会自动提交事物:

1.执行ddl语句

2.执行dcl语句

3.退出sql*plus

 

提交事物 commit

设置保存点 savepoint a

事物回退 rollback to a

全部回退 rollback

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值