網頁

顯示具有 DB2 標籤的文章。 顯示所有文章
顯示具有 DB2 標籤的文章。 顯示所有文章

2014年4月3日 星期四

[DB2]How to drop index in db2

use command:
drop index index_name
閱讀全文...

2014年4月2日 星期三

[DB2] How to adding columns to an existing table

To add columns to an existing table using the command line, enter:
ALTER TABLE table_name ADD column_name data_type null_attribute

EX:
ALTER TABLE MyTable
ADD COLUMN1 VARCHAR(5) NOT NULL WITH DEFAULT
ADD COLUMN2 CHAR(3)
閱讀全文...

[DB2] How to change the primary key for already existing table?

1. drop the existing primary key, use
ALTER TABLE Table_Name DROP PRIMARY KEY;

2. add new primary key, use
ALTER TABLE Table_Name ADD PRIMARY KEY (Column1, Column2, ...);
閱讀全文...

2013年9月11日 星期三

DB2: How to find your DB2 version

要如何得知你使用的db2版本,每次問,不會被回說去找cd的包裝,就是問不到答案。
本想google一下,卻意外發現手動用command line的方式去連db,上面就有顯示了。
db2 => connect to yourdb Database Connection Information Database server = DB2/LINUX 9.7.6 SQL authorization ID = yourdb Local database alias = yourdb db2 =>
Database Server那行後面 9.7.6 就是db2 version
另也可以透過下面的SQL語法來取得db2 version,但是用此sql語法前,得先連上db,否則會出現錯誤。
db2 => select * from SYSIBM.SYSVERSIONS VERSIONNUMBER VERSION_TIMESTAMP AUTHID VERSIONBUILDLEVEL ------------- -------------------------- -------- ------------------------------ 9070600 2013-02-21-16.21.51.489830 DB2INST1 s120516 1 record(s) selected.
VERSIONNUMBER 即db2 version.

未連上db時,會得到的錯誤訊息
db2 => select * from SYSIBM.SYSVERSIONS SQL1024N A database connection does not exist. SQLSTATE=08003 db2 =>
閱讀全文...

2013年8月29日 星期四

DB2: Get current date with format YYYYMMDD

How to get current date with format YYYYMMSS in DB2??

To get the current date, time, and timestamp using SQL in DB2, reference to use below sql statment
db2 => select current date from sysibm.sysdummy1 1 ---------- 08/29/2013 1 record(s) selected. db2 => select current time from sysibm.sysdummy1 1 -------- 16:59:01 1 record(s) selected. db2 => select current timestamp from sysibm.sysdummy1 1 -------------------------- 2013-08-29-16.37.35.960388 1 record(s) selected.

How to custom date/time formatting?
The easy way to do this is use VARCHAR_FORMATscalar function
db2 => select varchar_format(current timestamp, 'YYYYMMDD') from sysibm.sysdummy1 1 ----------------------------------- 20130829 1 record(s) selected.
閱讀全文...

2013年6月26日 星期三

DB2: Insert into with select, incrementing a column for each new row by one for each insert?

工作上要用到,新增記錄到資料庫時,其中一個欄位要從SEQUENCE取值,所以試了一下SQL,順便記錄一下,免得忘了
新增一筆記錄至XXX table,其中UNIQUEID要從UNIQUE_ID_SEQ SEQUENCE取值
INSERT INTO XXX (UNIQUEID, TYPE, ID) VALUES(NEXT VALUE FOR UNIQUE_ID_SEQ,'M','004123456789001');
閱讀全文...

2013年5月20日 星期一

db2 encrypt/decrypt value for column(表格欄位值加解密)

全球最嚴個資法,台灣說第二,不知道有沒有其他國敢跳出來說第一,所以一堆公司開始了所謂的控管,免不的,資料庫有些敏感性資料也要加密,只好找找資料,試一下db2怎麼對表格中的欄位來進行加解密。

db2 針對不同型態,提供了不同的加解密函式,根據版本不同,有些函式還未提供,或是只供內部使用,所以只把我試出來可以用的列出來。
資料型態,主要針對varchar
使用下列函式:
  • encrypt(StringDataToEncrypt, PasswordOrPhrase, PasswordHint)
  • decrypt_dhar(EncryptedData, PasswordOrPhrase)
  • Set Encryption Password

對資料加密的演算法是一個 RC2 分組密碼(block cipher),它帶有一個 128 位的密鑰。這個128位的密鑰是通過消息摘要從密碼得來的。加密密碼與DB2認證無關,僅用於資料的加解密。
另外提供一個可選的參數 PasswordHint,這是一個字串,可以幫助用戶記憶用於對 PasswordOrPhrase 提示。

db2 db2 => connect to your_database db2 => create table xxx(cardno varchar(33) for bit data) db2 => set encryption password = 'test1234'; db2 => insert into xxx values(encrypt('1234567890123456')) db2 => select decrypt_char(cardno) from xxx db2 => quit
NOTE:
密碼至少要 6byte
新增表格時欄位長度需設定為原本欄位的最大長度+9bytes,否則在新增欄位值,會出現欄位值太長的錯誤。例如cardno原本最大長度為24,在新增table時,將其設定成33 byte

閱讀全文...

2013年4月30日 星期二

DB2 sequence 簡單語法

剛好遇上要用db2 sequence, 將試過的語法做個備忘。

1. create
CREATE SEQUENCE XX_SEQ START 1 INCREMENT BY 1 MAXVALUE 999999 CYCLE NO CACHE
說明:
START WITH:起始值
INCREMENT BY:每次增加多少
MAXVALUE:設定最大值,不設定就設成 NO MAXVALUE
CYCLE:當到達最大值時,是否從頭開始,不循環設成NO CYCLE
CACHE:一次產生多個值於記憶體中,方便快速取用,如 CACHE 3 ,就會產生3個值於記憶體中,若不使用,則設成NO CACHE

2. alter (重新設定起始值) ALTER SEQUENCE XX_SEQ RESTART WITH 10
3. 使用 next value for seq_name 取值
SELECT NEXT VALUE FOR XX_SEQ FROM sysibm.sysdummy1
4. drop(刪除)
DROP SEQUENCE XX_SEQ RESTRICT
閱讀全文...

2013年3月15日 星期五

db2 如何在命令模式(command line)下執行 script

想要在命令視窗或命令列中執行 DB2 腳本,您可用 db2 -svtf ScriptName 來執行。
例如,script 為sample.sql
db2 -svtf sample.sql

參數說明︰
s 代表遇到錯誤時中止執行(如果您希望即使遇到錯誤也不要中止執行,請去掉此參數s
v 代表輸出結果到螢
t 指以;號作為每行的分隔符號
f 指後面需跟腳本檔案名

閱讀全文...