Oracle一些常用技巧

update 表明 set 条件。注意;没有from  多个条件之间 ","隔开

快速复制一张表:create table temp_news as select * from t_news;

获取日期:select to_char(t.input_time,'MM') from t_news t;

表增加字段: alter table spring_student  add  groupid number(14)

删除字段: alter table spring_student  drop column groupid ;

更改字段属性: alter table spring_student  modify groupid varchar2(12);

创建触发器:
create or replace trigger tri_spring_group
before insert on spring_group
for each row
begin 
    select seq_t_news.nextval into :new.id from dual;
end;
-----------------------------------------------------------------
查看oracle数据库的触发器
SELECT * FROM DBA_SOURCE  WHERE  TYPE='TRIGGER';
SELECT * FROM USER_SOURCE  WHERE  TYPE='TRIGGER';  或者使用它plsql左侧的工具 trigger。。

查询 去掉重复记录
SELECT  distinct (dev_id)  FROM ews;
SELECT distinct dev_id  FROM ews;


遇到insert需要插入 单引号的时候可以使用‘’因为‘具有转义的意思
INSERT INTO SERV_CMD_TRAN
  (USER_TYPE_ID,
   CMD_SEQ,
   TML_ID,
   DEV_ID,
   DEV_TYPE_ID,
   EWS_SERV_CODE,
   PARA_SEPARATOR,
   CMD_TMPL,
   CMD_PROP,
   CMD_KEY)
VALUES
  (0, 3, 931, 247, 344, '011A', ',', 'ADD ICXPFX: CXG=200, CLRLP=40, PFX=K ''1, CSA=CIG, MINL=4, MAXL=4;', 1, 'DEFAULT');
---

&符号,在oracle做为转义字符,如果要插入&需要转义,成'J'||'&'||'WALONG' 或者 'J'||chr(38)||'WALONG' 就可以了
字符串的时候,可以使用字符串的连接操作,‘&’或者使用chr(38)

按照时间段统计sql
SELECT COUNT(*), CASE FLOOR(TO_CHAR(E.RECEIVE_TIME, 'mi') / 30)
            WHEN 0 THEN
             TO_CHAR(E.RECEIVE_TIME, 'yyyy-MM-dd hh24') || ':00:00'
            WHEN 1 THEN
             TO_CHAR(E.RECEIVE_TIME, 'yyyy-MM-dd hh24') || ':30:00'
          END
  FROM EWS E
 GROUP BY CASE FLOOR(TO_CHAR(E.RECEIVE_TIME, 'mi') / 30)
            WHEN 0 THEN
             TO_CHAR(E.RECEIVE_TIME, 'yyyy-MM-dd hh24') || ':00:00'
            WHEN 1 THEN
             TO_CHAR(E.RECEIVE_TIME, 'yyyy-MM-dd hh24') || ':30:00'
          END

select trunc(sysdate) from dual;  返回结果只有yyyy-MM-dd

create sequence sequence_name
INCREMENTby 1  --(这里1是增量,你可以设成别的数)
start with 1000  --(初值)
nomaxvalue
nocycle
nocache
SELECT my_seq.nextval FROM dual;
   
   
使用PLSQL工具快速生成表的字段
打开SQL Windows窗口-->选中要显示的表--> 拉到SQL Windows-->选择 Select。

PRO_UPDATE_EWSTASK_QM ;


--------------------------

1:每分钟执行

Interval => TRUNC(sysdate,'mi') + 1/ (24*60)

Interval => sysdate+1/1440

 

2:每天定时执行

例如:每天的凌晨1点执行

Interval => TRUNC(sysdate) + 1 +1/ (24)


3:每周定时执行

例如:每周一凌晨1点执行

Interval => TRUNC(next_day(sysdate,'星期一'))+1/24

 

4:每月定时执行

例如:每月1日凌晨1点执行

Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24

 

5:每季度定时执行

例如每季度的第一天凌晨1点执行

Interval => TRUNC(ADD_MONTHS(SYSDATE,3),'Q') + 1/24

 

6:每半年定时执行

例如:每年7月1日和1月1日凌晨1点

Interval => ADD_MONTHS(trunc(sysdate,'yyyy'),6)+1/24

 

7:每年定时执行

例如:每年1月1日凌晨1点执行

Interval =>ADD_MONTHS(trunc(sysdate,'yyyy'),12)+1/24

3. 查看相关job信息

相关视图

dba_jobs

all_jobs

user_jobs

dba_jobs_running 包含正在运行job相关信息

\

查看job是否在运行;


从另外一个表中获取某些字段添加到另外一个表中
create table tt
( id number(12)
)
alter table tt add idd number(12)
select * from tt
insert into tt select 123,a.ews_id from ews a;

不查询完数据如何导出全部数据
一般数据量少的话(小于65536条数据是可以用Excel的 [如果数据量大的话,excel会分为多个sheet],如果数据量大 应该使用CVS)。


count(*)与count(1)

count(*)可以查询到所有的列;
count(1)也是。效率高,开销大
count(列名)--只能查询不为空或者不为null的列



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值