INSERT INTO-Anweisung (Microsoft Access SQL)

Gilt für: Access 2013, Office 2013

Fügt einer Tabelle einen oder mehrere Datensätze hinzu. Dies wird als Anfügeabfrage bezeichnet.

Syntax

Anfügeabfrage mit mehreren Datensätzen

INSERT INTO Ziel [(Feld1[, Feld2[, …]])] [IN externaldatabase] SELECT [Quelle.] field1[, field2[, ...] FROM Tabellenausdruck

Anfügeabfrage mit einem Datensatz

INSERT INTO Ziel [(Feld1[, Feld2[, …]])] VALUES (Wert1[, Wert2[, …])

Die INSERT INTO-Anweisung besteht aus folgenden Teilen:

Teil

Beschreibung

target

Der Name der Tabelle oder Abfrage, an die Datensätze angefügt werden sollen.

Feld1, Feld2

Namen der Felder, an die Daten angehängt werden sollen, falls nach einem target-Argument, oder die Namen von Feldern, aus denen Daten abgerufen werden sollen, falls nach einem source-Argument.

externeDatenbank

Der Pfad zu einer externen Datenbank. Eine Beschreibung des Pfads finden Sie unter der IN-Klausel.

Quelle

Der Name der Tabelle oder Abfrage, aus der Datensätze kopiert werden sollen.

Tabellenausdruck

Die Namen der Tabellen, aus denen Datensätze eingefügt werden. Dieses Argument kann ein einzelner Tabellenname oder eine Kombination aus den Vorgängen INNER JOIN, LEFT JOIN oder RIGHT JOIN oder eine gespeicherte Abfrage sein.

Wert1, Wert2

Die Werte, die in die entsprechenden Felder des neuen Datensatzes eingefügt werden sollen. Jeder Wert wird in das Feld eingefügt, das der Position des Werts in der Liste entspricht: Wert1 wird in Feld1 des neuen Datensatzes eingefügt, Wert2 in Feld2 usw. Sie müssen Werte durch Kommata trennen und Textfelder in einfache Anführungszeichen (' ') einschließen.

Hinweise

Sie können die INSERT INTO-Anweisung verwenden, um einen einzelnen Datensatz einer Tabelle mit der Syntax der Anfügeabfrage für einzelne Datensätze hinzuzufügen. In diesem Fall gibt der Code den Namen und Wert für jedes Feld des Datensatzes an. Sie müssen jedes Feld des Datensatzes angeben, dem ein Wert zugewiesen werden soll, sowie einen Wert für dieses Feld. Wenn Sie nicht alle Felder angeben, wird der Standardwert oder Null für fehlende Spalten eingefügt. Datensätze werden am Ende der Tabelle hinzugefügt.

Sie können auch INSERT INTO verwenden, um eine Gruppe von Datensätzen aus einer anderen Tabelle oder Abfrage mithilfe der SELECT … FROM-Klausel anzufügen, wie oben in der Syntax zur Anfügeabfrage für mehrere Datensätze gezeigt wird. In diesem Fall gibt die SELECT-Klausel die Felder an, die an die angegebene target-Tabelle angefügt werden sollen.

Die source- oder target-Tabelle kann eine Tabelle oder Abfrage angeben. Wenn eine Abfrage angegeben wird, fügt das Microsoft Access-Datenbankmodul Datensätze an alle in der Abfrage angegebenen Tabellen an.

INSERT INTO ist optional. Wenn es eingeschlossen wird, steht es aber vor der SELECT-Anweisung.

Wenn die Zieltabelle einen Primärschlüssel enthält, stellen Sie sicher, dass Sie eindeutige Nicht-Null-Werte an das Primärschlüsselfeld bzw. die Primärschlüsselfelder anfügen. Andernfalls fügt das Microsoft Access-Datenbankmodul die Datensätze nicht an.

Wenn Sie Datensätze an eine Tabelle mit einem AutoWert-Feld anfügen und die angefügten Datensätze neu nummerieren möchten, schließen Sie das AutoWert-Feld nicht in Ihre Abfrage ein. Schließen Sie das Feld AutoWert in die Abfrage ein, wenn Sie die ursprünglichen Werte aus dem Feld beibehalten möchten.

Verwenden Sie die IN-Klausel, um Datensätze an eine Tabelle in einer anderen Datenbank anzufügen.

Um eine neue Tabelle zu erstellen, verwenden Sie stattdessen die SELECT… INTO-Anweisung, um eine Tabellenerstellungsabfrage zu erstellen.

Um herauszufinden, welche Datensätze angefügt werden, bevor Sie die Anfügeabfrage ausführen, müssen Sie zuerst eine Auswahlabfrage ausführen, die die gleichen Auswahlkriterien verwendet, und sich die Ergebnisse ansehen.

Eine Anfügeabfrage kopiert Datensätze aus einer oder mehreren Tabellen in eine andere. Die Tabellen mit den Datensätzen, die Sie anfügen, werden von der Anfügeabfrage nicht beeinflusst.

Anstatt vorhandene Datensätze aus einer anderen Tabelle anzufügen, können Sie den Wert für jedes Feld in einem einzelnen neuen Datensatz mithilfe der VALUES-Klausel angeben. Wenn Sie die Feldliste weglassen, muss die VALUES-Klausel einen Wert für jedes Feld in der Tabelle enthalten. Andernfalls schlägt der INSERT-Vorgang fehl. Verwenden Sie eine zusätzliche INSERT INTO-Anweisung mit einer VALUES-Klausel für jeden zusätzlichen Datensatz, den Sie erstellen möchten.

Links zur Verfügung gestellt von: UtterAccess-Community. UtterAccess ist das führende Microsoft Access-Wiki und -Hilfeforum.

Beispiel

Dieses Beispiel wählt alle Datensätze in einer hypothetischen Tabelle "New Customers" aus und fügt sie der Tabelle "Customers" hinzu. Wenn einzelne Spalten nicht angegeben werden, müssen die SELECT-Tabellenspaltennamen exakt mit denen in der INSERT INTO-Tabelle übereinstimmen.

    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

Dieses Beispiel erstellt einen neuen Datensatz in der Tabelle "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