InterBase クイック スタート:Part II - テーブルの作成
InterBase クイック スタート:Part II - データ定義 へ戻る
テーブルとは、順序付けされていない一連の行から構成される、データ構造で、各行には一定の数の列が保有されています。 概念的には、データベース テーブルは、通常の表と変わりません。 リレーショナル データベースのパワーのほとんどは、テーブル間の関係を定義できることからきています。
CREATE TABLE
文は、次のような汎用形式になっています:
CREATE TABLE tablename
(
colname1 characteristics[,
colname2 characteristics, …]
[, tableconstraint …]
)
-
- characteristics は、データ型を含むことが必須で、他の要素も含めることができます。 See InterBase Quick Start: Part II - Creating Domains for a list of column characteristics.
- tableconstraint は、1 つまたは複数の列に対する、
CHECK
、UNIQUE
、FOREIGN KEY
、PRIMARY KEY
といった制約です。
CREATE TABLE
文の完全な構文については、『言語リファレンス ガイド』を参照してください。
Country テーブルを作成する
Country テーブルには、列が 2 つあります。列定義は、カンマで区切られます。 各列ごとに、最初の単語が列名、それに続く単語が特性となります。 最初の列 country
は、COUNTRYNAME
ドメインを持っており、NOT NULL
であり、主キーでもあります(主キーについては、このチュートリアルの後続のセクションで説明があります)。
- 対話型 SQL ウィンドウを開き、次の文を入力します:
CREATE TABLE Country ( country COUNTRYNAME NOT NULL PRIMARY KEY, currency VARCHAR(10) NOT NULL )
列定義のセットが括弧に囲まれており、列はカンマで区切られているのを確認できると思います。
- 文を実行します。
- エラーなくコードが入力できている場合、データベース下に、テーブルが現れます。 確認するには、対話型 SQL ウィンドウを閉じ、IBConsole の左ペインで テーブル を選択します。結果、次の図のようになっていると思います。
Department テーブルを作成する
次に、Department テーブルを作成します。 このテーブルには、最初、列が 2 つしかありません。 このチュートリアルで後ほど、ALTER TABLE
オペレーションを使用して、さらに列を追加していきます。
- 次の文を入力し、実行します:
CREATE TABLE Department
(
dept_no DEPTNO NOT NULL PRIMARY KEY,
department VARCHAR(25) NOT NULL UNIQUE
)
dept_no
列は、このテーブルの主キーであるため、UNIQUE
(一意)でなければなりません。 department
列値もまた UNIQUE
です。上記のいずれも、NULL
にはなりえません。
- メモ: 主キーの詳細については、「PRIMARY KEY 制約と UNIQUE 制約」を参照してください。
Job テーブルを作成する
このステップでは、さらに複雑な Job
テーブルを作成してみましょう。 この定義には、CHECK
制約、PRIMARY KEY
および FOREIGN KEY
制約、および、説明テキストを保持するための BLOB
データ型が含まれています。これら要素についての詳細説明は、コード スニペットの下で触れていきます。
- 次の文を入力し、実行します:
CREATE TABLE Job ( job_code JOBCODE NOT NULL, job_grade JOBGRADE NOT NULL, job_country COUNTRYNAME NOT NULL, job_title VARCHAR(25) NOT NULL, min_salary SALARY NOT NULL, max_salary SALARY NOT NULL, job_requirement BLOB SUB_TYPE TEXT SEGMENT SIZE 400, language_req VARCHAR(15)[1:5], CONSTRAINT pkjob PRIMARY KEY (job_code, job_grade, job_country), CONSTRAINT fkjob FOREIGN KEY (job_country) REFERENCES Country (country), CHECK (min_salary < max_salary) )
CHECK
制約は、最低給与が、最高給与より下かどうかを確認します。- 3 列による主キーは、3 つの列で、テーブル内の行を一意に識別できることを保証します。
- 外部キーは、
Job
テーブルに一覧されている国が、Country
テーブルにもあるかどうかを確認します。 - <job_requirement> 列の
BLOB
データ型は、動的にサイズが変わるデータ型で、サイズやエンコーディングは指定されていません。これは、テキスト、イメージ、音声やその他のマルチメディア コンテンツなど、大容量のデータを保管するのに適しています。
- テーブルがデータベースに存在にするかをチェックするには、対話型 SQL ウィンドウを閉じ、IBConsole の左ペインで テーブル を選択します。 結果、次の図のようになっていると思います。