Db2-tables

提供:Dev Guides
移動先:案内検索

DB2-テーブル

テーブルは、データベースマネージャーによって維持される論理構造です。 表では、各垂直ブロックは列(Tuple)と呼ばれ、各水平ブロックは行(Entity)と呼ばれます。 列と行の形式で保存されたデータのコレクションは、テーブルと呼ばれます。 テーブルでは、各列のデータ型は異なります。 テーブルは、永続的なデータを保存するために使用されます。

テーブルの種類

  • 基本テーブル:永続データを保持します。 以下を含むさまざまな種類のベーステーブルがあります。
  • 通常のテーブル:汎用テーブル、インデックス付きの共通テーブルは汎用テーブルです。
  • 多次元クラスタリングテーブル(MDC):このタイプのテーブルは、複数のキーで物理的にクラスター化され、大規模なデータベース環境を維持するために使用されます。 これらのタイプのテーブルは、DB2 pureScaleではサポートされていません。
  • 挿入時間クラスタリングテーブル(ITC):MDCテーブルと同様に、行はテーブルに挿入される時間でクラスタリングされます。 パーティションテーブルにすることができます。 それらも、pureScale環境をサポートしていません。
  • * Range-Clustered tables Table(RCT)*:これらのタイプのテーブルは、データの高速で直接的なアクセスを提供します。 これらは順次クラスターとして実装されます。 テーブル内の各レコードにはレコードIDがあります。 これらのタイプのテーブルは、データがテーブル内の1つ以上の列で緊密にクラスター化されている場合に使用されます。 このタイプのテーブルは、DB2 pureScaleでもサポートされていません。
  • パーティションテーブル:これらのタイプのテーブルは、データ編成スキーマで使用され、テーブルデータは複数のストレージオブジェクトに分割されます。 データパーティションは、パーティションテーブルに追加、アタッチ、およびデタッチできます。 1つのテーブルスペースのテーブルから複数のデータパーティションを保存できます。
  • テンポラルテーブル:データベース内のテーブルの履歴は、以前に行われた変更の詳細などのテンポラルテーブルに格納されます。
  • 一時テーブル:さまざまなデータベース操作の一時作業には、一時テーブルを使用する必要があります。 一時テーブル(DGTT)はシステムカタログに表示されません。作成された一時テーブルではXML列を使用できません。
  • 実体化されたクエリテーブル:MQTを使用してクエリのパフォーマンスを向上させることができます。 これらのタイプのテーブルは、テーブル内のデータを決定するために使用されるクエリによって定義されます。

テーブルを作成する

次の構文はテーブルを作成します。

構文:[新しいテーブルを作成するには]

db2 create table <schema_name>.<table_name>
(column_name column_type....) in <tablespace_name>

:「employee」の詳細を「professional」のスキーマに格納するテーブルを作成します。 このテーブルには「id、name、jobrole、joindate、salary」フィールドがあり、このテーブルデータはテーブルスペース「ts1」に格納されます。

db2 create table professional.employee(id int, name
varchar(50),jobrole varchar(30),joindate date,
salary double) in ts1

出力:

DB20000I The SQL command completed successfully.

リストの詳細

テーブルの詳細をリストするには、次の構文を使用します。

構文:[スキーマで作成されたテーブルのリストを表示するには]

db2 select tabname, tabschema, tbspace from syscat.tables

:[現在のデータベースのテーブルのリストを表示するには]

db2 select tabname, tabschema, tbspace from syscat.tables

出力:

TABNAME      TABSCHEMA     TBSPACE
------------ ------------- --------
EMPLOYEE     PROFESSIONAL    TS1


 1 record(s) selected.

テーブル内の列のリスト

次の構文は、表の列をリストします。

構文:[テーブルの列とデータ型を表示するには]

db2 describe table <table_name>

:[テーブル「従業員」の列とデータ型を表示するには]

db2 describe table professional.employee
  • 出力: *
             Data type                   Column
Column name  schema    Data type name    Length    Scale Nulls
------ ----- --------- ----------------- --------- ----- ------
ID           SYSIBM    INTEGER             4         0     Yes
NAME         SYSIBM    VARCHAR             50        0     Yes
JOBROLE      SYSIBM    VARCHAR             30        0     Yes
JOINDATE     SYSIBM    DATE                4         0     Yes
SALARY       SYSIBM    DOUBLE              8         0     Yes

  5 record(s) selected.

