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