TOP

SQL-Lektion 13. Daten hinzufügen (INSERT INTO)

In den vorherigen Abschnitten haben wir uns mit der Arbeit des Abrufens von Daten aus zuvor erstellten Tabellen befasst. Jetzt ist es an der Zeit herauszufinden, wie wir Tabellen erstellen/löschen, neue Datensätze hinzufügen und alte löschen können.

Für diese Zwecke gibt es in SQL solche Operatoren wie:

  • CREATE – erstellt eine Tabelle;
  • ALTER – ändert die Struktur der Tabelle;
  • DROP – löscht eine Tabelle oder ein Feld;
  • INSERT – fügt Daten zur Tabelle hinzu.
  • Beginnen wir mit dem INSERT-Operator, um uns mit dieser Gruppe von Operatoren vertraut zu machen.


    1. Ganze Zeilen hinzufügen

    Wie der Name schon sagt, wird der Operator INSERT INTO zum Einfügen (Hinzufügen) von Zeilen in eine Datenbanktabelle verwendet.

    Das Hinzufügen kann auf verschiedene Arten erfolgen:

  • eine vollständige Zeile hinzufügen;
  • Teil einer neuen Zeile hinzufügen;
  • Abfrageergebnisse hinzufügen.
  • Um der Tabelle eine neue Zeile hinzuzufügen, müssen wir also den Tabellennamen angeben, die Spaltennamen auflisten und die Werte für jede Spalte angeben, indem wir INSERT INTO table_name(field1, field2 ...) VALUES (value1, value2 ...) konstruieren. Betrachten wir ein Beispiel.

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
    VALUES ('6', '1st Street', 'Los Angeles', 'Harry Monroe', 'USA')
    

    Sie können auch die Reihenfolge der Spaltennamen ändern, müssen jedoch gleichzeitig die Reihenfolge der Werte im Parameter VALUES ändern.

    2. Einen Teil der Zeilen hinzufügen

    Im vorherigen Beispiel haben wir bei Verwendung des Operators INSERT explizit die Namen der Tabellenspalten angegeben. Mit dieser Syntax können wir einige Spalten überspringen. Das bedeutet, dass Sie für einige Spalten Werte eingeben und für andere nicht bereitstellen. Beispiel:

    INSERT INTO Sellers (ID, City, Seller_name) 
    VALUES ('6', 'Los Angeles', 'Harry Monroe')
    

    In diesem Beispiel haben wir keine Werte für die beiden Spalten Address und Country angegeben. Sie können einige Spalten aus der aaa-Anweisung ausschließen, wenn Sie damit die Tabelle definieren können. In diesem Fall muss eine der folgenden Bedingungen erfüllt sein: Diese Spalte ist so definiert, dass sie einen Nullwert zulässt (kein Wert vorhanden) oder in der Tabellendefinition ist ein Standardwert angegeben. Das heißt, wenn kein Wert angegeben wird, wird der Standardwert verwendet. Wenn Sie eine Spalte aus einer Tabelle weglassen, die das Erscheinen von NULL-Werten in ihren Zeilen nicht zulässt und für die kein Wert für die Standardverwendung definiert ist, gibt das DBMS eine Fehlermeldung aus und die Zeile wird nicht hinzugefügt.

    3. Ausgewählte Daten hinzufügen

    In den vorherigen Beispielen haben wir Daten in die Tabelle eingefügt und sie manuell in die Abfrage geschrieben. Mit dem Operator INSERT INTO können wir diesen Vorgang jedoch automatisieren, wenn wir Daten aus einer anderen Tabelle einfügen möchten. Dafür gibt es in SQL eine solche Konstruktion wie INSERT INTO ... SELECT ... . Dieses Design ermöglicht es Ihnen, gleichzeitig Daten aus einer Tabelle auszuwählen und in eine andere einzufügen. Angenommen, wir haben eine weitere Tabelle Sellers_EU mit einer Liste der Verkäufer unseres Produkts in Europa und müssen diese zur allgemeinen Tabelle Sellers hinzufügen. Die Struktur dieser Tabellen ist dieselbe (gleiche Spaltenanzahl und gleiche Namen), aber die Daten sind unterschiedlich. Dazu können wir die folgende Abfrage schreiben:

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
                 SELECT ID, Address, City, Seller_name, Country 
                 FROM Sellers_EU
    

    Es ist darauf zu achten, dass sich die Werte der internen Schlüssel nicht wiederholen (ID-Feld), da sonst ein Fehler auftritt. Die SELECT-Anweisung kann auch eine WHERE-Klausel zum Filtern von Daten enthalten. Es sollte auch beachtet werden, dass das DBMS nicht auf die Namen der im Operator SELECT enthaltenen Spalten achtet, sondern nur auf die Reihenfolge ihrer Position. Daher werden die Daten in der ersten angegebenen Spalte, die über SELECT ausgewählt wurde, in jedem Fall in die erste Spalte der Tabelle Sellers gefüllt, die nach dem Operator INSERT INTO angegeben ist, unabhängig vom Feldnamen.

    4. Daten von einer Tabelle in eine andere kopieren

    Bei der Arbeit mit Datenbanken besteht häufig die Notwendigkeit, Kopien beliebiger Tabellen zu Sicherungs- oder Änderungszwecken zu erstellen. Um eine vollständige Kopie der Tabelle in SQL zu erstellen, wird ein separater Operator SELECT INTO bereitgestellt. Zum Beispiel müssen wir eine Kopie der Tabelle Sellers erstellen und die Abfrage wie folgt schreiben:

    SELECT * INTO Sellers_new 
    FROM Sellers
    

    Im Gegensatz zur vorherigen Konstruktion INSERT INTO ... SELECT ... kopiert die Konstruktion SELECT ... INTO ... FROM ... beim Hinzufügen von Daten zu einer vorhandenen Tabelle Daten in eine neue Tabelle. Man kann auch sagen, dass die erste Konstruktion Daten importiert und die zweite sie exportiert.

    Bei der Verwendung der Konstruktion SELECT ... INTO ... FROM ... ist Folgendes zu beachten:

  • Sie können beliebige Klauseln in der SELECT-Anweisung verwenden, z. B. GROUP, BY und HAVING;
  • Sie können eine Union verwenden, um Daten aus mehreren Tabellen hinzuzufügen.
  • Daten können nur zu einer Tabelle hinzugefügt werden, unabhängig davon, aus wie vielen Tabellen sie entnommen wurden.