oracle--sql汇总


1、sql汇总
一、重复操作查询

--where条件得distinct systemdicid作为唯一标识

select *

from dmis_zd_systemdic t

WHERE typeid = '06012'

and t.systemdicid in (select min(systemdicid)

from dmis_zd_systemdic

where typeid = '06012'

group by name)

order by orderno;

二、检查表是否存在

select count(tname) from tab where tname = upper('表名');

三、日期函数

--返回当前日期年度的第一天

select trunc(sysdate,'year') from dual;

--返回当前日期月份的第一天

select trunc(sysdate,'month') from dual;

--上月最后一天

select last_day(add_months(sysdate, -1)) from dual;

--给定日期后最近星期几得日期

select next_day(to_date('2009-12-01', 'yyyy-mm-dd'), '星期一') next_day

from dual;

四、同一张表中,根据一个字段更新另一个字段

update (select t.fgenerationtime as ftime, t.fgeneratedateall as str

from dmis_fs_approvebook t

where t.fgenerationtime is not null)

set str = TO_CHAR(ftime, 'yyyy-mm-dd')

where str is null;

五、重复数据查询

select * FROM EMP E

WHERE E.ROWID > (SELECT MIN(X.ROWID)

FROM EMP X

WHERE X.EMP_NO = E.EMP_NO);

六、合并不同表的数据(merge into)

merge into student s

using (select id, name, tel from test001) x

on (s.s_id = x.id)

when matched then

update set s_name = x.name

when not matched then

insert (s_id, s_name, s_age) values (x.id, x.name, x.tel);

commit;

七、查询执行sql(v$sql)

select t.module, t.first_load_time, t.sql_text

from v$sql t

order by first_load_time desc;

2、数据库精度修改处理

-- Create table

/*drop table temp_data;*/

create table temp_data

(

FID VARCHAR2(40) not null,

USEHOURS NUMBER(10) default 0,

FVOLTAGE NUMBER(10) default 0,

INVOLTAGE NUMBER(10) default 0

)

;

alter table TEMP_DATA

add constraint tempfid primary key (FID);



insert into temp_data

select a.fid, a.usehours, a.fvoltage, a.involtage

from dmis_fs_factorymonthdetail a;



update dmis_fs_factorymonthdetail t

set t.usehours = '', t.fvoltage = '', t.involtage = '';



alter table DMIS_FS_FACTORYMONTHDETAIL modify USEHOURS NUMBER(10,1);

alter table DMIS_FS_FACTORYMONTHDETAIL modify FVOLTAGE NUMBER(10,1);

alter table DMIS_FS_FACTORYMONTHDETAIL modify INVOLTAGE NUMBER(10,1);



update (select a.usehours as tusehours,

b.usehours as fusehours,

a.fvoltage as tfvoltage,

b.fvoltage as ffvoltage,

a.involtage as tinvoltage,

b.involtage as finvoltage,

a.fid as ffid,

b.fid as tfid

from dmis_fs_factorymonthdetail a, temp_data b

where a.fid = b.fid) tt

set tt.tusehours = tt.fusehours,

tt.tfvoltage = tt.ffvoltage,

tt.tinvoltage = tt.finvoltage

where ffid = tfid;



drop table temp_data;

commit;



3、恢复drop掉的存储过程

用sys用户登陆,执行如下的查询:

SQL> select text from dba_source as of timestamp to_timestamp('2009-03-06 09:45:00', 'YYYY-MM-DD HH24:MI:SS') where owner='IPRA' and name= 'P_IPACCHECK_NC' order by line;

4、删除某个用户下的对象

--删除某个用户下的对象

set heading off;

set feedback off;

spool c:\dropobj.sql;

prompt --Drop constraint

select 'alter table '||table_name||' drop constraint '||constraint_name||' ;' from user_constraints where constraint_type='R';

prompt --Drop tables

select 'drop table '||table_name ||';' from user_tables;



prompt --Drop view

select 'drop view ' ||view_name||';' from user_views;



prompt --Drop sequence

select

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值