EMP サンプル表および DEPT サンプル表に対する作業表の作成

DSN8C10. EMP および DSN8C10. DEPT サンプル テーブルで行を挿入、更新、および削除する SQL ステートメントをテストする前に、これらのテーブルの複製を作成する必要があります。 この複写は、元のサンプル表を元のままの状態で残しておくために作成します。 これらの複写表は、作業表 と呼ばれます。

このタスクについて

このトピックでは、部門と従業員の作業表を作成し、作業表に別の表の内容を挿入する方法を説明します。

これらの各トピックでは、ユーザー自身の許可 ID を使用してログオンすることを前提としています。 許可 ID は、作成される各オブジェクトの名前に付けられます。 例えば、許可 ID が SMITH であり、表 YDEPT を作成する場合、 表の名前は SMITH.YDEPT になります。 表 DSN8C10. DEPT にアクセスする場合は、完全な名前で参照する必要があります。 ユーザー独自の表 YDEPT にアクセスする場合に唯一必要なことは、 その表を YDEPT と呼ぶことです。

以下のステートメントを使用して、既存のテーブルDSN8C10.DEPT をモデルとした新しいDEPTテーブル(YDEPT)と、YDEPT用のインデックスを作成します
CREATE TABLE YDEPT
  LIKE DSN8C10.DEPT;
CREATE UNIQUE INDEX YDEPTX
  ON YDEPT (DEPTNO);
サンプル表と同様に DEPTNO を主キーにする場合は、 そのキーを明示的に定義してください。 以下の例のように、ALTER TABLE ステートメントを使用します。
ALTER TABLE YDEPT
  PRIMARY KEY(DEPTNO);
INSERT ステートメントを使用すると、 全選択の結果表の行を表から表にコピーできます。 次のステートメントは、 DSN8C10. DEPT のすべての行を独自の YDEPT 作業表にコピーします。
INSERT INTO YDEPT
  SELECT *
    FROM DSN8C10.DEPT;

INSERT文の使用方法については、「INSERT文を使用して行を挿入する」 を参照してください。

以下のステートメントを使用すると、YEMP と名付けた、新しい従業員表を作成 することができます。
CREATE TABLE YEMP
      (EMPNO     CHAR(6)        PRIMARY KEY NOT NULL,
       FIRSTNME  VARCHAR(12)    NOT NULL,
       MIDINIT   CHAR(1)        NOT NULL,
       LASTNAME  VARCHAR(15)    NOT NULL,
       WORKDEPT  CHAR(3)        REFERENCES YDEPT
                                  ON DELETE SET NULL,
       PHONENO   CHAR(4)        UNIQUE NOT NULL,
       HIREDATE  DATE                   ,
       JOB       CHAR(8)                ,
       EDLEVEL   SMALLINT               ,
       SEX       CHAR(1)                ,
       BIRTHDATE DATE                   ,
       SALARY    DECIMAL(9, 2)          ,
       BONUS     DECIMAL(9, 2)          ,
       COMM      DECIMAL(9, 2)          );

このステートメントは、また、YEMP (WORKDEPT) の外部キー と YDEPT (DEPTNO) の主キーとの間の参照制約も作成します。 さらに、すべての電話番号が固有の番号になるよう制限します。

すでに作成されている表の定義を変更したい場合は、RENAME 文節を指定した ALTER TABLE ステートメントを使用してください。 また、すでに作成されている表名を変更したい場合は、 RENAME ステートメントを使用してください。

ある種の方法に限って、ALTER TABLE ステートメントを使用して表定義を変更可能です。 例えば、ある表の列に対して制約を追加およびドロップすることができます。 また、文字データ・タイプ、数値データ・タイプ、およびグラフィック・データ・タイプの範囲内で 列のデータ・タイプを変更することもできます。 列を表に追加できます。 ただし、ALTER TABLE ステートメントを使用して表から列をドロップすることはできません。