SQL: Einen einzelnen Datensatz anfügen

Aus DBWiki
Wechseln zu: Navigation, Suche

Zurück zur Übersicht



Die hinter dem Tabellennamen in Klammern aufgeführten Feldnamen müssen nicht alle Felder der Tabelle enthalten. Wird ein Feld ausgelassen, so wird der Standardwert des Feldes eingetragen. Existiert kein Standardwert für ein Feld, wird Null als Wert zugewiesen.


Hinweis für Access-Anwender
Um die folgenden Abfragen selbst testen zu können, müssen die Tabellen der Übungsdatenbank vorhanden sein.


Um z. B. einen Datensatz der Tabelle abteilung hinzuzufügen, kann so verfahren werden:

INSERT INTO abteilung ( abt_nr, abt_name, ort )
VALUES ( 50, 'Qualitätssicherung', 'Wuppertal' )

Alternativ kann die Abfrage auch so formuliert werden:

INSERT INTO abteilung ( abt_nr, abt_name, ort )
SELECT 50, 'Qualitätssicherung', 'Wuppertal'

Der QBE-Editor von Access verwendet immer die zweite Form, und setzt für jeden Wert noch einen Alias-Namen ein. Daher erscheint es sinnvoll, diese Alias-Namen mit dem Namen des Zielfeldes zu überschreiben, um eine gut lesbare Anfügeabfrage zu erhalten.

INSERT INTO abteilung ( abt_nr, abt_name, ort )
SELECT 50 AS abt_nr,
       'Qualitätssicherung' AS abt_name,
       'Wuppertal' AS ort

Viele andere SQL-Dialekte haben eine erweiterte Syntax, die es erlaubt, mehrere kommaseparierte Tuples in der Abfrage aufzuführen:

INSERT INTO abteilung ( abt_nr, abt_name, ort )
VALUES ( 50, 'Qualitätssicherung', 'Wuppertal' ),
       ( 60, 'Personalwesen', 'Essen' )

Access erlaubt diese Form der Syntax nicht.

Eine weitere gültige Form besteht darin, die Feldliste hinter INSERT INTO wegzulassen. Die folgende VALUES- bzw. SELECT-Klausel muss dann aber alle Felder der Tabelle in ihrer definierten Reihenfolge enthalten.

INSERT INTO abteilung
VALUES ( 50, 'Qualitätssicherung', 'Wuppertal' )
Wiki hinweis.png

Anmerkung: Die obige Syntax hat den Nachteil, dass die Reihenfolge der Spalten in der Tabelle bekannt sein muss.


Wiki hinweis.png

Hinweis für Access-Anwender: In der Praxis ist eine gespeicherte Anfügeabfrage nach ihrer Ausführung vermutlich nutzlos. Man wird deshalb eher zu einer allgeinen Form greifen, und statt der fixen Angaben im Tuple Parameter einsetzen, wie z. B. im Code zur Erstellung der Übungsdatenbank.


INSERT INTO abteilung( abt_nr, abt_name, ort )
VALUES ( [@abt_nr], [@abt_name], [@ort] )



Zurück zur Übersicht