Die SQL INSERT INTO Anweisung fügt neue Zeilen in die ausgewählte Tabelle ein.

INSERT INTO Tabelle (Spalte1, Spalte2, …) 
VALUES (Wert1, Wert2, …); 
SQL INSERT INTO Beispiel

SQL INSERT INTO wählt in (Spalte1, Spalte2, …) die Spalten aus, in denen Werte eingetragen werden sollen. Nach VALUES werden die Werte für die Spalten der Reihenfolge nach eingesetzt. Die Eingabe der eingeklammerten Spalten ist optional. 

Sollen in allen Spalten Werte eingesetzt werden, ist es nicht notwendig, die Spalten zu benennen. Die Werte werden der Reihenfolge der Tabelle nach eingefügt.

Für den Fall, dass Werte unbekannt sind, kann man NULL-Werte einfügen. Das bedeutet, für das Feld existieren keine Informationen.

SQL INSERT INTO - Beispiel

Unsere neue Mitarbeiterin Marie Marx soll in die Mitarbeiter-Tabelle eingepflegt werden. Wir haben ihren Vornamen, Nachnamen und ihre Telefonnummer. Leider fehlt uns ihr Geburtsdatum. Deswegen wählen wir auch nur die Spalten Vorname, Nachname und Telefonnummer aus:

INSERT INTO Mitarbeiter (Vorname, Nachname, Telefonnr) 
VALUES ('Marie', 'Marx', '01238483'); 

Da nur eine Spalte fehlt, sparen wir uns ein paar Buchstaben, indem wir die Spalten nicht spezifisch benennen. Wir fügen die Werte einfach der Reihenfolge der Spalten nach ein (Vorname – Nachname – Geburtsdatum – Telefonnr). Da wir Geburtsdatum nicht kennen, setzen wir NULL ein.

INSERT INTO Mitarbeiter 
VALUES ('Marie', 'Marx', NULL, '01238483'); 

SQL INSERT INTO SELECT - Subqueries

Um das Ergebnis einer Abfrage in eine neue Tabelle einzufügen, kann anstelle von VALUES(…) eine Subquery genutzt werden. Das bedeutet, in die Tabelle werden die Ergebnisse einer zweiten Abfrage eingefügt. Das eignet sich in der Regel um Daten aus einer Tabelle in eine andere zu übertragen.

Die INSERT INTO … SELECT Anweisung kopiert Daten aus einer Tabelle und fügt sie in eine andere, bestehende Tabelle ein. Es wird vorausgesetzt, dass die Datentypen der Spalten in beiden Tabellen übereinstimmen. Wenn nicht alle Spalten der Tabelle kopiert werden soll, kann man sowohl nach dem INSERT- als auch nach dem SELECT spezifisch Spalten auswählen. Die nicht-übertragenen Spalten sind in der neuen Tabelle NULL.

INSERT INTO Zieltabelle (Neuer_Spaltenname1, Neuer_Spaltenname2, ...)
  SELECT Spalte1, Spalte2, Spalte3 
  FROM Quelltabelle
  WHERE Bedingung; 

SQL INSERT INTO SELECT - Beispiel

Ein Onlinehändler möchte seine Zielgruppe aus Deutschland genauer analysieren. Er plant sehr viele Abfragen zu tätigen. Ständig eine „WHERE Land = ‘DE’“ Bedingung hinzuzufügen und Abfragen in einer bereits sehr großen Datenbank auszuführen, ist ihm zu zeitintensiv. Daher kam er auf die Idee, eine eigene Tabelle für Kunden aus Deutschland zu erstellen:

INSERT INTO Kunden_Deutschland
  SELECT * 
  FROM Kunden 
  WHERE Land = 'Deutschland';  

In der Subquery SELECT * FROM Kunden WHERE Land = ‘DE’ werden alle notwendigen Zeilen ausgewählt. In der äußeren Abfrage, werden diese ausgewählten Daten via INSERT INTO in die Kunden_Deutschland Tabelle eingefügt.

ARTIKEL TEILEN

Hast du Fragen? Hinterlasse einen Kommentar!