他の表から表への行の挿入

ある表から別の表に 1 つ以上の行をコピーすることができます。

プロシージャー

あるテーブルから行を選択して別のテーブルに挿入するには、

INSERT ステートメントで全選択を使用します。

以下の SQL ステートメントによって、TELE という名前の表が作成されます。
CREATE TABLE TELE
  (NAME2  VARCHAR(15)  NOT NULL,
   NAME1  VARCHAR(12)  NOT NULL,
   PHONE  CHAR(4));
次のステートメントは、 DSN8C10. EMP から新しく作成されたテーブルにデータをコピーします。
INSERT INTO TELE
  SELECT LASTNAME, FIRSTNME, PHONENO
    FROM DSN8C10.EMP
    WHERE WORKDEPT = 'D21';
前の 2 つのステートメントは、下表に類似した TELE という表を作成して、 データを入れます。
NAME2             NAME1          PHONE
===============   ============   =====
PULASKI           EVA            7831
JEFFERSON         JAMES          2094
MARINO            SALVATORE      3780
SMITH             DANIEL         0961
JOHNSON           SYBIL          8953
PEREZ             MARIA          9001
MONTEVERDE        ROBERT         3780

上記の CREATE TABLE ステートメントの例では、まず、空の表を作成します。 表には 、姓、名、および電話番号の列がありますが、まだ行はありません。

INSERT ステートメントは、新しく作成されたテーブルに、 DSN8C10. EMP テーブルから選択されたデータ (部門 D21 の従業員の名前と電話番号) を入力します。

以下の CREATE ステートメントは、従業員の部門名と電話番号を含む表を作成します。 INSERT ステートメント内の全選択により、既存の 2 つの表 DSN8C10. DEPTDSN8C10. EMP から選択された行のデータが DLIST 表に入力されます。
CREATE TABLE DLIST
  (DEPT    CHAR(3)      NOT NULL,
   DNAME   VARCHAR(36)          ,
   LNAME   VARCHAR(15)  NOT NULL,
   FNAME   VARCHAR(12)  NOT NULL,
   INIT    CHAR                 ,
   PHONE   CHAR(4) );
INSERT INTO DLIST
  SELECT DEPTNO, DEPTNAME, LASTNAME, FIRSTNME, MIDINIT, PHONENO
    FROM DSN8C10.DEPT, DSN8C10.EMP
    WHERE DEPTNO = WORKDEPT;