INSERT INTO ステートメント (Microsoft Access SQL)

適用先: Access 2013、Office 2013

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

構文

複数レコード追加クエリ

INSERT INTO ターゲット [(field1[, field2[, ...]])] [IN externaldatabase]SELECT [source.]field1[, field2[, ...] FROM tableexpression

単一レコード追加クエリ:

INSERT INTO ターゲット [(field1[, field2[, ...]])] VALUES (value1[, value2[, ...])

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

パーツ

説明

target

レコードを追加するテーブルまたはクエリの名前です。

field1, field2

target 引数に続く場合、データを追加するフィールド名です。source 引数に続く場合、データを取得するフィールド名です。

externaldatabase

外部データベースのパス。 パスの記述方法については、「IN 句」を参照してください。

source

レコードをコピーするテーブルまたはクエリの名前です。

tableexpression

挿入するレコードのある 1 つ以上のテーブルの名前。 単一のテーブル名、保存されたクエリ名、または INNER JOINLEFT JOINRIGHT JOIN のいずれかの操作の結果としてできる複合テーブルを指定します。

value1, value2

新しいレコードの特定のフィールドに挿入する値。 各値は、リスト内の値の位置に対応するフィールドに挿入されます。 value1 は新しいレコードの field1 に挿入され、 value2field2 に挿入されます。 値はコンマで区切り、テキスト フィールドを引用符 (' ') で囲む必要があります。

注釈

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

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

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

INSERT INTO ステートメントは省略可能ですが、使用する場合 SELECT ステートメントよりも前に記述します。

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

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

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

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

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

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

別のテーブルから既存のレコードを追加する代わりに、VALUES 句を使用して、1 つの新しいレコード内の各フィールドの値を指定できます。 フィールド リストを省略した場合、VALUES 句にはテーブル内のすべてのフィールドの値を含める必要があります。それ以外の場合、INSERT 操作は失敗します。 作成する追加のレコードごとに、VALUES 句を指定して追加の INSERT INTO ステートメントを使用します。

UtterAccess コミュニティで提供されるリンク。 UtterAccess は非常に優れた Microsoft Access wiki およびヘルプ フォーラムです。

次の例では、仮想の New Customers テーブルのすべてのレコードを選択し、それを Customers テーブルに追加します。 列を個別に指定しない場合、SELECT テーブルの列名が INSERT INTO テーブルの列名と厳密に一致する必要があります。

    Sub InsertIntoX1() 
     
        Dim dbs As Database 
     
        ' Modify this line to include the path to Northwind 
        ' on your computer. 
        Set dbs = OpenDatabase("Northwind.mdb") 
         
        ' Select all records in the New Customers table  
        ' and add them to the Customers table. 
        dbs.Execute " INSERT INTO Customers " _ 
            & "SELECT * " _ 
            & "FROM [New Customers];" 
             
        dbs.Close 
     
    End Sub

次の使用例では、Employees テーブルに新しいレコードを作成します。

    Sub InsertIntoX2() 
     
        Dim dbs As Database 
     
        ' Modify this line to include the path to Northwind 
        ' on your computer. 
        Set dbs = OpenDatabase("Northwind.mdb") 
         
        ' Create a new record in the Employees table. The  
        ' first name is Harry, the last name is Washington, 
        ' and the job title is Trainee. 
        dbs.Execute " INSERT INTO Employees " _ 
            & "(FirstName,LastName, Title) VALUES " _ 
            & "('Harry', 'Washington', 'Trainee');" 
             
        dbs.Close 
     
    End Sub