Db2-tables
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 <tab_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