Syntax in SQL-Einfügungsabfragen. SQL-Abfrage INSERT INTO – Füllen Sie die Datenbank mit Informationen. SQL INSERT INTO SELECT, Syntax

Die SQL-Abfrage INSERT INTO ist sinnvoll, wenn eine Datenbanktabelle erstellt wurde. Das heißt, die Tabelle existiert, hat einen Namen, erstellte Zeilen und Spalten. Die Tabelle wird vom Operator erstellt: , die Tabelle wird vom Operator geändert.

SQL-Abfrage INSERT INTO – Abfragesyntax

Die SQL-Abfrage INSERT INTO hat die folgende Syntax:

INSERT INTO Tabellenname (fügen Sie bei Bedarf in Klammern eine Liste der Spalten ein, in die Sie Daten einfügen möchten) VALUES eingefügte Daten1, eingefügte Daten2, eingefügte Daten3.

Sie können zwischen INSERT und INTRO eine IGNORE-Option einfügen. Es ist nicht notwendig. Wird benötigt, um Primärschlüssel beim Bearbeiten einer Tabelle zu schützen. Andernfalls bleibt beim Einfügen der Option IGNORE die erste Zeile mit dem Primärschlüssel in der bearbeiteten Tabelle erhalten, wenn es zu einer Duplizierung von Primärschlüsseln kommt. Andere Primärschlüssel werden gelöscht. Standardmäßig lassen wir diese Option weg.

Es gibt optionale Optionen LOW_PRIORITY und DELAYED. Sie legen die Prioritäten für das Hinzufügen von Informationen zur Datenbank fest. Die erste gibt das Warten auf die Freigabe der Datenbank an, die zweite bedeutet das Puffern von Informationen.

Die Zeile in der Abfrage: INSERT mit der Phrase VALUES ermöglicht es Ihnen, eine einzelne Zeile zur Datenbanktabelle hinzuzufügen. Die VALUES-Klausel enthält die Werte dieser Daten.

Anstelle der VALUES-Angabe können Unterabfragen angegeben werden. INSERT mit einer Unterabfrage fügt der Tabelle die von der Unterabfrage zurückgegebenen Zeilen hinzu. Der Datenbankserver verarbeitet die Unterabfrage und fügt alle zurückgegebenen Zeilen in die Tabelle ein. Der Server fügt keine Zeilen ein, es sei denn, die Unterabfrage wählt sie aus.

  • subquery_1 – eine Unterabfrage, die der Server auf die gleiche Weise wie die Ansicht verarbeitet
  • subquery_2 ist eine Unterabfrage, die in die Tabelle eingefügte Zeilen zurückgibt. Die Liste dieser Unterabfrage muss die gleiche Anzahl von Spalten haben wie die INSERT-Spaltenliste.

Unterabfragen werden in einer MySQL-Datenbank praktisch nicht verwendet.

Beispiele für SQL-Abfragen INSERT INTO in einer MySQL-Datenbank

Mit dem Befehl INSERT INTRO fügen wir neue Zeilen in die MySQL-Datenbank ein.

Erstes Beispiel.

Fügen Sie neue Zeilen in die Tabelle Tabellenname ein.

