常用Oracle的SQL語句20181206更新
阿新 • • 發佈:2018-12-06
--clob轉字串:dbms_lob.substr()
--鎖表:select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objects o ,v$session s where l.object_id = o.object_id and l.session_id=s.sid;
alter system kill session '24,111';
--查詢表名 select * from User_tables where table_name like '%C2I%';
--查詢某個表的分割槽 select * from user_tab_partitions where table_name = 'P_MROL2L_UELOCATION';
--查詢某個表的子分割槽 select * from user_tab_subpartitions where table_name = 'P_MROL2L_UELOCATION';
--刪除分割槽 alter table P_RESULT_LTE_MR_GRID_NCELL DROP PARTITION P9;
--新增分割槽 ALTER TABLE P_RESULT_LTE_MR_GRID_NCELL ADD PARTITION P9 VALUES (9) TABLESPACE ACP_BASE;
--新增子分割槽 ALTER TABLE P_LTE_GRID_RSRP ADD PARTITION P2 VALUES (2) (SUBPARTITION P2P1 values (1)) ;
ALTER TABLE P_MR_G_LTDX MODIFY PARTITION P530100 add SUBPARTITION P530100_20170602 values (TO_DATE(' 2017-06-02 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) ;
--打印表結構SQL Select dbms_metadata.get_ddl(object_type => 'TABLE',name => 'P_RESULT_LTE_MR_GCELL_RSRP') from dual;
--列印儲存過程SQL Select dbms_metadata.get_ddl(object_type => 'PROCEDURE',name => 'PRO_D_COMM_RESULT_CONTAINS_DEL') from dual;
--建立索引
本地索引:Create index local INDEX_GRID_RSRP on P_RESULT_LTE_MR_GRID_RSRP (GRID_NO);
唯一索引:CREATE UNIQUE INDEX IDX_L_PARMETER_COMPLAINT ON P_LTE_PARMETER_COMPLAINT (ORDERNUM) ;
索引是否失效:select status from user_indexes T where table_name='P_LTE_PARMETER_COMPLAINT'
重構分割槽索引:alter index 索引名 rebuild subpartition P530100_20180930
重構子分割槽索引:alter index 索引名 rebuild partition P530100
查詢分割槽和子分割槽失效索引:
select index_owner 庫, index_name 索引, partition_name 分割槽,'' 子分割槽,'分割槽' 索引型別 from dba_ind_partitions where status ='UNUSABLE' and index_owner='COC'
union all
Select Index_Owner 庫, Index_Name 索引,partition_name 分割槽,SUBPARTITION_NAME 子分割槽,'子分割槽' 索引型別 From DBA_IND_SUBPARTITIONS Where status = 'UNUSABLE' and index_owner='COC'
索引查詢:dba_indexes user_indexes dba_ind_partitions DBA_IND_SUBPARTITIONS
--時間查詢
Select * from table_name where TO_CHAR(TIMES,'YYYY-MM-DD HH24:MI:SS') = '2016-10-27 12:02:00' or version_date=to_date('2016-10-27','YYYY-MM-DD') or truncate(version_date,'DD')=to_date('2016-10-27','YYYY-MM-DD') or (TIMES between to_date('2016-10-01','YYYY-MM-DD') and to_date('2016-10-31','YYYY-MM-DD')+1);
--獲取連續天時間 SELECT to_date('2018-08-01','YYYY-MM-DD')+level-1 as dates FROM dual CONNECT BY level <= to_date('2018-08-08','YYYY-MM-DD')-to_date('2018-08-01','YYYY-MM-DD')+1;
--獲取連續年 SELECT (TO_NUMBER(TO_CHAR(SYSDATE,'YYYY'))-ROWNUM+1) || '' AS YEAR FROM DUAL CONNECT BY ROWNUM<6
--日期計算 select trunc(sysdate, 'month') 本月第一天,trunc(last_day(sysdate)) 本月最後一天,trunc(add_months(sysdate, -1), 'month') 上月第一天,trunc(last_day(add_months(sysdate, -1))) 上月最後一天,
trunc(add_months(sysdate, -12), 'month') 去年本月第一天,trunc(last_day(add_months(sysdate, -12))) 去年本月最後一天,trunc(sysdate, 'd') + 1 本週第一天,trunc(sysdate, 'd') + 7 本週最後一天 from dual
select to_char(sysdate,'d') 每週第幾天 , to_char(sysdate,'dd') 每月第幾天 , to_char(sysdate,'ddd') 每年第幾天 , to_char(sysdate,'ww') 每年第幾周 , to_char(sysdate,'mm') 每年第幾月 , to_char(sysdate,'q') 每年第幾季 , to_char(sysdate,'yyyy') 年 from dual;
group by rollup(a,(b,c))
--轉毫秒 select TO_CHAR(TIMES,'yyyy-mm-dd hh24:mi:ss.ff') TIMES from P_LTE_GRID_RSRP SUBPartition(P52P1);
--轉日期格式帶毫秒 select TO_TIMESTAMP(replace(substr( SEQ,0,23),'T',' '),'yyyy-mm-dd hh24:MI:SS.ff') from P_LTE_GRID_RSRP SubPartition(P2P1);
--日期轉換毫秒 SELECT TO_NUMBER(TO_DATE('2005-03-29 12:30:45', 'YYYY-MM-DD HH24:MI:SS') -TO_DATE('1970-01-01 8:0:0', 'YYYY-MM-DD HH24:MI:SS')) * 24 * 60 * 60 * 1000 FROM DUAL;
--毫秒轉換日期 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;
--資料串函式使用
http://183.230.77.22/vmphls.tc.qq.com/zGV8QcxADxxeMuHbze5PIMoTkVGdSwnZGdqa2f0bPPBz4Y-wgt05qxdJxk1gTUgKgQaJyokfC0nnqJxvFBQDEKvkHMzsfYKlVBU6NyPZ8C7C4e2bC-tZ9A/1077_6X000000000000000000000000tUrh2J.f10.ts?start=0&end=10416&brs=0&bre=479211&ver=4
substr(URI,instr(URI,'&',-1)+1)==>從右邊開始取,返回
ver=4
substr(URI,INSTR(URI,'/',-1)+1,INSTR(URI,'?',1,1)-INSTR(URI,'/',-1)-1)==>取中間,返回
1077_6X000000000000000000000000tUrh2J.f10.ts
substr(URI,INSTR(URI,'&',1,2)+1,INSTR(URI,'&',1,3)-INSTR(URI,'&',1,2)-1)==>取二個/之間資料,返回
183.230.77.22
--刪除使用者 drop user ACP cascade;
--刪除空間 DROP TABLESPACE ACP_BASE INCLUDING CONTENTS AND DATAFILES;
--查看錶空間 select * from dba_data_files
--檢視臨時表空間 select f.file#,t.ts#,f.name "File",t.name "Tablespace" from v$tempfile f,V$tablespace t where f.ts# = t.ts#;
--刪除空間 DROP TABLESPACE LTE_DATA_BASE INCLUDING CONTENTS AND DATAFILES;
--預設表空間是1G,自動增長不限制最大值 ALTER TABLESPACE ACP_BASE ADD DATAFILE 'D:\DB\ACP_BASE2.DBF' SIZE 1024M AUTOEXTEND ON;
--資料庫連結 Select * from [email protected]_ORCL130_ACP
--修改表字段 alter table P_LTE_AM_SECTOR_SCHEME modify(RSPOWER NUMBER(10,3));
--獲取表註釋:select * from user_tab_comments where Table_Name='P_LTE_SECTOR' order by Table_Name;
--獲取欄位註釋:select * from user_col_comments where Table_Name='使用者表' order by column_name ;
--獲取表:select table_name from user_tables / all_tables / dba_tables ; --//當前使用者的表
--獲取表字段:select * from user_tab_columns / all_tab_columns / dba_tab_columns where Table_Name='使用者表';
--常用字元函式
select LOWER('HTTP') 轉小寫,UPPER('www') 轉大寫,INITCAP('jelly think') 首字母大寫,SUBSTR('注:下標從1開始', 3, 5) 擷取,LENGTH('JellyThink') 長度,
ASCII('A'),CHR(65),REPLACE('jellythink', 'think', ' is good') 替換,INSTR('JellyThink', 'Jelly', 1) 索引查詢,LPAD('JellyThink', 12, '*') 左補充,RPAD('JellyThink', 12, '*') 右補充,
LTRIM('**JellyThink', '*') 左刪除,RTRIM('JellyThink**', '*') 右刪除,TRIM(' JellyThink ') 去掉空格,TRIM('*' from '*!*JellyThink**') 去掉字元,CONCAT('Jelly', 'Think') 連線
from dual;
--常用日期函式
select TO_CHAR(SYSDATE,'yyyy-MM-dd hh24:mi:ss') 當前時間,NEXT_DAY(SYSDATE, '星期一') 下週一,LAST_DAY(SYSDATE) 本月末,
trunc(sysdate,'iw') - 7 上週一,trunc(sysdate,'iw') - 1 上週日 ,
MONTHS_BETWEEN(ADD_MONTHS(SYSDATE, -2), ADD_MONTHS(SYSDATE, 2)) 月份差,
sysdate+1 加一天,ADD_MONTHS(sysdate,12) 加一年,TRUNC(SYSDATE) 當前年月日,TRUNC(SYSDATE,'YY') 當年第一天,TRUNC(SYSDATE,'MM') 當月第一天,
TRUNC(SYSDATE,'D') 星期天,TRUNC(SYSDATE,'DD') 當前年月日,TRUNC(SYSDATE ,'HH24') ,TRUNC(SYSDATE ,'MI'),TRUNC(SYSDATE ,'Q') 當季第一天,
TRUNC(SYSDATE ,'W') 本週第一天,TRUNC(SYSDATE ,'WW') 本週第一天,trunc(sysdate,'iw') 本週一,CURRENT_DATE 當前時間,EXTRACT(YEAR from SYSDATE) 年,
EXTRACT(MONTH from SYSDATE) 月,EXTRACT(DAY from SYSDATE) 天,ROUND(SYSDATE, 'MONTH') 當月第一天,to_char(sysdate,'DY') 周幾 from dual;
--EXTRACT
SELECT SYSDATE "DATE",
EXTRACT(YEAR FROM SYSDATE) "YEAR",
EXTRACT(MONTH FROM SYSDATE) "MONTH",
EXTRACT(DAY FROM SYSDATE) "DAY",
EXTRACT(HOUR FROM SYSTIMESTAMP) "HOUR",
EXTRACT(MINUTE FROM SYSTIMESTAMP) "MINUTE",
EXTRACT(SECOND FROM SYSTIMESTAMP) "SECOND"
FROM DUAL;
--判斷函式
select CAST('100' as NUMBER) "CAST",DECODE(20, 10, 5, 200, 10, 20, 30) "DECODE",TRUNC(20.2183, 2),NVL(NULL, 30) NVL,NVL2(NULL, 20, 30) NVL2,
GREATEST(20, 100, 30, 20, 40, 400) 最大值,LEAST(20, 100, 30, 20, 40, 400) 最小值 from dual;
--數值函式
Select ceil(10.56) 最小整數,floor(10.56) 最大整數,mod(7,5) 模餘數,power(3,2) 冪,round(1234.5678,2) 四捨五入,sqrt(25) 平方根 from dual;