はじめに
Db2の初学者の方向けに、Sampleデータベースを作成してそのデータベースのとある表に格納されているレコードを表示する手順とその周辺情報を確認する手順について説明します。
コマンド実行環境は以下にて用意しています。
環境情報
- DB2 v11.5
- CentOS Linux 7 (Core)
Sampleデータベースを作成する
db2inst1にスイッチを行い以下コマンドにてテスト用のデータベースを作成できます。
$ db2sampl -sql -xml Creating database "SAMPLE"... Connecting to database "SAMPLE"... Creating tables and data in schema "DB2INST1"... Creating tables with XML columns and XML data in schema "DB2INST1"... 'db2sampl' processing complete.
以下コマンドにてデータベースの一覧が確認できるので
$ db2 list db directory ... Database alias = SAMPLE Database name = SAMPLE Local database directory = /database/data Database release level = 15.00 Comment = Directory entry type = Indirect Catalog database partition number = 0 Alternate server hostname = Alternate server port number = ...
「SAMPLE」というデータベースができていることが分かります。
テーブル一覧を確認する
先ほど作成したデータベースに接続を行い
$ db2 connect to sample Database Connection Information Database server = DB2/LINUXX8664 11.5.0.0 SQL authorization ID = DB2INST1 Local database alias = SAMPLE
以下コマンドにてデータベース内に存在する表がアルファベット順に表示されます。
$ db2 list tables Table/View Schema Type Creation time ------------------------------- --------------- ----- -------------------------- ACT DB2INST1 T .. ADEFUSR DB2INST1 S .. ... SALES DB2INST1 T .. ... VSTAFAC2 DB2INST1 V .. 47 record(s) selected.
今回は「SALES」テーブルの中身を確認することとします。
表の構造を調べる
以下コマンドにて表の中の型が確認できます。
$ db2 describe table sales Data type Column Column name schema Data type name Length Scale Nulls ------------------------------- --------- ------------------- ---------- ----- ------ SALES_DATE SYSIBM DATE 4 0 Yes SALES_PERSON SYSIBM VARCHAR 15 0 Yes REGION SYSIBM VARCHAR 15 0 Yes SALES SYSIBM INTEGER 4 0 Yes 4 record(s) selected.
日付データ、文字列、文字列、数値という構造であることが分かります。
テーブルの中身を確認する
やっとタイトルにもあるテーブルの中身ですが以下にて行数を確認でき
$ db2 "select count(*) from sales" 1 ----------- 41 1 record(s) selected.
以下にて全件を表示することができます。
$ db2 "select * from sales" SALES_DATE SALES_PERSON REGION SALES ---------- --------------- --------------- ----------- 12/31/2005 LUCCHESSI Ontario-South 1 12/31/2005 LEE Ontario-South 3 12/31/2005 LEE Quebec 1 12/31/2005 LEE Manitoba 2 12/31/2005 GOUNOT Quebec 1 03/29/2006 LUCCHESSI Ontario-South 3 03/29/2006 LUCCHESSI Quebec 1 03/29/2006 LEE Ontario-South 2 03/29/1996 LEE Ontario-North 2 03/29/2006 LEE Quebec 3 03/29/2006 LEE Manitoba 5 03/29/2006 GOUNOT Ontario-South 3 03/29/2006 GOUNOT Quebec 1 03/29/2006 GOUNOT Manitoba 7 03/30/2006 LUCCHESSI Ontario-South 1 03/30/2006 LUCCHESSI Quebec 2 03/30/2006 LUCCHESSI Manitoba 1 03/30/2006 LEE Ontario-South 7 03/30/2006 LEE Ontario-North 3 03/30/2006 LEE Quebec 7 03/30/2006 LEE Manitoba 4 03/30/2006 GOUNOT Ontario-South 2 03/30/2006 GOUNOT Quebec 18 03/31/2006 GOUNOT Manitoba 1 03/31/2006 LUCCHESSI Manitoba 1 03/31/2006 LEE Ontario-South 14 03/31/2006 LEE Ontario-North 3 03/31/2006 LEE Quebec 7 03/31/2006 LEE Manitoba 3 03/31/2006 GOUNOT Ontario-South 2 03/31/2006 GOUNOT Quebec 1 04/01/2006 LUCCHESSI Ontario-South 3 04/01/2006 LUCCHESSI Manitoba 1 04/01/2006 LEE Ontario-South 8 04/01/2006 LEE Ontario-North - 04/01/2006 LEE Quebec 8 04/01/2006 LEE Manitoba 9 04/01/2006 GOUNOT Ontario-South 3 04/01/2006 GOUNOT Ontario-North 1 04/01/2006 GOUNOT Quebec 3 04/01/2006 GOUNOT Manitoba 7 41 record(s) selected.
ダブルクオーテーションが無ければアスタリスクの展開にて以下エラーとなりますので注意ください。
$ db2 select * from sales
SQL0104N An unexpected token "database" was found following "naconda-post.log
bin". Expected tokens may include: "FROM". SQLSTATE=42601
終わりに
上記の流れが分かれば、あとはSQLを駆使すれば確認したいデータベースから自由に情報を引き出すことが可能になります。
以上、ご参考になれば幸いです。