INSERT INTO table_name VALUES ('2′,'145′,'1′,'name');

Das bedeutet, dass wir die Werte 2,145,1,name in die Tabellenspalten tabellenname einfügen wollen. Da die Spalten nicht angegeben sind, werden die Werte in alle Spalten der Tabelle eingetragen.

Beispiel zwei.

Fügen Sie Informationen in die erforderlichen (angegebenen) Spalten der Tabelle „table_name“ ein.

INSERT INTO table_name (client_customer, client_subclient, client_mail) VALUES ('name1','subname1',' [email protected]′), (‘name2′,’subname2′,’ [email protected]′), (‘name3′,’subname3′,(’ [email protected]′);

Igor Serov speziell für die Seite „“.

In den vorherigen Abschnitten haben wir uns mit der Arbeit beim Abrufen von Daten aus vorab 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 in SQL Es gibt Betreiber wie: ERSTELLEN- erstellt eine Tabelle, ÄNDERN- ändert die Tabellenstruktur, FALLEN- löscht eine Tabelle oder ein Feld, EINFÜGEN- Fügt Daten zur Tabelle hinzu. Beginnen wir mit der Bekanntschaft mit dieser Gruppe von Operatoren vom Betreiber EINFÜGEN.

1. Ganze Zeilen hinzufügen

Wie der Name schon sagt, der Betreiber EINFÜGEN Wird zum Einfügen (Anhängen) von Zeilen in eine Datenbanktabelle verwendet. Das Hinzufügen kann auf verschiedene Arten erfolgen:

  • - Fügen Sie eine vollständige Zeile hinzu
  • - Teil einer Zeile hinzufügen
  • - Abfrageergebnisse hinzufügen.

Um also einer Tabelle eine neue Zeile hinzuzufügen, müssen wir den Tabellennamen angeben, die Spaltennamen auflisten und den Wert für jede Spalte mithilfe des Konstrukts angeben EINFÜGEN IN Tabellenname (Feld1, Feld2 ...) WERTE (Wert1, Wert2...). Schauen wir uns ein Beispiel an.

IN DIE WERTE DER VERKÄUFER (ID, Adresse, Stadt, Verkäufername, Land) EINFÜGEN(„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 ändern WERTE.

2. Einen Teil der Zeilen hinzufügen

Im vorherigen Beispiel bei Verwendung des Operators EINFÜGEN Wir haben die Tabellenspaltennamen explizit markiert. Mit dieser Syntax können wir einige Spalten überspringen. Das bedeutet, dass Sie für einige Spalten Werte eingeben, für andere jedoch keine Werte bereitstellen. Zum Beispiel:

IN DIE WERTE DER VERKÄUFER (ID, Stadt, VERKÄUFERNAME) EINFÜGEN(„6“, „Los Angeles“, „Harry Monroe“)

In diesem Beispiel haben wir keinen Wert für zwei Spalten angegeben Adresse Und Land. Sie können einige Spalten aus der Anweisung ausschließen EINFÜGEN IN, sofern dies die Tabellendefinition zulässt. In diesem Fall muss eine der Bedingungen erfüllt sein: Diese Spalte ist als gültig definiert NULL(Fehlen eines Werts) oder der angegebene Standardwert in der Tabellendefinition. Das heißt, wenn kein Wert angegeben wird, wird der Standardwert verwendet. Wenn Ihnen eine Spalte in einer Tabelle fehlt, in deren Zeilen keine Werte angezeigt werden können NULL und kein Standardwert definiert ist, generiert das DBMS eine Fehlermeldung und die Zeile wird nicht hinzugefügt.

3. Ausgewählte Daten hinzufügen

Im vorherigen Beispiel haben wir Daten in Tabellen eingefügt, indem wir sie manuell in die Abfrage eingegeben haben. Allerdings der Betreiber EINFÜGEN IN ermöglicht es uns, diesen Prozess zu automatisieren, wenn wir Daten aus einer anderen Tabelle einfügen möchten. Zu diesem Zweck gibt es in SQL eine solche Konstruktion wie EINFÜGEN IN ... AUSWÄHLEN .... Dieses Design ermöglicht es Ihnen, gleichzeitig Daten aus einer Tabelle auszuwählen und in eine andere einzufügen. Nehmen wir an, wir haben einen anderen Tisch Verkäufer_EU mit einer Liste der Verkäufer unserer Waren in Europa und wir müssen sie zur allgemeinen Tabelle hinzufügen Verkäufer. Die Struktur dieser Tabellen ist dieselbe (gleiche Spaltenanzahl und gleiche Namen), aber die Daten sind unterschiedlich. Dazu können wir die folgende Abfrage schreiben:

EINFÜGEN IN Verkäufer (ID, Adresse, Stadt, Verkäufername, Land) AUSWÄHLENID, Adresse, Stadt, Verkäufername, Land VON Sellers_EU

Sie müssen darauf achten, dass sich die Werte interner Schlüssel nicht wiederholen (Feld AUSWEIS), sonst kommt es zu einem Fehler. Operator WÄHLEN kann auch Anregungen enthalten WO um Daten zu filtern. Es ist auch zu beachten, dass das DBMS nicht auf die Namen der in der Anweisung enthaltenen Spalten achtet WÄHLEN Wichtig ist ihr nur die Reihenfolge, in der sie angeordnet sind. Daher sind die Daten in der ersten angegebenen Spalte, die aufgrund ausgewählt wurde WÄHLEN, wird in jedem Fall in die erste Spalte der Tabelle eingetragen Verkäufer, angegeben nach dem Operator EINFÜGEN IN, 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 einer Tabelle zu erstellen, stellt SQL eine separate Anweisung bereit AUSWÄHLEN IN. Beispielsweise müssen wir eine Kopie der Tabelle erstellen Verkäufer, müssen Sie die Anfrage wie folgt schreiben:

SELECT * INTO Sellers_new FROM Sellers

Im Gegensatz zum vorherigen Design EINFÜGEN IN ... AUSWÄHLEN ... Wenn Daten zu einer vorhandenen Tabelle hinzugefügt werden, kopiert der Entwurf die Daten in die neue Tabelle. Man kann auch sagen, dass das erste Konstrukt Daten importiert und das zweite exportiert. Bei Verwendung des Designs WÄHLEN ... IN ... VON ... Folgendes sollte berücksichtigt werden:

  • - Sie können im Operator beliebige Sätze verwenden WÄHLEN, sowie GRUPPIERE NACH Und HABEN
  • - Sie können einen Join 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.

Team fügt der Tabelle Zeilen hinzu oder Haupttabellenansicht.

SQL-INSERT-Befehlssyntax

Befehlssyntax einfügen


Grundlegende Schlüsselwörter und Parameter des INSERT-Befehls
  • Schema– Berechtigungskennung, die normalerweise mit dem Namen eines Benutzers übereinstimmt
  • Tabellenansicht- der Name der Tabelle, in die die Zeilen eingefügt werden sollen; Wenn eine Ansicht angegeben ist, werden die Zeilen in die Haupttabelle der Ansicht eingefügt
  • Unterabfrage_1– eine Unterabfrage, die der Server auf die gleiche Weise wie eine Ansicht verarbeitet
  • Spalte- eine Tabellen- oder Ansichtsspalte, in die für jede eingefügte Zeile der Wert aus der Phrase eingetragen wird WERTE oder Unterabfrage; Wenn eine der Spalten der Tabelle in dieser Liste weggelassen wird, ist der Spaltenwert für die eingefügte Zeile der Standardspaltenwert, der beim Erstellen der Tabelle definiert wurde. Wenn eine Spaltenliste vollständig weggelassen wird, ist die Klausel WERTE oder die Abfrage muss Werte für alle Spalten in der Tabelle ermitteln
  • WERTE- definiert eine Wertefolge, die in die Tabelle oder Ansicht eingefügt wird; Die Bedeutung muss im Satz definiert werden WERTE für jede Spalte in der Spaltenliste
  • Unterabfrage_2– eine Unterabfrage, die in die Tabelle eingefügte Zeilen zurückgibt; Die Auswahlliste dieser Unterabfrage muss die gleiche Anzahl von Spalten haben wie die Anweisungsspaltenliste

Stellungnahme mit dem Satz WERTE Fügt der Tabelle eine einzelne Zeile hinzu. Diese Zeile enthält die durch die Phrase definierten Werte WERTE.
Aussage mit Unterabfrage statt einer Phrase WERTE Fügt alle von der Unterabfrage zurückgegebenen Zeilen zur Tabelle hinzu. Der Server verarbeitet Unterabfrage und fügt jede zurückgegebene Zeile in die Tabelle ein. Wenn die Unterabfrage keine Zeilen auswählt, fügt der Server keine Zeilen in die Tabelle ein.
Unterabfrage kann auf jede Tabelle oder Ansicht zugreifen, einschließlich der Ziel-Assertionstabelle . Der Server weist Feldern in neuen Zeilen Werte zu, basierend auf der internen Position der Spalten in der Tabelle und der Reihenfolge der Phrasenwerte WERTE oder in der Abfrageauswahlliste. Fehlen Spalten in der Spaltenliste, weist ihnen der Server die beim Erstellen der Tabelle definierten Standardwerte zu. Wenn eine dieser Spalten eine NOT NULL-Einschränkung aufweist, gibt der Server einen Fehler zurück, der darauf hinweist, dass die Einschränkung verletzt wurde, und bricht die INSERT-Anweisung ab.
Wenn eine INSERT-Anweisung ausgegeben wird, wird jeder für die Tabelle definierte INSERT-Trigger aktiviert.

IN Beispiel 1 EINFÜGEN

EINFÜGEN IN Abt WERTE(50, „PRODUKTE“, „SAN FRANCISCO“);

EINFÜGEN IN Kunden (Stadt, Cname, Cnum) WERTE(„London“, „Hoffman“, 2001);

IN Beispiel 2 EINFÜGEN
Der folgende Befehl kopiert die Daten von Firmenmitarbeitern, deren Provisionen 25 % des Einkommens übersteigen, in die Bonustabelle:

EINFÜGEN IN Bonus SELECT E-Mail, Job, Sal, Komm FROM emp WHERE Komm > 0,25 * Sal;

IN Beispiel 3 EINFÜGEN
Wenn Sie einfügen müssen NULL-Wert, müssen Sie ihn wie folgt als Normalwert angeben:

EINFÜGEN IN Verkäufer VALUES (1001,'Peel',NULL,12);

IN Beispiel 4 EINFÜGEN
Mit dem Befehl können Werte aus einer Tabelle abgerufen und per Abfrage in einer anderen abgelegt werden. Dazu genügt es, den Satz zu ersetzen WERTE zur entsprechenden Anfrage:

EINFÜGEN IN Londonstaff SELECT * FROM Salespeople WHERE city = 'London';

MySQL-INSERT

Um neue Zeilen in eine MySQL-Datenbank einzufügen, verwenden Sie INSERT-Befehl, Befehlsbeispiele sind unten angegeben:
IN Beispiel 1 EINFÜGEN.
Einfügen einer neuen Zeile in die Tabelle Tabellenname.

EINFÜGEN IN

IN Beispiel 2 EINFÜGEN.
Einfügen einer neuen Zeile in die Tabelle Tabellenname, die das Einfügen von Daten in die von uns benötigten Spalten angibt.

EINFÜGEN IN Tabellenname VALUES('1','165','0','name');

In der Datenbank MySQL Es ist möglich, mit einem Befehl mehrere neue Zeilen einzufügen.
IN Beispiel 3 EINFÜGEN.
Einfügen mehrerer Zeilen in die Tabelle Tabellenname.

EINFÜGEN IN Tabellenname (tbl_id, chislo, chislotwo, Name) VALUES ('1′,'159′,'34','name1′), ('2′,'14','61','name2′), ('3 ′,'356′,'8′,'name3');

Mithilfe von SQL können Sie Informationen von einer Tabelle in eine andere kopieren.

Die INSERT INTO SELECT-Anweisung kopiert Daten aus einer Tabelle und fügt sie in eine vorhandene Tabelle ein.

SQL INSERT INTO SELECT-Anweisung,

Die INSERT INTO SELECT-Anweisung wählt Daten aus einer Tabelle aus und fügt sie in eine vorhandene Tabelle ein. Eventuell vorhandene Zeilen in der Zieltabelle werden nicht geändert.

SQL INSERT INTO SELECT, Syntax

Wir können alle Spalten von einer Tabelle in eine andere, vorhandene Tabelle kopieren:

EINFÜGEN IN Tabelle 2
WÄHLEN AUS Tabelle 1;

Oder wir können nur die gewünschten Spalten in eine andere, vorhandene Tabelle kopieren:

EINFÜGEN IN Tabelle 2
(Spaltenname(n))
WÄHLEN Spaltenname(n)
AUS Tabelle 1;

Demoversion der Datenbank

In diesem Tutorial verwenden wir die bekannte Northwind-Datenbank.

Nachfolgend finden Sie eine Auswahl aus der Tabelle „Kunden“:

Benutzer-IDName des KundenKontaktpersonAdresseStadtPLZEin Land
1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Deutschland
2 Ana Trujillo emparedados y helados Ana Trujillo Avda. de la Constitucion 2222 Mexiko df. 05021 Mexiko
3 Antonio Moreno Taqueria Antonio Moreno Mataderos 2312 Mexiko df. 05023 Mexiko

Und die Auswahl aus der Tabelle „Lieferanten“:

SQL INSERT INTO SELECT, Beispiele

Kopieren nur einiger Spalten von „Lieferanten“ nach „Kunden“:

Kopieren nur deutscher Lieferanten in „Kunden“.

Letzte Aktualisierung: 13.07.2017

Um Daten hinzuzufügen, verwenden Sie den Befehl INSERT, der die folgende formale Syntax hat:

INSERT Tabellenname [(Spaltenliste)] VALUES (Wert1, Wert2, ... WertN)

Zuerst kommt der INSERT INTO-Ausdruck, dann können Sie in Klammern eine durch Kommas getrennte Liste von Spalten angeben, zu denen Daten hinzugefügt werden sollen, und am Ende, nach dem Wort VALUES, werden die Werte aufgelistet, die für die Spalten hinzugefügt werden sollen Klammern.

Angenommen, die folgende Datenbank wurde zuvor erstellt:

DATENBANK ERSTELLEN productsdb; GO USE productsdb; CREATE TABLE Products (Id INT IDENTITY PRIMARY KEY, ProductName NVARCHAR(30) NOT NULL, Manufacturer NVARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Price MONEY NOT NULL)

Fügen wir mit dem INSERT-Befehl eine Zeile hinzu:

WERTE DER PRODUKTE EINFÜGEN („iPhone 7“, „Apple“, 5, 52000)

Nach erfolgreicher Ausführung im SQL Server Management Studio sollte im Meldungsfeld die Meldung „1 Zeile(n) betroffen“ erscheinen:

Es ist zu bedenken, dass die Werte für die Spalten in Klammern nach dem Schlüsselwort VALUES in der Reihenfolge übergeben werden, in der sie deklariert werden. In der obigen CREATE TABLE-Anweisung können Sie beispielsweise sehen, dass die erste Spalte die ID ist. Da dafür aber das IDENTITY-Attribut angegeben ist, wird der Wert dieser Spalte automatisch generiert und kann weggelassen werden. Die zweite Spalte stellt ProductName dar, sodass der erste Wert, die Zeichenfolge „iPhone 7“, an diese Spalte übergeben wird. Der zweite Wert – die Zeichenfolge „Apple“ – wird an die dritte Spalte „Hersteller“ usw. übergeben. Das heißt, die Werte werden wie folgt an die Spalten übergeben:

    Produktname: „iPhone 7“

    Hersteller: „Apple“

Außerdem können Sie bei der Eingabe von Werten die unmittelbaren Spalten angeben, zu denen die Werte hinzugefügt werden:

IN Produkte (Produktname, Preis, Hersteller) WERTE EINFÜGEN („iPhone 6S“, 41000, „Apple“)

Hier wird der Wert nur für drei Spalten angegeben. Außerdem werden die Werte nun in der Reihenfolge der Spalten übertragen:

    Produktname: „iPhone 6S“

    Hersteller: „Apple“

Für nicht spezifizierte Spalten (in diesem Fall ProductCount) wird ein Standardwert hinzugefügt, wenn das DEFAULT-Attribut angegeben ist, oder ein NULL-Wert. Allerdings müssen nicht angegebene Spalten NULL-Werte zulassen oder über ein DEFAULT-Attribut verfügen.

Wir können auch mehrere Zeilen gleichzeitig hinzufügen:

IN PRODUKTWERTE EINFÜGEN („iPhone 6“, „Apple“, 3, 36000), („Galaxy S8“, „Samsung“, 2, 46000), („Galaxy S8 Plus“, „Samsung“, 1, 56000)

In diesem Fall werden der Tabelle drei Zeilen hinzugefügt.

Außerdem können wir beim Hinzufügen mit dem Schlüsselwort DEFAULT angeben, dass die Spalte einen Standardwert oder einen NULL-Wert haben soll:

INSERT INTO Products (ProductName, Manufacturer, ProductCount, Price) VALUES („Mi6“, „Xiaomi“, DEFAULT, 28000)

In diesem Fall wird der Standardwert für die Spalte „ProductCount“ verwendet (falls festgelegt, andernfalls NULL).

Wenn alle Spalten über ein DEFAULT-Attribut verfügen, das einen Standardwert angibt, oder nullable sind, können Sie Standardwerte für alle Spalten einfügen:

IN PRODUKTE STANDARDWERTE EINFÜGEN

Nehmen wir aber die Tabelle Products, dann schlägt ein solcher Befehl mit einem Fehler fehl, da mehrere Felder nicht über das DEFAULT-Attribut verfügen und gleichzeitig den NULL-Wert nicht zulassen.