非表示の列

テーブルの列全体を非表示にできます。 「select* from」クエリを呼び出すと、非表示の列は結果のテーブルに返されません。 テーブルにデータを挿入するとき、列リストのない「INSERT」ステートメントは、暗黙的に隠された列の値を期待しません。 これらのタイプの列は、マテリアライズ照会表で高度に参照されます。 これらのタイプの列は、一時テーブルの作成をサポートしていません。

非表示の列を持つテーブルを作成する

次の構文は、非表示の列を持つテーブルを作成します。

構文:[非表示の列を持つテーブルを作成するには]

db2 create table <tab_name> (col1 datatype,col2 datatype
implicitly hidden)

:[非表示の列「電話」を持つ「顧客」テーブルを作成するには]

db2 create table professional.customer(custid integer not
null, fullname varchar(100), phone char(10)
implicitly hidden)

テーブルへのデータ値の挿入

次の構文は、テーブルに値を挿入します。

構文:[値をテーブルに挿入するには]

db2 insert into <tab_name>(col1,col2,...)
 values(val1,val2,..)

:[「customer」テーブルに値を挿入するには]

db2 insert into professional.customer(custid, fullname, phone)
values(100,'ravi','9898989')


db2 insert into professional.customer(custid, fullname, phone)
values(101,'krathi','87996659')


db2 insert into professional.customer(custid, fullname, phone)
values(102,'gopal','768678687')

出力:

DB20000I  The SQL command completed successfully.

テーブルから値を取得する

次の構文は、テーブルから値を取得します。

構文:[値をテーブルから取得するには]

db2 select * from &lttab_name>

:[「顧客」テーブルから値を取得するには]

db2 select * from professional.customer

出力:

CUSTID      FULLNAME
----------- ------------------------
        100 ravi

        101 krathi

        102 gopal

  3 record(s) selected.

非表示の列を含むテーブルから値を取得する

次の構文は、選択した列から値を取得します。

構文:[選択した非表示列の値をテーブルから取得するには]

db2 select col1,col2,col3 from <tab_name>

:[選択した列の値をテーブルから取得するには]

db2 select custid,fullname,phone from professional.customer

出力:

CUSTID  FULLNAME    PHONE
------- ---------   ------------
100     ravi        9898989

101     krathi      87996659

102     gopal       768678687

  3 record(s) selected.

非表示列のデータを表示するには、「DESCRIBE」コマンドを実行する必要があります。

構文

db2 describe table <table_name> show detail

例:

db2 describe table professional.customer show detail

出力:

Column name     Data type schema     Data type name  Column
           column    Partitionkey  code
                                       Length   Scale    Nulls
number     sequence      page     Hidden      Default
--------------- -------------------- --------------- -------- ----
---- -------- ---------- ------------- -------- ----------- ------
---
CUSTID          SYSIBM               INTEGER         4        0
No       0          0         0        No
FULLNAME        SYSIBM               VARCHAR         100      0
Yes      1          0        1208     No

PHONE           SYSIBM               CHARACTER       10       0
Yes      2          0             1208     Implicitly

3 record(s) selected.

テーブル列のタイプを変更する

次のように、この「変更」コマンドを使用してテーブル構造を変更できます。

構文

db2 alter table <tab_name> alter column <col_name> set data type <data_type>

例: [従業員テーブルの列「id」のデータ型を「int」から「bigint」に変更するには]

db2 alter table professional.employee alter column id set data type bigint

出力:

DB20000I The SQL command completed successfully.

列名の変更

以下に示すように、列名を変更できます。

構文:[列名をテーブルの古い名前から新しい名前に変更するには]

db2 alter table <tab_name> rename column <old_name> to <new_name>

例: [「customers」テーブルの列名を「fullname」から「custname」に変更するには。]

db2 alter table professional.customer rename column fullname to custname

テーブルをドロップする

テーブルを削除するには、次のように「DROP」コマンドを使用する必要があります。

構文

db2 drop table <tab_name>

例: [顧客テーブルフォームデータベースを削除するには]

db2 drop table professional.customers

テーブルの階層全体(トリガーとリレーションを含む)を削除するには、「DROP TABLE HIERARCHY」コマンドを使用する必要があります。

構文

db2 drop table hierarchy <tab_name>

例: [テーブル「顧客」の階層全体を削除するには]

db2 drop table hierarchy professional.customers