Verwendung von PL SQL-Anweisungen zum Einfügen, Aktualisieren, Löschen und Auswählen
how use pl sql insert
In diesem Tutorial wird anhand von Programmierbeispielen die Verwendung der Befehle PL SQL INSERT, UPDATE, DELETE und SELECT erläutert:
In diesem Artikel werden wir fortfahren PL / SQL-Serie . In dem PL / SQL-Datentypen, Konstanten und Variablen Im Tutorial haben wir anhand von Programmierbeispielen die PL SQL-Datentypen, -Variablen, -Konstanten und -Literale im Detail kennengelernt. Hier werden wir die PL SQL DML-Anweisungen und ihre Funktionsweise diskutieren.
Wir werden die Befehle PL SQL INSERT, DELETE, UPDATE und SELECT untersuchen, um Daten in PL / SQL-Tabellen zu bearbeiten.
Beginnen wir mit der Implementierung der Befehle INSERT, DELETE, UPDATE und SELECT in Tabellen. Zusammen werden diese als DML-Anweisungen (Data Manipulation Language) bezeichnet.
PL SQL INSERT-Befehl
Die Anweisung INSERT INTO wird verwendet, um Daten in eine Tabelle einzufügen. Es heißt a Datenmanipulierungssprache . Es verwendet den Tabellennamen sowie die Spaltennamen und -werte als Eingaben und führt das Einfügen von Werten in die Tabelle durch.
Syntax:
INSERT INTO <
> VALUES (<>, <>, …..);
Der Tabellenname und die einzufügenden Werte sind der obligatorische Bestandteil der PL SQL INSERT-Anweisung. Optional können wir auch die Spaltennamen angeben, in die die Werte eingefügt werden sollen.
Wir haben die EMPLOYEE-Tabelle mit Hilfe der folgenden SQL-Anweisung erstellt:
CREATE TABLE EMPLOYEE ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Code-Implementierung mit PL SQL INSERT:
BEGIN INSERT INTO EMPLOYEE VALUES (1, 'FLEX', 34); INSERT INTO EMPLOYEE VALUES (2, 'HARRY', 35); END
Die Ausgabe des obigen Codes sollte sein:
SELECT * from EMPLOYEE;
INSERT IN SELECT
IN ALLE SPALTEN EINFÜGEN
INSERT INTO SELECT wird verwendet, um Zeilen in eine Tabelle einzufügen, indem auf das Ergebnis der SELECT-Anweisung reagiert wird. Es kann erforderlich sein, eine Zeile aus der Tabelle abzurufen und in eine andere Tabelle einzufügen.
Syntax:
INSERT INTO <> (col1, col2, col3) SELECT col1, col2, col3 FROM <> WHERE condition;
Für den Befehl INSERT INTO SELECT müssen die Datentypen der Quell- und Zieltabelle identisch sein. Falls wir die gesamten Zeilen der Quelltabelle in die Zieltabelle kopieren müssen, können wir die WHERE-Bedingung weglassen.
Wir haben mit Hilfe der folgenden SQL-Anweisung eine weitere Tabelle namens MANAGER erstellt:
CREATE TABLE MANAGER ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Betrachten wir noch einmal die EMPLOYEE-Tabelle.
Code-Implementierung mit INSERT INTO SELECT.:
BEGIN INSERT INTO MANAGER (CODE, NAME, AGE) SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE = 1; END;
Ausgabe des obigen Codes:
SELECT * from MANAGER;
TEILDATEN EINFÜGEN
Wir können auch Teildaten in eine andere Tabelle einfügen. Lassen Sie uns zuerst die erstellen MANAGERDETAIL Tabelle aus der EMPLOYEE-Tabelle mit der folgenden Abfrage.
CREATE TABLE MANAGERDETAIL AS SELECT * FROM EMPLOYEE WHERE 1 = 0;
Hier, WO 1 = 0 bezieht sich auf die erste Spalte der EMPLOYEE-Tabelle, die CODE ist.
Als Nächstes verwenden wir die Anweisung INSERT INTO SELECT, um die Daten aus der Tabelle EMPLOYEE in die Tabelle MANAGERDETAIL zu duplizieren.
Code-Implementierung mit INSERT INTO SELECT;
BEGIN INSERT INTO MANAGERDETAIL SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE! = 0 END;
Ausgabe des obigen Codes:
SELECT * from MANAGERDETAIL;
Im obigen Beispiel haben wir die Spaltennamen im Befehl INSERT nicht erwähnt, da die Ausgabe des Befehls SELECT die Werte aufweist, die mit den Spalten der Tabelle MANAGERDETAIL übereinstimmen. Außerdem haben wir der Klausel WHERE eine Bedingung hinzugefügt.
TEILDATEN UND LITERAL EINFÜGEN
Wir können Teildaten und Literalwerte in eine Tabelle einfügen.
Erstellen wir zunächst die Tabelle MANAGERCONTACT mit der folgenden Abfrage:
CREATE TABLE MANAGERCONTACT ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Nehmen wir nun noch einmal die Hilfe der Tabelle EMPLOYEE und versuchen Sie, die Daten aus der Tabelle EMPLOYEE in die Tabelle MANAGERCONTACT zu duplizieren.
Code-Implementierung mit INSERT INTO:
BEGIN INSERT INTO MANAGERCONTACT (CODE, NAME, AGE) SELECT CODE, NAME, 0 FROM EMPLOYEE; END;
Die Ausgabe des obigen Codes:
SELECT * from MANAGERCONTACT;
Im obigen Beispiel haben wir die Werte aus der EMPLOYEE-Tabelle erhalten und auch das 0-Literal in die INSERT-Anweisung aufgenommen, wodurch die Werte der AGE-Spalte in der MANAGERCONTACT-Tabelle auf 0 geändert wurden.
ALLES EINFÜGEN
Eine INSERT ALL-Anweisung wird verwendet, um einer einzelnen Tabelle oder mehreren Tabellen mehr als eine Zeile hinzuzufügen. Es wird auch als Multi-Table-Befehl bezeichnet und ist von zwei Arten bedingt und bedingungslos.
# 1) UNBEDINGTES EINFÜGEN ALLES
Um mehr als eine Zeile in eine Tabelle einzufügen, wird eine INSERT ALL-Anweisung verwendet.
Syntax:
INSERT ALL INTO <
> (c1, c2, c3) VALUES (v1, v2, v3) INTO <
> (c1, c2, c3) VALUES (v4, v5, v6) INTO <
> (c1, c2, c3) VALUES (v7, v8, v9)
Hier sind c1, c2 und c3 die Spaltennamen, und v1, v2 und v3 sind die einzufügenden Werte. In diesem Fall müssen wir anstelle einer Unterabfrage einen Literalwert verwenden. Wir müssen die folgende Abfrage verwenden:
SELECT * FROM dual;
Wir haben die SOCCERPLAYERS-Tabelle mit Hilfe der folgenden SQL-Anweisung erstellt:
CREATE TABLE SOCCERPLAYERS ( PLAYERID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COUNTRY VARCHAR (15), PRIMARY KEY (PLAYERID) );
Code-Implementierung mit INSERT ALL:
BEGIN INSERT ALL INTO SOCCERPLAYERS (PLAYERID, NAME, COUNTRY) VALUES (4, 'DANIEL', 'USA') INTO SOCCERPLAYERS (PLAYERID, NAME, COUNTRY) VALUES (8, 'DANNY', 'ITALY') INTO SOCCERPLAYERS (PLAYERID, NAME, COUNTRY) VALUES (7, 'FRANK', 'FRANCE') SELECT 1 FROM dual; END;
Die Ausgabe des obigen Codes:
SELECT * from SOCCERPLAYERS;
Im obigen Beispiel wurden drei Zeilen gleichzeitig mit dem Befehl INSERT ALL in eine Tabelle eingefügt.
Um mehr als eine Zeile in mehrere Tabellen einzufügen, wird eine INSERT ALL-Anweisung verwendet.
Syntax:
INSERT ALL INTO <> (c1, c2, c3) VALUES (v1, v2, v3) INTO <> (c1, c2, c3) VALUES (v4, v5, v6) INTO <> (c1, c2, c3) VALUES (v7, v8, v9) Subquery;
Hier sind c1, c2 und c3 die Spaltennamen, und v1, v2 und v3 sind die einzufügenden Werte. Der Tabellenname1, der Tabellenname2 und der Tabellenname3 sind die Tabellennamen.
# 2) ALLES BEDINGT EINFÜGEN
Eine INSERT ALL-Anweisung kann abhängig von bestimmten Bedingungen mehr als eine Zeile in Tabellen einfügen.
Syntax:
INSERT (ALL | FIRST) WHEN cond1 THEN INTO table_name1 <> VALUES <> WHEN cond2 THEN INTO table_name2 <> VALUES <> ELSE INTO table_name3 <> VALUES <> Subquery;
Das Schlüsselwort ALL wird verwendet, um anzugeben, dass alle Bedingungen unter der WHERE-Klausel ausgeführt werden sollen. Wenn eine Bedingung erfüllt ist, wird die entsprechende INTO-Klausel ausgeführt.
Wenn das Schlüsselwort FIRST verwendet wird, führt Oracle für jede einzelne Zeile, die aus einer Unterabfrage abgerufen wird, die Kriterien in der Klausel WHEN von oben nach unten aus. Sobald eine Bedingung erfüllt ist, wird die entsprechende INTO-Klausel ausgeführt und springt zu einer anderen WHEN-Klausel für diese Zeile.
Wir haben die Tabellen VEHICLE, CARS, SMALLCARS und LARGECARS mit Hilfe der folgenden SQL-Anweisungen erstellt:
CREATE TABLE VEHICLE ( CARID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COLOR VARCHAR (15), PRIMARY KEY (CARID) );
Fügen Sie die folgenden Werte in die Tabelle FAHRZEUG ein:
INSERT INTO VEHICLE VALUES (1, 'AUDI', 'RED'); INSERT INTO VEHICLE VALUES (4, 'BMW', 'WHITE'); INSERT INTO VEHICLE VALUES (7, 'KIA', 'GREEN'); CREATE TABLE CARS ( CARID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COLOR VARCHAR (15), PRIMARY KEY (CARID) ); CREATE TABLE SMALLCARS AS SELECT * FROM CARS; CREATE TABLE LARGECARS AS SELECT * FROM CARS;
Code-Implementierung mit INSERT ALL.
BEGIN INSERT ALL WHEN CARID = 1 THEN INTO CARS WHEN CARID = 4 THEN INTO SMALLCARS WHEN CARID = 7 THEN INTO LARGECARS SELECT CARID, NAME, COLOR FROM VEHICLE; END;
Die Ausgabe des obigen Codes:
SELECT * from CARS;
SELECT * from SMALLCARS;
SELECT * from LARGECARS;
Im obigen Beispiel wurde basierend auf dem CARDID-Wert eine Zeile in jede der drei Tabellen eingefügt.
Die Anweisung INSERT ALL unterliegt bestimmten Einschränkungen:
Es wird nur zum Einfügen von Werten in Tabellen verwendet. Es funktioniert nicht mit Ansichten oder materialisierten Ansichten.
Es ist nicht möglich, Werte in entfernte Tabellen einzufügen.
Die Anzahl der Spalten, die ein INSERT INTO-Befehl verarbeiten kann, sollte 999 nicht überschreiten.
Ein Ausdruck der Tabellensammlung kann nicht in einem INSERT-Befehl mit mehreren Tabellen verwendet werden.
Eine INSERT-Unterabfrage mit mehreren Tabellen kann keine Sequenz verwenden.
PL SQL Update-Befehl
Die UPDATE-Anweisung wird verwendet, um die Werte in einer Tabelle zu ändern. Es wird auch a genannt Datenmanipulierungssprache . Es verwendet die Namen der Tabelle, Spalte und Werte als Eingaben und führt die Änderung der Werte in der Tabelle durch.
Syntax:
UPDATE <
> SET <>=<>, <>=<>,… WHERE <>;
Das Schlüsselwort SET wird verwendet, um den Spaltenwert durch den neuen Wert zu ändern. Optional wird das Schlüsselwort WHERE verwendet. Wenn es weggelassen wird, wird der Wert der angegebenen Spalte in der vollständigen Tabelle geändert.
UPDATE EINZELSÄULE EINER REIHE
Betrachten wir noch einmal die EMPLOYEE-Tabelle.
Code-Implementierung mit UPDATE:
BEGIN UPDATE EMPLOYEE SET NAME = 'HENRY' WHERE CODE=1; END;
Die Ausgabe des obigen Codes:
SELECT * from EMPLOYEE;
AKTUALISIEREN SIE MEHRERE SPALTEN EINER REIHE
Betrachten wir noch einmal die EMPLOYEE-Tabelle.
Code-Implementierung mit UPDATE:
BEGIN UPDATE EMPLOYEE SET NAME = 'COMO', AGE = 30 WHERE CODE=2; END;
Die Ausgabe des obigen Codes:
SELECT * from EMPLOYEE;
AKTUALISIEREN SIE MEHRERE REIHEN
Betrachten wir noch einmal die EMPLOYEE-Tabelle.
Code-Implementierung mit UPDATE:
BEGIN UPDATE EMPLOYEE SET AGE = AGE +1; END;
Ausgabe des obigen Codes:
SELECT * from EMPLOYEE;
Im obigen Beispiel hat sich das ALTER aller Mitarbeiter um 1 erhöht.
PL SQL-Löschbefehl
Die DELETE-Anweisung wird verwendet, um einen gesamten Datensatz aus der Tabelle zu entfernen. Es wird auch a genannt Datenmanipulierungssprache.
Syntax:
DELETE FROM <
> WHERE <>;
Das Schlüsselwort FROM ist nicht obligatorisch und eine DELETE-Anweisung liefert das gleiche Ergebnis, wenn FROM zur Abfrage hinzugefügt oder nicht hinzugefügt wird. Optional wird das Schlüsselwort WHERE verwendet. Wenn es weggelassen wird, wird die vollständige Tabelle gelöscht.
EINZELNE REIHE AUS DER TABELLE LÖSCHEN
Betrachten wir noch einmal die EMPLOYEE-Tabelle.
Code-Implementierung mit DELETE:
BEGIN DELETE FROM EMPLOYEE WHERE CODE=2; END;
Ausgabe des obigen Codes:
SELECT * from EMPLOYEE;
LÖSCHEN SIE MEHRERE REIHEN AUS DER TABELLE
Betrachten wir noch einmal die Tabelle MANAGERDETAIL.
Code-Implementierung mit DELETE:
BEGIN DELETE FROM MANAGERDETAIL WHERE CODE > 0; END;
Ausgabe des obigen Codes:
SELECT * from MANAGERDETAIL;
GESAMTE REIHEN AUS DER TABELLE LÖSCHEN
Betrachten wir noch einmal die FAHRZEUGtabelle.
Code-Implementierung mit DELETE:
BEGIN DELETE FROM VEHICLE; END;
Ausgabe des obigen Codes:
SELECT * from VEHICLE;
PL SQL-Auswahlbefehl
Die SELECT-Anweisung wird verwendet, um Daten aus der Datenbank abzurufen. Die SELECT INTO-Anweisung wird verwendet, um die Werte aus der Datenbank abzurufen und in den von PL / SQL eingeführten lokalen Variablen zu speichern.
Wenn wir nur eine SELECT-Anweisung verwenden, wird ein einzelner Datensatz zurückgegeben. Wenn eine SELECT-Anweisung mehrere Werte abruft, TOO_MANY_ROWS Ausnahme wird von PL / SQL ausgelöst. Bei Verwendung der SELECT INTO-Anweisung weisen wir der Variablen mindestens einen Wert zu. Wenn jedoch kein Datensatz aus der Datenbank abgerufen wird, wird der KEINE DATEN GEFUNDEN Ausnahme wird ausgelöst.
Die Anzahl der Spalten und ihr Typ sollten gleich der Anzahl der Variablen und ihres Typs im Schlüsselwort INTO sein. Die Werte werden aus der Datenbank in derselben Reihenfolge abgerufen, wie sie in der SELECT-Anweisung definiert ist.
Das WHERE-Schlüsselwort in der SELECT-Anweisung ist optional und ermöglicht es uns, Datensätze abzurufen, die bestimmte Kriterien erfüllen. Es ist wichtig zu beachten, dass die SELECT-Abfrage mit den Befehlen DELETE, UPDATE und INSERT keine INTO-Klausel enthält.
Syntax:
SELECT <>, <>, ..<> INTO <>, <>, … <> FROM <
> WHERE <>;
Daten aus allen Spalten einer Tabelle abrufen
Betrachten wir noch einmal die EMPLOYEE-Tabelle.
Code-Implementierung mit SELECT:
BEGIN SELECT * FROM EMPLOYEE WHERE CODE=1; END;
Ausgabe des obigen Codes:
Codeimplementierung mit SELECT-Anweisung, die eine Ausnahme auslöst:
BEGIN SELECT * FROM EMPLOYEE WHERE CODE=2; END;
Ausgabe des obigen Codes:
Die Ausnahme 'Keine Daten gefunden' wird ausgelöst, da die SELECT-Anweisung keine Zeilenübereinstimmung mit der angegebenen Bedingung erhalten hat, da sich kein Mitarbeiter mit CODE 2 in der Datenbank befindet.
Daten aus einer Spalte einer Tabelle abrufen
Betrachten wir noch einmal die EMPLOYEE-Tabelle.
BEGIN SELECT CODE FROM EMPLOYEE; END;
Die Ausgabe des obigen Codes:
Daten aus mehreren Spalten einer Tabelle abrufen
Betrachten wir noch einmal die EMPLOYEE-Tabelle.
BEGIN SELECT CODE, NAME FROM EMPLOYEE; END;
Ausgabe des obigen Codes:
Im obigen Beispiel wurden der SELECT-Anweisung zwei Spalten CODE und NAME hinzugefügt.
Häufig gestellte Fragen und Antworten
F # 1) Was ist INSERT, UPDATE und DELETE in SQL?
Antworten: INSERT, UPDATE und DELETE sind Befehle in SQL, mit denen Sie Daten bedienen und aktualisieren können. Die INSERT-Anweisung fügt Zeilen in eine Tabelle ein. Die Anweisung DELETE löscht Zeilen aus einer Tabelle und die Anweisung UPDATE aktualisiert die Werte in den Zeilen der Tabelle.
F # 2) Können wir in SQL die Ansicht INSERT, UPDATE und DELETE anzeigen?
Antworten: Ja, wir können INSERT, UPDATE und DELETE in SQL anzeigen. Wenn die Ansicht zwischen den Tabellen verknüpft wurde, können wir nur INSERT- und UPDATE-Aktionen ausführen, jedoch keine DELETE-Operation. Die DROP-Anweisung wird zum Löschen einer Ansicht verwendet.
F # 3) Ist INSERT DDL oder DML?
Antworten: Das INSERT ist eine DML- oder Datenmanipulationssprache. Die anderen DML-Anweisungen umfassen UPDATE, DELETE usw. Mit der DDL-Anweisung können Tabellen, Schemata und Datenbanken erstellt werden.
F # 4) Können wir die Löschabfrage JOIN IN verwenden?
Antworten: Ja, wir können die Anweisung INNER JOIN im Befehl DELETE verwenden, um Zeilen aus einer Tabelle zu löschen.
F # 5) Was ist der Unterschied zwischen dem Befehl zum Abschneiden und Löschen?
Antworten: TRUNCATE ist eine DDL-Anweisung, während DELETE DML ist. Mit dem Befehl TRUNCATE kann die gesamte Tabelle entfernt werden. Die Integrität der Tabelle bleibt nicht erhalten. Die Anweisung DELETE kann nur bestimmte Daten in der Tabelle löschen. Es kann auch Bedingungen für das Löschen enthalten.
F # 6) Was sind DML, DCL und DDL?
Antworten: SQL-Anweisungen sind vom Typ DML, DCL und DML.
Die Data Definition Language oder DDL enthält Befehle wie ALTER, DROP, CREATE, RENAME, TRUNCATE und COMMENT. Die Data Manipulation Language oder DML enthält Befehle wie INSERT, DELETE, MERGE, UPDATE, CALL, LOCK TABLE und EXPLAIN PLAN.
Die Data Control Language oder DCL enthält Befehle wie GRANT und REVOKE.
F # 7) Ist das Abschneiden schneller als das Ablegen?
Antworten: Ja, der TRUNCATE-Vorgang ist schneller als DROP. Der Befehl TRUNCATE löscht nur die Daten aus der Tabelle. Der Befehl DROP löscht die Tabellenstruktur und die Daten aus der Tabelle.
Fazit
In diesem Tutorial haben wir einige grundlegende Konzepte von PL SQL-Befehlen ausführlich besprochen, die für die Entwicklung von Kenntnissen darüber wesentlich sind. Wir haben die folgenden Themen behandelt: