2015年7月4日 星期六

DB2 資料表描述和 SQL 指令


-- 刪除表格 
DROP TABLE MyTABLE;

-- 建立表格 
CREATE TABLE MyTABLE
(
    ColA VARCHAR(20) NOT NULL  
   ,ColB VARCHAR(8) NOT NULL  
   ,ColC TIMESTAMP NOT NULL  
)IN MySpaceData 
INDEX IN MySpaceIndex;

-- REORG 
    修改表格後需執行 REORG指令 (ps有些修改可不需執行)
    Ref : http://blog.csdn.net/rcom10002/article/details/6387480
CALL SYSPROC.ADMIN_CMD('REORG TABLE MyOwner.MyTABLE')

-- 修改 Primary Key , Unkque Key 
-- 刪除 Primary Key , Unkque Key 
ALTER TABLE MyTABLE DROP CONSTRAINT MyKeyName;
-- 建立 Primary Key
ALTER TABLE MyTABLE ADD CONSTRAINT MyKeyName PRIMARY KEY (ColA );
-- 建立 Unique Key
ALTER TABLE MyTABLE ADD CONSTRAINT MyKeyName UNIQUE (ColA ,ColB );

-- 修改 Index
-- 刪除 Index
DROP INDEX MyIndexName;
ALTER TABLE MyTABLE DROP CONSTRAINT MyIndexName;
-- 建立 Index
CREATE INDEX MyIndexName ON MyIndexName (ColA ,ColC );

-- 修改欄位
-- 刪除欄位
ALTER TABLE MyTABLE  DROP COLUMN ColName
-- 新增欄位
ALTER TABLE MyTABLE  ADD ColName DECIMAL(14)
-- 修改-欄位重新命名
ALTER TABLE MyTABLE  RENAME COLUMN ColName TO ColName_New
-- 修改欄位型態
ALTER TABLE MyTABLE  ALTER COLUMN ColName SET DATA TYPE DECIMAL(5);
-- 修改欄位設定 NOT NULL
ALTER TABLE MyTABLE  ALTER COLUMN ColName SET NOT NULL;
-- 修改欄位設定 刪除DEFAULT
ALTER TABLE MyTABLE  ALTER COLUMN ColName DROP DEFAULT;

-- Null
COALESCE(arg1,'N') : 若 arg1 是 NVL 則轉成 'N'
nullif(arg1,arg2) : 如果2個參數相等,則返回null,否則,返回參數1

-- 時間日期
-- 日期時間, 系統日期
select current date as TDATE
current date + 10 day as TDATE_ADD10
date('2015-08-01') + 20 day as UDATE_ADD20
from sysibm.sysdummy1;

-- 日期時間, 比較
select TDATE from MyTABLE 
where TDATE >= current date - 9 day

-- 日期時間
year , quarter , month , week , day , hour , minute , second
dayofyear(arg) : 返回arg在年內的天值
Dayofweek(arg) : 返回arg在周內的天值
days(arg) : 返回日期的整數表示法,從0001-01-01來的天數。
midnight_seconds(arg) : 午夜和arg之間的秒數。
Monthname(arg) : 返回arg的月份名。
Dayname(arg) : 返回arg的星期。

-- 字串
length , lcase , ucase , ltrim , rtrim
Coalesce(arg1,arg2….) : 返回參數集中第一個非null參數。
Concat (arg1,arg2) : 連接兩個字符串arg1和arg2。
insert(arg1,pos,size,arg2) : 返回一個,將arg1從pos處刪除size個字符,將arg2插入該位置。
left(arg,length) : 返回arg最左邊的length個字符串。
locate(arg1,arg2,<pos>) : 在arg2中查找arg1第一次出現的位置,指定pos,則從arg2的pos處開始找arg1第一次出現的位置。
posstr(arg1,arg2) : 返回arg2第一次在arg1中出現的位置。
repeat(arg1 ,num_times) : 返回arg1被重複num_times次的字符串。
replace(arg1,arg2,arg3) : 將在arg1中的所有arg2替換成arg3。
right(arg,length) : 返回一個有arg左邊length個字節組成的字符串。
space(arg) : 返回一個包含arg個空格的字符串。
substr(arg1,pos,<length>) : 返回arg1中pos位置開始的length個字符,如果沒指定length,則返回剩餘的字符。

-- 數學
Abs , count , max , min , sum
Ceil(arg) : 返回大於或等於arg的最小整數。
Floor(arg) : 返回小於或等於參數的最小整數。
Mod(arg1,arg2) : 返回arg1除以arg2的餘數,符號與arg1相同。
Rand() : 返回1到1之間的隨機數。
Power(arg1,arg2) : 返回arg1的arg2次方。
Round(arg1,arg2) : 四捨五入截斷處理,arg2是位數,如果arg2為負,則對小數點前的數做四捨五入處理。
Sigh(arg) : 返回arg的符號指示符。 -1,0,1表示。
truncate(arg1,arg2) : 截斷arg1,arg2是位數,如果arg2是負數,則保留arg1小數點前的arg2位。

{ End }

沒有留言:

張貼留言