Im vorherigen Artikel haben wir zwei Tabellen erstellt, und jetzt können wir den Befehl SQL INSERT INTO TABLE verwenden und diese Tabellen mit Daten füllen. Um dies zu tun, bereiten wir Anweisungen in Excel vor und fügen diese Anweisungen dann in SQL Server ein und führen sie aus. Wir werden auch den Inhalt beider Tabellen vor und nach diesen Befehlen mit der SELECT-Anweisung überprüfen. Also, fangen wir an.
INSERT INTO TABLE Anweisung
Es macht keinen Sinn, Datenbankstrukturen zu erstellen und keine Daten in der Datenbank zu haben. Die INSERT INTO TABLE-Anweisung ist die, die wir verwenden werden, um dieses Problem zu lösen. Es ist eine der vier wichtigen SQL DML-Anweisungen (Data Manipulation Language) SELECT … FROM , INSERT INTO TABLE, UPDATE … SET und DELETE FROM… Die vollständige Syntax ist ziemlich komplex, da INSERT INTO auch eine sehr komplexe Anweisung sein kann. Bitte schauen Sie sich hier die vollständige Syntax von T-SQL INSERT INTO TABLE an .
In diesem Artikel verwenden wir eine vereinfachte, aber auch gebräuchlichste Syntax:
INSERT INTO table_name (column_list) VALUES (column_values);
In einer solchen INSERT INTO-Anweisung müssen Sie den Tabellennamen definieren, in den Sie Daten einfügen, alle Spalten auflisten (vielleicht verwenden Sie alle, aber vielleicht nur einige) und dann alle Werte auflisten. Beachten Sie, dass Spaltenwerte mit der Definition des Spaltentyps übereinstimmen sollten (z. B. können Sie keinen Textwert in die numerische Spalte / das numerische Attribut einfügen).
Wenn Sie alle Werte in die Tabelle einfügen, müssen Sie nicht alle Spalten nach dem Tabellennamen auflisten und Sie können eine noch vereinfachte Syntax verwenden:
INSERT INTO table_name VALUES (column_values);
Ich persönlich bevorzuge es, alle Spaltennamen aufzulisten, da dieser Ansatz auch dann funktionieren würde, wenn wir der vorhandenen Tabelle neue Spalten hinzufügen.
-
Hinweis: Die INSERT INTO TABLE-Anweisung kann so geschrieben werden, dass mehrere Zeilen mit 1 Anweisung eingefügt oder sogar mit der SELECT-Anweisung kombiniert werden.
Die vereinfachte Syntax für einen solchen Fall, in dem INSERT- und SELECT-Anweisungen kombiniert werden, ist unten angegeben:
INSERT INTO destination_table (column_list, …)
SELECT column_list
FROM source_table
WHERE condition;
INSERT INTO TABLE example
Bevor wir etwas tun, überprüfen wir, was in unseren Tabellen gespeichert ist. Dies ist das Modell, das wir im vorherigen Artikel erstellt haben. Sie können sehen, dass wir eine Tabelle haben, in der wir Daten zu Ländern und eine andere zu Städten speichern. Sie sind auch miteinander verwandt, aber wir werden darüber im folgenden Artikel sprechen:
Um den Inhalt dieser beiden Tabellen zu überprüfen, verwenden wir zwei einfache SELECT-Anweisungen:
1
2
|
WÄHLEN SIE * AUS Land;
WÄHLEN SIE * AUS Stadt;
|
Obwohl SELECT nicht das Thema dieses Artikels ist, sollte erwähnt werden, dass die grundlegende Syntax lautet:
SELECT 1 or more attributes FROM table;
Der Stern (*) nach SELECT repräsentiert, dass wir die Werte aller Attribute / Spalten aus dieser Tabelle im Abfrageergebnis anzeigen möchten.
Diese beiden Tabellen enthalten erwartungsgemäß nichts, und SQL Server gibt das Ergebnis zurück, wie in der Abbildung unten gezeigt. Anweisungen geben die Namen der Spalten aus den Tabellen zurück, die wir in der SELECT-Abfrage verwendet haben, aber unter diesen Spaltennamen befindet sich nichts. Sie können dies als leere Excel-Tabelle mit definierten Spaltennamen (Überschriften) betrachten. Sie wissen, welche Art von Daten dort sein sollten, aber es gibt nichts:
Das müssen wir ändern.
Zuerst füllen wir die Country-Tabelle mit den folgenden INSERT INTO TABLE-Anweisungen:
1
2
3
4
5
|
INSERT INTO country (country_name, country_name_eng, country_code) VALUES (‚Deutschland‘, ‚Germany‘, ‚DEU‘);
INSERT INTO country (country_name, country_name_eng, country_code) VALUES (‚Srbija‘, ‚Serbia‘, ‚SRB‘);
INSERT INTO country (country_name, country_name_eng, country_code) VALUES ( ‚Hrvatska‘, ‚Kroatien‘, ‚HRV‘);
INSERT INTO country (country_name, country_name_eng, country_code) VALUES (‚Vereinigte Staaten von Amerika‘, ‚Vereinigte Staaten von Amerika‘, ‚USA‘);
INSERT INTO country (country_name, country_name_eng, country_code) VALUES (‚Polska‘, ‚Poland‘, ‚POL‘);
|
Daten für fünf Länder wurden erfolgreich eingefügt. Das Ergebnis ist in der Abbildung unten dargestellt. Da wir 5 INSERT INTO TABLE Anweisungen hatten, haben wir 1 „(1 Zeile betroffen)“ Nachricht für jeden dieser fünf Befehle im Abschnitt „Nachrichten:
Bitte beachten Sie, dass alle Werte (nach den WERTEN) in der gleichen Reihenfolge angeordnet wurden, in der wir die Spalten aufgelistet haben (nach INSERT INTO country). Alle drei Werte sind Texte. Die Abfrage würde auch funktionieren, wenn wir sie nicht richtig angeordnet hätten, da alle denselben Datentyp (Text) haben, die Daten jedoch in den falschen Spalten gespeichert würden. In diesem Fall hätten wir einen semantischen Fehler.
Das nächste, was wir tun müssen, ist, die Stadttabelle zu füllen. Wir tun dies mit den folgenden Anweisungen:
1
2
3
4
5
6
|
INSERT INTO city (city_name, lat, long, country_id) WERTE (‚Berlin‘, 52.520008, 13.404954, 1);
INSERT INTO city (city_name, lat, long, country_id) WERTE (‚)‘, 44.787197, 20.457273, 2);
INSERT INTO city (city_name, lat, long, country_id) WERTE (‚)‘, 45.815399, 15.966568, 3);
INSERT INTO city (city_name, lat, long, country_id) WERTE (‚New York‘, 40.73061, -73.935242, 4);
INSERT INTO city (city_name, lat, long, country_id) WERTE (‚Los Angeles‘, 34.052235, -118.243683, 4);
INSERT INTO city (city_name, lat, long, country_id) WERTE (‚)‘, 52.237049, 21.017532, 5);
|
Nach der Ausführung dieser Anweisungen war dies das Ergebnis. Wie erwartet wurden 6 Zeilen hinzugefügt. Und noch einmal haben wir 1 Nachricht für jede Einfügung im Abschnitt Nachrichten:
In diesem Fall hätten wir ein Problem, wenn wir Werte nicht auf die gleiche Weise aufgelistet hätten, sondern Spalten aufgelistet hätten, weil ihre Datentypen nicht gleich sind (sie sind – in der Reihenfolge: Text, Dezimalzahl, Dezimalzahl, Ganzzahl). Diese Art von Fehler wird als Syntaxfehler bezeichnet, und das DBMS selbst würde verhindern, dass die Abfrage überhaupt ausgeführt wird.
SELECT – Check what was inserted
Jetzt überprüfen wir noch einmal, was in unseren Tabellen gespeichert ist. Wir verwenden die gleichen zwei SELECT-Anweisungen, die wir zuvor verwendet haben:
1
2
|
WÄHLEN SIE * AUS Land;
WÄHLEN SIE * AUS Stadt;
|
Das Ergebnis ist in der Abbildung unten dargestellt. Bitte beachten Sie, dass wir nach dem Ausführen von Abfragen jetzt die Abschnitte Ergebnisse und Nachrichten unter Abfragen haben:
Wir können daraus schließen, dass beide Tabellen in unserer Datenbank Daten enthalten, und jetzt sind wir bereit, mit etwas viel Coolerem zu „spielen“.
Mit Excel IN TABELLE EINFÜGEN
In vielen Fällen müssen Sie mehrere SQL-Anweisungen basierend auf dem Ihnen bereitgestellten Dataset ausführen. Dies gilt nicht nur für die Anweisung INSERT INTO TABLE, sondern auch für die Anweisungen UPDATE und DELETE. Es macht keinen Sinn, diese Anweisungen manuell einzugeben, aber Sie sollten lieber einen intelligenteren Ansatz wählen – bereiten Sie Formeln (oder ein Skript) vor, die diesen Teil automatisieren. In solchen Situationen bevorzuge ich Excel und Formeln.
Hinweis: Persönlich finde ich Excel im Kontext von Datenbanken sehr nützlich, wenn ich mehrere Anweisungen erstellen und Ergebnisse präsentieren und / oder Dashboards erstellen muss.
Schauen wir uns diese Formeln an:
Die Formel zum Einfügen des ersten Landes (Deutschland) lautet:
1
|
=“ INSERT INTO country (country_name, country_name_eng, country_code) WERTE (‚“ & B2 & „‚, ‚“ & C2 & „‚, ‚“ & D2 & „‚);“
|
Die Formel zum Einfügen der ersten Stadt (Berlin) lautet:
1
|
=“ INSERT INTO city (city_name, lat, long, country_id) WERTE (‚“ & B2 & „‚, “ & C2 & „, “ & D2 & „, “ & E2 & „);“
|
Fühlen Sie sich frei, diese Formeln zu verwenden, um Ihre Aufgaben zu automatisieren. Wir werden später einen ähnlichen Ansatz verwenden, wenn wir mehrere UPDATE- und DELETE-Anweisungen ausführen (und sogar beim Erstellen von SELECT-Anweisungen).
Fazit
In diesem Artikel haben wir eine der vier wichtigsten SQL–Anweisungen behandelt -INSERT INTO TABLE Anweisung. Wir haben es verwendet, um Tabellen zu füllen, die im vorherigen Artikel erstellt wurden. Dies war eine Voraussetzung, um zu intelligenteren Dingen überzugehen – wie der Datenbanktheorie und vor allem der Rückgabe von Ergebnissen aus unserer Datenbank.
Im kommenden Artikel werden wir über den Primärschlüssel sprechen – was er ist und warum er in den Datenbanken wichtig ist.
Inhaltsverzeichnis
SQL lernen: DATENBANK ERSTELLEN & Tabellenoperationen ERSTELLEN
SQL lernen: IN TABELLE EINFÜGEN
SQL lernen: Primärschlüssel
SQL lernen: Fremdschlüssel
SQL lernen: SELECT-Anweisung
SQL lernen: INNER JOIN vs LEFT JOIN
SQL lernen: SQL-Skripte
SQL lernen: Arten von Beziehungen
SQL lernen: Join multiple tables
SQL lernen: Aggregatfunktionen
SQL lernen: So schreiben Sie eine komplexe SELECT-Abfrage
SQL lernen: Die Datenbank INFORMATION_SCHEMA
SQL lernen: SQL-Datentypen
SQL lernen: Mengenlehre
SQL lernen: Benutzerdefinierte Funktionen
SQL lernen: Benutzerdefinierte gespeicherte Prozeduren
SQL lernen: SQL-Ansichten
SQL lernen: SQL-Trigger
SQL lernen: SQL-Abfragen üben
SQL lernen: Beispiele für SQL-Abfragen
Erfahren Sie SQL: Erstellen Sie einen Bericht manuell mit SQL-Abfragen
Erfahren Sie SQL: SQL Server-Datums- und Zeitfunktionen
Erfahren Sie SQL: Erstellen Sie SQL Server-Berichte mit Datums- und Zeitfunktionen
Erfahren Sie SQL: SQL Server-Pivot-Tabellen
SQL lernen: SQL Server-Export nach Excel
SQL lernen: Einführung in SQL Server-Schleifen
SQL lernen: SQL Server-Cursor
SQL lernen: SQL-Best Practices zum Löschen und Aktualisieren von Daten
SQL lernen: Namenskonventionen
SQL lernen: SQL-bezogene Jobs
SQL lernen: Nicht-Equi-Joins in SQL Server
SQL lernen: SQL Injection
SQL lernen: Dynamisches SQL
- Autor
- Neueste Beiträge
Seine früheren und gegenwärtigen Engagements reichen von Datenbankdesign und -codierung bis hin zu Lehre, Beratung und Schreiben über Datenbanken. Auch nicht zu vergessen, BI, Algorithmen erstellen, Schach, Philatelie, 2 Hunde, 2 Katzen, 1 Frau, 1 Baby…
Sie finden ihn auf LinkedIn
Alle Beiträge von Emil Drmusic anzeigen
- SQL lernen: Dynamisches SQL – 3. März 2021
- SQL lernen: SQL Injection – 2. November 2020
- SQL lernen: Nicht-Equi-Joins in SQL Server – September 29, 2020