INSERT INTO VALUES()-Anweisung

Wir haben herausgefunden, wie man Tabellen erstellt. Schauen wir uns nun genauer an, wie man mithilfe einer SQL-Abfrage Daten zu einer Tabelle hinzufügt.

Tatsächlich ist dies sehr einfach, es gibt jedoch mehrere Nuancen. Die einfachste Möglichkeit zum Einfügen von Daten in eine Tabelle erfordert die Angabe von zwei Dingen:

  • Spaltennamen
  • Spaltenwerte (Daten)

Spaltennamen müssen angegeben werden, da Spalten sehr oft Standardwerte haben, die beim Einfügen von Daten nicht angegeben werden. Und normalerweise hat jede Tabelle mindestens eine solche Spalte, zum Beispiel die Zeilen-ID.

Die allgemeine Form der Abfrage zum Einfügen von Daten in eine Tabelle sieht folgendermaßen aus:

INSERT INTO table (column1, column2, column3) VALUES
    (value1, value2, value3),
    (value1, value2, value3),
    (value1, value2, value3);

Wenn Sie beispielsweise einen neuen Datensatz in die Benutzertabelle einfügen möchten, würde die Abfrage so aussehen:

INSERT INTO user (name, level, created_time) VALUES
	('Rabinovich', 5, ‘2022-06-06’);

INSERT INTO SELECT-Anweisung

Ein weiteres häufiges Szenario zum Einfügen von Daten in eine Tabelle besteht darin, sie aus einer anderen Tabelle, einem Schema oder sogar einem DBMS zu übernehmen.

Dazu gibt es ein weiteres INSERT INTO-Abfrageformat, in dem Sie anstelle des VALUES-Teils eine Abfrage zur Datenauswahl angeben können.

Die allgemeine Form einer solchen Anfrage ist:

INSERT INTO table (column1, column2, column3)
SELECT-request;

Schreiben wir eine Abfrage, die alle Benutzer aus der Mitarbeitertabelle zur Benutzertabelle hinzufügt:

INSERT INTO user (name, created_time)
   SELECT employee.name, employee.join_date
   FROM employee;

Wir haben verschiedene Daten in der Mitarbeitertabelle, aber daraus wählen wir nur zwei Felder aus – den Namen und die Ankunftszeit im Unternehmen.

Außerdem müssen Sie in der Benutzertabelle die Benutzerebene angeben – Ebene. Mitarbeiter haben in der Mitarbeitertabelle keine Ebene, daher nutzen wir die Tatsache, dass die Benutzertabelle einen Standardwert für das Ebenenfeld hat. Wir geben einfach nicht die Ebene an und SQL legt den Standardwert fest.

Angenommen, wir sind mit dem Standardwert nicht zufrieden und möchten, dass die Ebene 99 beträgt, und user.created_time durch das heutige Datum ersetzen, dann können wir Folgendes schreiben:

INSERT INTO user (name, level, created_time)
   SELECT employee.name, 99, CURDATE()
   FROM employee;

Es könnte noch viel mehr getan werden, aber ich denke, das wird vorerst ausreichen. Weitere Informationen finden Sie auf der offiziellen MySQL-Seite.