バージョンを確認する
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_a | column_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;
