INSERT INTO ステートメント

テーブルに 1 つまたは複数のレコードを追加します。追加クエリとも呼ばれます。

構文

複数レコード追加クエリ

INSERT INTO target [(field1[, field2[, ...]])][IN externaldatabase]
    SELECT [source.]field1[, field2[, ...]
    FROM tableexpression

単一レコード追加クエリ

INSERT INTO target [(field1[, field2[, ...]])]
    VALUES (value1[, value2[, ...])

INSERT INTO ステートメントには、次の指定項目があります。

指定項目 内容
target レコードを追加するテーブルまたはクエリの名前。
field1field2 引数 target の後に指定する場合は、データの追加先となる 1 つ以上のフィールド名。引数 source の後に指定する場合は、データの取得元となる 1 つ以上のフィールド名。
externaldatabase 外部データベースのパス。パスの記述方法については、「IN 句」を参照してください。
source コピー元のレコードのあるテーブルまたはクエリの名前。
tableexpression 挿入するレコードのある 1 つ以上のテーブルの名前。単一のテーブル名、保存されたクエリ名、INNER JOINLEFT JOIN、または RIGHT JOIN のいずれかの操作の結果としてできる複合テーブルを指定します。
value1value2 新しいレコードの特定のフィールドに挿入する値。それぞれの値は、記述順にフィールドに挿入されます。つまり、引数 value1 は新しいレコードの引数 field1 に、引数 value2 は引数 field2 に、というように挿入されます。値と値の間はカンマで区切り、テキスト フィールドの値はダブル クォーテーション ("") で囲みます。

解説

INSERT INTO ステートメントで 1 つのレコードを追加するには、単一レコード追加クエリの構文を使用します。この場合は、レコードの各フィールドの名前と値を指定します。この場合、値を割り当てるフィールドと、そのフィールドに割り当てる値を必ず指定してください。指定していないフィールドには、既定値または Null 値が挿入されます。レコードはテーブルの末尾に追加されます。

また、INSERT INTO ステートメントで別のテーブルからレコードのセットを追加することもできます。これには、複数レコード追加クエリの構文で示したように SELECT...FROM 句によるクエリを使用します。この場合は、引数 target テーブルに追加するフィールドを SELECT 句で指定します。

引数 source テーブルと target テーブルには、テーブルまたはクエリを指定します。クエリを指定した場合、Microsoft Jet データベース エンジンは、クエリで指定したすべてのテーブルにレコードを追加します。

INSERT INTO ステートメントは SELECT ステートメントよりも前に記述します。

レコードの追加先のテーブルに主キーがある場合、その主キー フィールドには必ず Null 値以外の一意な値を追加するようにしてください。この条件が満たされない場合、Microsoft Jet データベース エンジンはレコードを追加しません。

オートナンバー型 (AutoNumber) フィールドのあるテーブルにレコードを追加する場合、追加したレコードに新しく番号を割り当てる場合は、クエリにオートナンバー型 (AutoNumber) フィールドを含めないでください。既にこのフィールドに割り当てられている値をそのまま使用する場合は、クエリでオートナンバー型 (AutoNumber) フィールドを含めてください。

別のデータベースにあるテーブルにレコードを追加するには、IN 句を使用します。

新しいテーブルを作成する場合は、INSERT INTO ステートメントではなく、SELECT...INTO ステートメントを使用してテーブル作成クエリを作成してください。

どのレコードが追加されるかをあらかじめ確認する場合は、追加クエリを実行する前に、同じ抽出条件を使用する選択クエリを実行してその結果を調べてください。

追加クエリでは、1 つまたは複数のテーブルからほかのテーブルにレコードがコピーされます。追加クエリを実行しても、コピー元のレコードのあるテーブルは変更されません。

別のテーブルからの既存のレコードを追加する代わりに、VALUES 句を使用して、各フィールドの値を指定した単一の新規レコードを追加することもできます。フィールド リストを省略する場合は、VALUES 句にはテーブルにあるすべてのフィールドの値を指定してください。指定した値が足りなければ、INSERT INTO ステートメントは失敗します。VALUES 句を使用する INSERT INTO ステートメントは、追加するレコードの数だけ記述する必要があります。

参照
FROM 句 (Microsoft Jet SQL) SELECT ステートメント (Microsoft Jet SQL)
IN 句 (Microsoft Jet SQL) SELECT...INTO ステートメント (Microsoft Jet SQL)
INNER JOIN 操作 (Microsoft Jet SQL) WHERE 句 (Microsoft Jet SQL)
LEFT JOIN、RIGHT JOIN 操作 (Microsoft Jet SQL)  

使用例

INSERT INTO ステートメントの使用例