日期與時間

1.取得系統日期
select sysdate from dual;
2008/1/20 下午 10:31:20

2.日期欄位轉字串格式
select to_char(crdate,'YYYY/MM/DD HH24:MI:SS') from table_a;
2008/01/20 22:31:20
 

3. 取得英文格式之月份
select to_char(sysdate,'MON','nls_date_language=english) from dual;

APR

 

4.取星期幾 

SELECT TO_CHAR(SYSDATE,'DAY') FROM DUAL

星期六

 

5.日期為在星期中的第幾天

SELECT TO_CHAR(SYSDATE-1,'D') FROM DUAL

7

 

6.取得下個月的今天 

select ADD_MONTHS(sysdate,要加的月數) from dual

select sysdate "Today",add_months(sysdate,1) "Next Month" from dual;

Today                     Next Month

2009/4/26 下午 02:17:07   2009/5/26 下午 02:17:07

 

7.日期相減

select  ROUND((DATE1-DATE2),2)  from table_a

相減出來的結果單位是天

(A.DATE-B.DATE)*24*60*60 取得二個日期相差的秒數

資料處理

1.從其他(或目前)table新增資料到目前table的語法
insert into table_a(id, name) (select id,name from table_b where id=1);

2.建立新的table,但是schema要跟某個table一樣
create table table_b as (select * from table_a where 1=2);   //只copy schema
create table table_b as (select * from table_a);                  //copy schema及資料

3.新增欄位名稱 

alter table table_a add (column_b varchar2(1) default 'Y');

 

4.修改欄位名稱 

ALTER TABLE table_a RENAME COLUMN column_b TO column_c;

5.刪除NOT NULL 限制的語法
ALTER TABLE table_a MODIFY (column_b NULL);

6.利用修改的方式,建立主鍵
ALTER TABLE table_a ADD CONSTRAINT column_b_pk PRIMARY KEY (column_b);

字串處理

1.INSTR 找尋字串所在位置
INSTR(string1, string2,[, n[ ,m]])
select INSTR('true blood' , 'blood') from dual
6

2. LENGTH 取得字串長度 

LENGTH(string)

select length('true blood') from dual

10

 

3.REPLACE字串取代 

REPLACE(string, search_string, [,replacement_string])

select replace('Bill,I love you','Bill','Sookie') from dual

Sookie,I love you

 

4.LPAD字串左邊補上特定字元

LPAD(char1,n,char2)

select lpad('Bill', 8, '0') from dual;

0000Bill

 

RPAD ()在字串右邊補上特定字元

   

5.字串的截取(從後面或前面取)

substr (string string, int start [, int length])

select substr('This is Bill.', 9, 4) from dual 

Bill

 

6.只取欄位中長度為5碼之字串 

select column_b from table_a where column_b like '_____'

 

7.字串合併 

select concat(column_a,concat(column_b,column_c) ) from table_d

顯示資訊

1.顯示table的所有欄位資訊 

DESC table_a;

 

2.顯示目前user的所有的table名稱

 SELECT TABLE_NAME FROM USER_TABLES;

 

3.顯示目前user的所有的sequence名稱 

SELECT SEQUENCE_NAME FROM USER_SEQUENCES;

 

4.顯示目前user的所有的view名稱 

SELECT VIEW_NAME FROM USER_VIEWS;

 

5.查詢tablespace使用量

 select segment_name, bytes/1024/1024 M from user_segments order by 2 desc;

SEGMENT_NAME        M

table_a                   5

table_b                   3

select sum(m) from ( select segment_name, bytes/1024/1024 m from user_segments ) ;

SUM(M)

390.984375

SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE" FROM
SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C                                                                                    
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME; 

TABLESPACE_NAME   TOTAL             USED                FREE            % USED           % FREE

database_a                    20971520      10092544         10813440        48.125           51.5625

6.取得資料庫語系

select * from v$nls_parameters where parameter='NLS_CHARACTERSET';

PARAMETER                VALUE

NLS_CHARACTERSET         AL32UTF8

7.查詢 db link
SELECT * FROM user_db_links;
DB_LINK                         USERNAME    PASSWORD                      HOST               CREATED 
database_a.US.ORACLE.COM  database_a  database_a_passwd       database_a    2010/12/19 下午 03:42:23

arrow
arrow
    全站熱搜

    smartfly 發表在 痞客邦 留言(0) 人氣()