oracle高级

1.oracle复制表:create table A as select * from B


2.oracle导出导入数据库
将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp
将D:\daochu.dmp 中的数据导入 TEST数据库中。
imp system/manager@TEST  file=d:\daochu.dmp


3.oracle导入导出表
将数据库中的表inner_notify、notify_staff_relat导出   
exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)
将d:daochu.dmp中的表table1 导入
imp system/manager@TEST  file=d:daochu.dmp  tables=(table1)

4.将表b中的数据插入到表a中

如果两表字段相同,则可以直接这样用。
insert into table_a select * from table_b
如果两表字段不同,a表需要b中的某几个字段即可,则可以如下使用:
insert into table_a(field_a1,field_a2,field_a3) select field_b1,field_b2,field_b3) from table_b
以上语句前提条件是每个字段对应的字段类型相同或可以自动转换。

5.毫秒转换日期
SELECT TO_CHAR(1112070645000 / (1000 * 60 * 60 * 24) +          TO_DATE('1970-01-01

08:00:00', 'YYYY-MM-DD HH:MI:SS'), 'YYYY-MM-DD HH:MI:SS') AS CDATE   FROM DUAL;
 
6.日期转换毫秒
SELECT TO_NUMBER(TO_DATE('2005-03-29 12:30:45', 'YYYY-MM-DD HH24:MI:SS') -         

TO_DATE('1970-01-01 08:00:00', 'YYYY-MM-DD HH24:MI:SS')) * 24 * 60 * 60 * 1000   FROM

DUAL;

7.level使用:
select level from dual connect by level<3;


8.oracle的nvl和nvl2
NVL2(expr1,expr2,expr3)   
功能:如果参数表达式expr1值为NULL,则NVL2()函数返回参数表达式expr3的值;如果参数表达式expr1值不为NULL,则NVL2()函数返回参数表达式expr2的值。
NVL( string1, replace_with)   
功能:如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。

9.oracle指定列排序
 select * from tb order by decode(blogid,3,1,2), blogid;

    BLOGID BLOGCLASS
---------- ------------------------------
        3 工作
        1 人生
        2 学习
        5 朋友
实现的功能就是不管怎样,BLOGID为3的值必须排在第一位,其他的记录按照BLOGID升序排序。
利用case when子句
 select * from 表 order by (select case sunxun when 'A' then 3 when 'B' then 1 when 'C' then 2 when 'D' then 4 end);

10.oracle分类统计:
方法一
select sum(A) as 已付款  ,sum(B) as 未付款,C as 店铺名
from
(
 select case when status_id=2 then 1 else 0 end  AS A ,
        case when status_id=4 then 1 else 0 end  AS B,
        shop_id AS C  from t_xs_trade where status_id in(2,4)
) group by C;
方法二
select  bloodtype.orgname,   
sum(decode(bloodtypedtl.name,'A',bloodtype.amount,0)) "A型血数量",   
sum(decode(bloodtypedtl.name,'B',bloodtype.amount,0)) "B型血数量",  
sum(decode(bloodtypedtl.name,'AB',bloodtype.amount,0)) "AB型血数量",  
sum(decode(bloodtypedtl.name,'O',bloodtype.amount,0)) "O型血数量"
from bloodtype,bloodtypedtl  where bloodtype.ABO=bloodtypedtl.id
group by bloodtype.orgname;

11.oracle将一字段值赋给另一字段:

update table_name set net_time =  hy_time

猜你喜欢

转载自chenzheng8975.iteye.com/blog/1829592
今日推荐