InterBase クイック スタート:Part II - テーブルの作成

提供: InterBase

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 つまたは複数の列に対する、CHECKUNIQUEFOREIGN KEYPRIMARY KEY といった制約です。

CREATE TABLE 文の完全な構文については、『言語リファレンス ガイド』を参照してください。

Image 025.jpg Country テーブルを作成する

Country テーブルには、列が 2 つあります。列定義は、カンマで区切られます。 各列ごとに、最初の単語が列名、それに続く単語が特性となります。 最初の列 country は、COUNTRYNAME ドメインを持っており、NOT NULL であり、主キーでもあります(主キーについては、このチュートリアルの後続のセクションで説明があります)。

  1. 対話型 SQL ウィンドウを開き、次の文を入力します:
    CREATE TABLE Country
      (
         country  COUNTRYNAME NOT NULL PRIMARY KEY,
         currency VARCHAR(10) NOT NULL
      )
    

    列定義のセットが括弧に囲まれており、列はカンマで区切られているのを確認できると思います。

  2. 文を実行します
  3. エラーなくコードが入力できている場合、データベース下に、テーブルが現れます。 確認するには、対話型 SQL ウィンドウを閉じ、IBConsole の左ペインで テーブル を選択します。結果、次の図のようになっていると思います。
    TutorialTables.png

Image 025.jpg Department テーブルを作成する

次に、Department テーブルを作成します。 このテーブルには、最初、列が 2 つしかありません。 このチュートリアルで後ほど、ALTER TABLE オペレーションを使用して、さらに列を追加していきます。

  1. 次の文を入力し、実行します:
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 制約」を参照してください。

Image 025.jpg Job テーブルを作成する

このステップでは、さらに複雑な Job テーブルを作成してみましょう。 この定義には、CHECK 制約、PRIMARY KEY および FOREIGN KEY 制約、および、説明テキストを保持するための BLOB データ型が含まれています。これら要素についての詳細説明は、コード スニペットの下で触れていきます。

  1. 次の文を入力し、実行します:
    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 データ型は、動的にサイズが変わるデータ型で、サイズやエンコーディングは指定されていません。これは、テキスト、イメージ、音声やその他のマルチメディア コンテンツなど、大容量のデータを保管するのに適しています。
  2. テーブルがデータベースに存在にするかをチェックするには、対話型 SQL ウィンドウを閉じ、IBConsole の左ペインで テーブル を選択します。 結果、次の図のようになっていると思います。
    TutorialTables2.png

次は: