8i | 9i | 10g | 11g | 12c | 13c | 18c | 19c | 21c | Misc | PL/SQL | SQL | RAC | WebLogic | Linux

Home „Artikel“ Misc “ Hier

Dies ist der achte Teil einer Artikelserie, die die Grundlagen von SQL zeigt. In diesem Artikel werfen wir einen Blick auf einige der Variationen derINSERT Anweisung.,

  • Setup
  • COMMIT und ROLLBACK
  • Basic INSERT
  • INSERT into View
  • EINFÜGEN … WÄHLEN SIE
  • Skalare Unterabfragen

Verwandte Artikel.

  • SQL für Anfänger (Teil 8): Die INSERT – Anweisung
  • SQL für Anfänger – Vollständige Wiedergabeliste
  • Oracle SQL-Artikel-Erste Schritte
  • Multitable Inserts

Setup

Sie können alle diese Abfragen kostenlos online mit SQL Fiddle ausführen.

Für die Beispiele in diesem Artikel müssen die folgenden Tabellen vorhanden sein.,

Diese Tabellen sind eine Variante der EMP und DEPT-Tabellen aus dem SCOTT-schema. Sie werden viele Oracle-Beispiele im Internet mit den Tabellen aus dem SCOTT-Schema sehen. Die ursprünglichen Tabellendefinitionen finden Sie im “ $ORACLE_HOME/rdbms/admin/utlsampl.sql“ script.

In diesem Artikel benötigen wir auch die folgende Kopie der EMPLOYEES-Tabelle. Beachten Sie, dass wir die Spalten EMPLOYEE_NAME und JOB obligatorisch gemacht haben. Die Spalte EMPLOYEE_ID ist implizit obligatorisch, da sie der Primärschlüssel ist.,

COMMIT und ROLLBACK

Alle Änderungen der Data Manipulation Language (DML) werden als Teil einer Transaktion vorgenommen. Sie sind erst dauerhaft, wenn sie mit der Anweisung COMMIT bestätigt wurden. Nach dem Festschreiben können Sie eine Änderung nur noch durch eine neue DML-Anweisung zurücksetzen, um die Daten zu ändern. Mehrere Anweisungen können zu einer einzigen Transaktion zusammengefasst werden.

DDL-Befehle (Data Definition Language) führen ein implizites Commit aus, das auch alle ausstehenden DML-Änderungen in der aktuellen Sitzung bestätigt.,

Wenn Sie einige nicht festgeschriebene Änderungen nicht beibehalten möchten, können Sie sie mithilfe der ROLLBACK – Anweisung wegwerfen. Viele der Beispiele in diesem Artikel geben nach dem Test ROLLBACK Anweisungen aus, um die Daten in ihren ursprünglichen Zustand zurückzusetzen.

Einige Tools und Programmiersprachen setzen standardmäßig auf Auto-Commit, sodass sie nach jeder von ihnen verarbeiteten DML-Anweisung automatisch eine COMMIT – Anweisung ausgeben. Lassen Sie sich davon nicht täuschen, dass dies das Standardverhalten ist. Es ist nicht.,

Basic INSERT

Die einfachste Version derINSERT – Anweisung gibt die einzufügenden Spalten nicht an. Es wird davon ausgegangen, dass die Werte in der richtigen Spaltenreihenfolge angegeben sind und keine Spaltenwerte weggelassen wurden. Infolgedessen ist dies im Anwendungscode gefährlich, da das Hinzufügen einer Spalte zur Tabelle die Anweisung unterbricht.

Das Angeben einer Spaltenliste ist viel sicherer, da die Anweisung nicht unterbrochen wird, wenn der Tabelle optionale Spalten hinzugefügt werden.,

Mit einer expliziten Spaltenliste können Sie auch optionale Spalten aus der Anweisung entfernen und die Positionen der Spalten in der Anweisung austauschen. Im folgenden Beispiel wurden die Spalten MANAGER_ID, COMMISSION und DEPARTMENT_ID entfernt und die Spalte EMPLOYEE_ID an das Ende der Spaltenliste und Werteliste verschoben.

Denken Sie daran, dass das Verpassen obligatorischer Spalten nicht zulässig ist, es sei denn, Sie haben Spaltenvorgabewerte oder Trigger, die sie füllen. Im folgenden Beispiel wird die JOB-Spalte weggelassen, die eine obligatorische Spalte in der EMPLOYEES2-Tabelle ist.,

In Ansichten EINFÜGEN

Es ist möglich, in die einer Ansicht zugeordnete Basistabelle einzufügen. Es gibt einige Einschränkungen, die damit verbunden sind, aber sie sind ein wenig außerhalb des Spielraums für einen Anfänger Artikel. Im folgenden Beispiel erstellen wir eine einfache Ansicht der EMPLOYEES2-Tabelle und fügen sie dann ein.

Sie werden es nicht sehr oft sehen, aber Sie können es auch in Inline-Ansichten einfügen. Dies kann verwendet werden, um die Spaltenliste für das Einfügen zu steuern, anstatt eine explizite Spaltenliste zu verwenden.

EINFÜGEN …, SELECT

Es ist möglich, mehrere Zeilen in einer einzigen INSERT – Anweisung mit der INSERT ... SELECT – Syntax zu erstellen. Im folgenden Beispiel werden alle Daten aus der EMPLOYEES-Tabelle in die EMPLOYEES2-Tabelle kopiert.

Die Spaltenliste in der INSERT – Anweisung muss mit der SELECT – Liste in der Abfrage übereinstimmen.

Die normalen Regeln gelten für den Abfrageteil der Anweisung, sodass Sie die Daten filtern oder mit anderen Tabellen verknüpfen können, um die Daten zu sammeln.,

Skalare Unterabfragen

Skalare Unterabfragen können verwendet werden, um einen Wert für eine INSERT Anweisung zu erhalten. Im folgenden Beispiel wird die Gehaltsspalte mit einer skalaren Unterabfrage gefüllt, die das maximale GEHALT aus der Tabelle EMPLOYEES zurückgibt und 1000 hinzufügt.

Weitere Informationen siehe: