Db2 for i

DB2 Tips

バージョンを確認する

PTF_GROUP_TARGET_RELEASEカラムを参照すると 例)V7R4M0 等でてきます。これはIBM i 7.4を表します。

select t.PTF_GROUP_NAME,t.PTF_GROUP_DESCRIPTION,t.PTF_GROUP_LEVEL,t.PTF_GROUP_TARGET_RELEASE,t.PTF_GROUP_STATUS from QSYS2.GROUP_PTF_INFO t;
NULLと0バイトの空文字の違い

DB2では colum_a =” と colum_a is null は異なる意味です。 ” は「0バイトの空文字」と言う意味でNULLとは異なる概念です。

column_acolumn_a = ''column_a IS NULL
NULL
‘abc’
テーブルカラムのコメントを表示
SELECT COLUMN_NAME, COLUMN_TEXT
FROM QSYS2.SYSCOLUMNS
WHERE TABLE_SCHEMA = 'TBL_NAME'
AND TABLE_NAME = 'SCHEMA_NAME';
テーブル名から保有スキーマを調べる
SELECT * FROM SYSIBM.TABLES WHERE NAME = 'TBL_NAME'
;
テーブルを構成するカラム一覧の取得
SELECT 
 TABLE_CATALOG
,TABLE_SCHEMA
,TABLE_NAME
,COLUMN_NAME
,DATA_TYPE
,COLUMN_DEFAULT
,CHARACTER_MAXIMUM_LENGTH
,CHARACTER_OCTET_LENGTH
,NUMERIC_PRECISION
,NUMERIC_PRECISION_RADIX
,NUMERIC_SCALE
,CHARACTER_SET_NAME
FROM SYSIBM.COLUMNS
WHERE TABLE_SCHEMA = 'SCHEMA_NAME'
AND TABLE_NAME IN( 'TBL01','TBL02','TBL03' )
;
テーブルレコードサイズの取得

TABLE_RECORD_LENGTHにはテーブル定義時に「固定長列」「可変長列」「NULL許容列」などを考慮して、最大必要バイト数を計算し、それをレコード長として保持します。

SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE
, TABLE_TEXT   -- テーブル説明ラベル(コメント)
, TABLE_RECORD_LENGTH
FROM QSYS2.SYSTABLES
WHERE TABLE_SCHEMA = 'SCHEMA_NAME'
AND TABLE_NAME IN ('TBL01');
テーブル一覧
SELECT table_catalog,table_schema,table_name,table_type FROM SYSIBM.TABLES t 
where table_name like'TBL_%'
;
テーブル名からインデックスを調べる
例1 QSYS2.SYSTABLEINDEXSTAT
SELECT INDEX_NAME, COLUMN_NAMES FROM QSYS2.SYSTABLEINDEXSTAT 
WHERE TABLE_SCHEMA = 'SCHEMA_NAME' AND TABLE_NAME LIKE 'TBNAME_%'
ORDER BY INDEX_NAME
;
例2 QSYS2.SYSINDEXSTAT
select * from QSYS2.SYSINDEXSTAT where table_name ='TBL_NAME'
;
例3 QSYS2.SYSINDEXES
select * from QSYS2.SYSINDEXES where table_name ='TBL_NAME'
;
接続先確認SQL(ホスト名出力)
SELECT HOST_NAME FROM SYSIBMADM.ENV_SYS_INFO
;
Db2 for i のバージョンを調べる方法
SELECT *
FROM QSYS2.SYSTEM_STATUS
Db2 for i のバージョンを調べる方法
SELECT CURRENT_SERVER
FROM SYSIBM.SYSDUMMY1

CURRENT_SERVER の戻り値は、通常 V7R4M0(Version 7 Release 4 Modification 0)のような形式で返されます。

  • V: Version (バージョン)
  • R: Release (リリース)
  • M: Modification (モディフィケーション)
  • : V7R4M0 は IBM i 7.4 を意味し、搭載されている Db2 の機能レベルを示します。
テーブルのレコードサイズ(定義上の最大サイズ)を求める
SELECT 
    TABLE_SCHEMA,
    TABLE_NAME,
    SUM(COALESCE(CHARACTER_OCTET_LENGTH, NUMERIC_PRECISION)) AS ROW_SIZE_BYTES
FROM QSYS2.SYSCOLUMNS
WHERE TABLE_SCHEMA = 'MYLIB'
  AND TABLE_NAME = 'MYTABLE'
GROUP BY TABLE_SCHEMA, TABLE_NAME;
スポンサーリンク
タイトルとURLをコピーしました