is null; //是null
is not null; //不是null
savepoint aa; //设置保存回归点
rollback to aa; //rollback回归点
set timing on //打开执行操作的时间
insert into user(id,username,password) selet * from user //超级复制,自己往自己插入数据
nvl(comm,0) //如果comm=null,就有0表示,如果不是null,就用他原来的值
select sal*13 as "工资" from emp; //查询是每个sal乘以13,并且别名两边是双引号
data //默认的格式是 d-m月-y,比如02-08月-2010
like '__0%'; //表示前面两个字符随意,第三个字符是0后面随便是什么字符
order by departNo,sal desc;//一个升序,一个降序,按departNo asc,sal是desc
select sal+comm as "年工资" from user order by "年工资" //别名排序
//表示按 deptno和job分组,并计算 min(sal),avg(sal),max(sal)和显示deptno,job这些信息
select min(sal),avg(sal),max(sal),deptno,job from emp group by deptno,job
//表示先按 deptno 分组,并计算avg(sal),max(sal),在过滤( having) avg(sal)>2000
select avg(sal),max(sal),deptno from emp group by deptno having avg(sal)>2000
//表示查询 sal大于 select sal from emp where depton=30这里面的(depton=30)的sal
select sal from emp where sal > all(select sal from emp where depton=30);
select sal from emp where sal >(select max(sal) from emp where depton=30));
all 所有
any 任何一个
//多列查询 顺序不能弄倒 (id,user)=(select id,user)
select * from user where (id,user)=(select id,user from user where id=2));
//oracle分页 ,表示order by name,然后 6到10条数据;
//所有的改动,只需要改动(select name from emp order by name)这一部分
select * from
(
select t1.*,rownum rn from
(select name from emp order by name)
t1 where rownum<=10
) where rn>=6
//用查询结果创建新表,并把数据也导过来了啊
create table mytable(id,name) as select id,name from user
//合并查询
union //去掉重复的数据,并集
union all //不去掉重复的数据,拼张数据,全部的
intersect // 相交(交集),共同有的数据
minus // 差集
//希望SOOTT的工作,工资,补助和 SMITH一样,使用子查询更新数据
update emp set(job,sal,comm)=(select job,sal,comm from emp where ename='SMITH')
where ename='SOOTT';
//只读事务,表示不能查到在此之后的数据
set transaction read only;
to_date('20101010','yyyy-mm-dd');
lower('A')=a
upper('a')=A
length('length')=6
substr('abcdefg',2,3)= bcd; //oracle的substr函数的下标是1开始
//首字母小写,其它的字符大写
select lower(substr(APPNTNO,1,1)) ||substr(APPNTNO,2,length(APPNTNO)) from lcpol;
raplace('abcdefgffaggff','f',0)=abcde0g00agg00
round(n,[m]) round(10.236523,3)=10.237 //四舍五入
trunc(n,[m]) trunc(10.236523,3)=10.236//截取数字
mod(m,n) mod(7,5)=2 //求余数
floor(m) floor(10.59)=10//返回小于或等于的最大整数
ceil(m) ceil(10.59)=11//返回大于或等于的最大整数
abs(n) //绝对值
acos(n) //返回数字的反余旋值
atan(n) //返回数字的反正旋值
log(m,n) //返回对数值
power(m,n) //返回m的n次幂
sysdate; //返回系统时间
add_months(m,n) ;//在指定的月数加多少月
//查询入职多少天 ,hiredate表示入职的年份
select trunc(sysdate-hiredate) as "入职天数" from emp;
last_day(d) //一个月的最后一天
select hiredate,last_day(hiredate) as "月天数" from emp'
to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') //比如等于2012-05-31 21:39:03
to_char(sysdate,'yyyy-mm-dd hh:mi:ss') //比如等于2012-05-31 09:39:03
//显示本国货币,中国就是RMB ,99999.99表示最长5位整数,2位小数
to_char(money,'L99999.99');
//显示本国货币,中国就是RMB ,99999.99表示最长5位整数,2位小数,并且每三位以,分隔
to_char(money,'L999,99.99');
to_char(date,'yyyy')=2012;//表示要得到的年份要等于2012
to_char(date,'mm')=09;//表示要得到的月份要等于09