Come utilizzare PL SQL Inserisci, aggiorna, elimina e seleziona l'istruzione
how use pl sql insert
Questo tutorial spiega come utilizzare i comandi PL SQL INSERT, UPDATE, DELETE e SELECT con esempi di programmazione:
In questo articolo, continueremo con Serie PL / SQL . Nel Tipi di dati PL / SQL, costanti e variabili tutorial, abbiamo imparato i tipi di dati PL SQL, le variabili, le costanti e i valori letterali in dettaglio con l'aiuto di esempi di programmazione. Qui, discuteremo le istruzioni PL SQL DML e come funzionano.
Esploreremo i comandi PL SQL INSERT, DELETE, UPDATE e SELECT per manipolare i dati nelle tabelle PL / SQL.
Cominciamo a comprendere l'implementazione dei comandi INSERT, DELETE, UPDATE e SELECT sulle tabelle. Collettivamente, queste sono chiamate istruzioni DML (Data Manipulation Language).
Comando PL SQL INSERT
L'istruzione INSERT INTO viene utilizzata per inserire dati in una tabella. Si chiama a Linguaggio di manipolazione dei dati . Utilizza il nome della tabella, i nomi ei valori delle colonne come input ed esegue l'inserimento dei valori nella tabella.
Sintassi:
INSERT INTO <
> VALUES (<>, <>, …..);
Il nome della tabella ei valori da inserire sono la parte obbligatoria dell'istruzione PL SQL INSERT. Facoltativamente, possiamo anche menzionare i nomi delle colonne in cui devono essere inseriti i valori.
Abbiamo creato la tabella EMPLOYEE con l'aiuto dell'istruzione SQL fornita di seguito:
CREATE TABLE EMPLOYEE ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Implementazione del codice con PL SQL INSERT:
BEGIN INSERT INTO EMPLOYEE VALUES (1, 'FLEX', 34); INSERT INTO EMPLOYEE VALUES (2, 'HARRY', 35); END
L'output del codice precedente dovrebbe essere:
SELECT * from EMPLOYEE;
INSERISCI IN SELEZIONA
INSERIRE IN TUTTE LE COLONNE
INSERT INTO SELECT viene utilizzato per inserire righe in una tabella agendo sul risultato dell'istruzione SELECT. Potrebbe essere necessario ottenere una riga dalla tabella e inserirla in una tabella diversa.
Sintassi:
INSERT INTO <> (col1, col2, col3) SELECT col1, col2, col3 FROM <> WHERE condition;
Il comando INSERT INTO SELECT richiede che i tipi di dati della tabella di origine e di destinazione siano gli stessi. Nel caso in cui sia necessario copiare le intere righe della tabella di origine nella tabella di destinazione, possiamo omettere la condizione WHERE.
Abbiamo creato un'altra tabella chiamata MANAGER con l'aiuto dell'istruzione SQL fornita di seguito:
CREATE TABLE MANAGER ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Consideriamo di nuovo la tabella DIPENDENTE.
Implementazione del codice con INSERT INTO SELECT .:
BEGIN INSERT INTO MANAGER (CODE, NAME, AGE) SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE = 1; END;
Output del codice sopra:
SELECT * from MANAGER;
INSERIRE DATI PARZIALI
Possiamo anche inserire dati parziali in un'altra tabella. Creiamo prima il file MANAGERDETAIL tabella dalla tabella EMPLOYEE con la query seguente.
CREATE TABLE MANAGERDETAIL AS SELECT * FROM EMPLOYEE WHERE 1 = 0;
Qui, DOVE 1 = 0 si riferisce alla prima colonna della tabella EMPLOYEE che è CODICE.
Successivamente, utilizzeremo l'istruzione INSERT INTO SELECT per duplicare i dati dalla tabella EMPLOYEE alla tabella MANAGERDETAIL.
Implementazione del codice con INSERT INTO SELECT;
BEGIN INSERT INTO MANAGERDETAIL SELECT CODE, NAME, AGE FROM EMPLOYEE WHERE CODE! = 0 END;
Output del codice sopra:
SELECT * from MANAGERDETAIL;
Nell'esempio precedente, non abbiamo menzionato i nomi delle colonne nel comando INSERT, poiché l'output del comando SELECT ha i valori che corrispondono alle colonne della tabella MANAGERDETAIL. Inoltre, abbiamo incluso una condizione con la clausola WHERE.
INSERIRE DATI PARZIALI E LETTERALI
Possiamo inserire dati parziali e valore letterale in una tabella.
Creiamo prima la tabella MANAGERCONTACT con la query seguente:
CREATE TABLE MANAGERCONTACT ( CODE INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (CODE) );
Ora, prendiamo di nuovo l'aiuto della tabella EMPLOYEE e proviamo a duplicare i dati dalla tabella EMPLOYEE alla tabella MANAGERCONTACT.
Implementazione del codice con INSERT INTO:
BEGIN INSERT INTO MANAGERCONTACT (CODE, NAME, AGE) SELECT CODE, NAME, 0 FROM EMPLOYEE; END;
L'output del codice sopra:
SELECT * from MANAGERCONTACT;
Nell'esempio precedente, abbiamo ottenuto i valori dalla tabella EMPLOYEE e incluso anche 0 letterale nell'istruzione INSERT che ha modificato i valori della colonna AGE su 0 nella tabella MANAGERCONTACT.
INSERISCI TUTTO
Un'istruzione INSERT ALL viene utilizzata per aggiungere più di una riga in una singola tabella o più tabelle. È anche chiamato comando multi-tabella ed è di due tipi condizionale e incondizionato.
# 1) INSERISCI TUTTO INCONDIZIONATO
Per inserire più di una riga in una tabella, viene utilizzata un'istruzione INSERT ALL.
Sintassi:
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)
Qui, c1, c2 e c3 sono i nomi delle colonne e v1, v2 e v3 sono i valori da inserire. Nel caso, dobbiamo usare il valore letterale invece della sottoquery; dobbiamo usare la seguente query:
SELECT * FROM dual;
Abbiamo creato la tabella SOCCERPLAYERS con l'aiuto dell'istruzione SQL fornita di seguito:
CREATE TABLE SOCCERPLAYERS ( PLAYERID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COUNTRY VARCHAR (15), PRIMARY KEY (PLAYERID) );
Implementazione del codice con 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;
L'output del codice sopra:
SELECT * from SOCCERPLAYERS;
Nell'esempio precedente, tre righe sono state inserite contemporaneamente in una tabella con un comando INSERT ALL.
Per inserire più di una riga in più tabelle, viene utilizzata un'istruzione INSERT ALL.
Sintassi:
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;
Qui, c1, c2 e c3 sono i nomi delle colonne e v1, v2 e v3 sono i valori da inserire. Table_name1, table_name2 e table_name3 sono i nomi delle tabelle.
# 2) CONDIZIONALE INSERISCI TUTTO
Un'istruzione INSERT ALL può inserire più di una riga nelle tabelle a seconda di alcune condizioni.
Sintassi:
INSERT (ALL | FIRST) WHEN cond1 THEN INTO table_name1 <> VALUES <> WHEN cond2 THEN INTO table_name2 <> VALUES <> ELSE INTO table_name3 <> VALUES <> Subquery;
La parola chiave ALL viene utilizzata per specificare che devono essere eseguite tutte le condizioni della clausola WHERE. Se una condizione è soddisfatta, viene eseguita la clausola INTO corrispondente.
Se viene utilizzata la parola chiave FIRST, per ogni singola riga ottenuta da una sottoquery, Oracle esegue i criteri della clausola WHEN dall'alto verso il basso. Una volta soddisfatta una condizione, la clausola INTO corrispondente verrà eseguita e passerà a un'altra clausola WHEN per quella riga.
Abbiamo creato le tabelle VEHICLE, CARS, SMALLCARS e LARGECARS con l'aiuto delle istruzioni SQL fornite di seguito:
CREATE TABLE VEHICLE ( CARID INT NOT NULL, NAME VARCHAR (15) NOT NULL, COLOR VARCHAR (15), PRIMARY KEY (CARID) );
Inserisci i seguenti valori nella tabella VEICOLO:
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;
Implementazione del codice con 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;
Nell'esempio precedente, una riga è stata inserita in ciascuna delle tre tabelle in base al valore CARDID.
Esistono alcune limitazioni con l'istruzione INSERT ALL:
Viene utilizzato solo per inserire valori nelle tabelle. Non funziona con viste o viste materializzate.
Non è in grado di inserire valori nelle tabelle remote.
Il numero di colonne che un comando INSERT INTO può gestire non deve essere maggiore di 999.
Un'espressione della raccolta di tabelle non può essere utilizzata in un comando INSERT a più tabelle.
Una sottoquery INSERT multi-tabella non è in grado di utilizzare una sequenza.
Comando di aggiornamento PL SQL
L'istruzione UPDATE viene utilizzata per modificare i valori in una tabella. È anche chiamato a Linguaggio di manipolazione dei dati . Utilizza i nomi della tabella, della colonna e dei valori come input ed esegue la modifica dei valori sulla tabella.
Sintassi:
UPDATE <
> SET <>=<>, <>=<>,… WHERE <>;
La parola chiave SET viene utilizzata per modificare il valore della colonna con il nuovo valore. Facoltativamente, viene utilizzata la parola chiave WHERE, se omessa, verrà modificato il valore della colonna specificata nella tabella completa.
AGGIORNAMENTO SINGOLA COLONNA DI UNA RIGA
Consideriamo di nuovo la tabella DIPENDENTE.
Implementazione del codice con UPDATE:
BEGIN UPDATE EMPLOYEE SET NAME = 'HENRY' WHERE CODE=1; END;
L'output del codice sopra:
SELECT * from EMPLOYEE;
AGGIORNA PIÙ COLONNE DI UNA RIGA
Consideriamo di nuovo la tabella DIPENDENTE.
Implementazione del codice con UPDATE:
BEGIN UPDATE EMPLOYEE SET NAME = 'COMO', AGE = 30 WHERE CODE=2; END;
L'output del codice sopra:
SELECT * from EMPLOYEE;
AGGIORNA PIÙ RIGHE
Consideriamo di nuovo la tabella DIPENDENTE.
Implementazione del codice con UPDATE:
BEGIN UPDATE EMPLOYEE SET AGE = AGE +1; END;
Output del codice sopra:
SELECT * from EMPLOYEE;
Nell'esempio sopra, l'ETÀ di tutti i dipendenti è aumentata di 1.
Comando di eliminazione SQL PL
L'istruzione DELETE viene utilizzata per rimuovere un intero record dalla tabella. È anche chiamato a Linguaggio di manipolazione dei dati.
Sintassi:
DELETE FROM <
> WHERE <>;
La parola chiave FROM non è obbligatoria e un'istruzione DELETE produrrà lo stesso risultato se FROM viene aggiunto o meno nella query. Facoltativamente, viene utilizzata la parola chiave WHERE, se omessa, verrà eliminata la tabella completa.
CANCELLA UNA SINGOLA RIGA DALLA TABELLA
Consideriamo di nuovo la tabella DIPENDENTE.
Implementazione del codice con DELETE:
BEGIN DELETE FROM EMPLOYEE WHERE CODE=2; END;
Output del codice sopra:
SELECT * from EMPLOYEE;
ELIMINA PIÙ RIGHE DALLA TABELLA
Consideriamo ancora la tabella MANAGERDETAIL.
Implementazione del codice con DELETE:
BEGIN DELETE FROM MANAGERDETAIL WHERE CODE > 0; END;
Output del codice sopra:
SELECT * from MANAGERDETAIL;
ELIMINA INTERE RIGHE DALLA TABELLA
Consideriamo ancora la tabella VEICOLO.
Implementazione del codice con DELETE:
BEGIN DELETE FROM VEHICLE; END;
Output del codice sopra:
SELECT * from VEHICLE;
Comando di selezione PL SQL
L'istruzione SELECT viene utilizzata per recuperare i dati dal database. L'istruzione SELECT INTO viene utilizzata per recuperare i valori dal database e memorizzarli nelle variabili locali introdotte da PL / SQL.
Se usiamo solo un'istruzione SELECT, restituisce un singolo record. Nel caso in cui un'istruzione SELECT stia recuperando più valori, TOO_MANY_ROWS l'eccezione viene generata da PL / SQL. Durante l'utilizzo dell'istruzione SELECT INTO, assegniamo almeno un valore alla variabile. Tuttavia, se nessun record viene recuperato dal database, il file NESSUN DATO TROVATO viene generata un'eccezione.
Il conteggio delle colonne e il loro tipo devono essere uguali al conteggio delle variabili e al loro tipo nella parola chiave INTO. I valori vengono ottenuti dal database nella stessa sequenza definita nell'istruzione SELECT.
La parola chiave WHERE all'interno dell'istruzione SELECT è facoltativa e ci consente di ottenere record che soddisfano determinati criteri. È importante notare che la query SELECT con i comandi DELETE, UPDATE e INSERT non dispone di una clausola INTO.
Sintassi:
SELECT <>, <>, ..<> INTO <>, <>, … <> FROM <
> WHERE <>;
RILEVARE I DATI DA TUTTE LE COLONNE DI UNA TABELLA
Consideriamo di nuovo la tabella DIPENDENTE.
Implementazione del codice con SELECT:
BEGIN SELECT * FROM EMPLOYEE WHERE CODE=1; END;
Output del codice sopra:
Implementazione del codice con l'istruzione SELECT che genera un'eccezione:
BEGIN SELECT * FROM EMPLOYEE WHERE CODE=2; END;
Output del codice sopra:
L'eccezione nessun dato trovato viene generata poiché l'istruzione SELECT non è riuscita a ottenere una riga corrispondente alla condizione specificata poiché non è presente alcun dipendente con CODE 2 nel database.
RILEVARE I DATI DA UNA COLONNA DI UNA TABELLA
Consideriamo di nuovo la tabella DIPENDENTE.
BEGIN SELECT CODE FROM EMPLOYEE; END;
L'output del codice sopra:
RILEVARE I DATI DA PIÙ COLONNE DI UNA TABELLA
Consideriamo di nuovo la tabella DIPENDENTE.
BEGIN SELECT CODE, NAME FROM EMPLOYEE; END;
Output del codice sopra:
Nell'esempio precedente, due colonne CODE e NAME sono state aggiunte nell'istruzione SELECT.
Domande e risposte frequenti
D # 1) Cosa sono INSERT, UPDATE e DELETE in SQL?
Risposta: INSERT, UPDATE e DELETE sono comandi in SQL che aiutano a utilizzare e aggiornare i dati. L'istruzione INSERT inserisce righe in una tabella. L'istruzione DELETE elimina le righe da una tabella e l'istruzione UPDATE aggiorna i valori nelle righe della tabella.
D # 2) Possiamo INSERIRE, AGGIORNARE e CANCELLARE in vista in SQL?
Risposta: Sì, possiamo INSERIRE, AGGIORNARE e CANCELLARE nella vista in SQL. Se la vista si è unita tra le tabelle, possiamo solo eseguire azioni INSERT e UPDATE ma non possiamo eseguire un'operazione DELETE. L'istruzione DROP viene utilizzata per eliminare una vista.
Risposta: L'INSERT è un DML o Data Manipulation Language). Le altre istruzioni DML includono UPDATE, DELETE e così via. L'istruzione DDL è in grado di creare tabelle, schemi e database.
Q # 4) Possiamo usare JOIN IN cancella query?
Risposta: Sì, possiamo utilizzare l'istruzione INNER JOIN nel comando DELETE per eliminare righe da una tabella.
D # 5) Qual è la differenza tra il comando truncate e delete?
Risposta: TRUNCATE è un'istruzione DDL mentre DELETE è DML. Il comando TRUNCATE è in grado di rimuovere la tabella completa. Non mantiene l'integrità del tavolo. L'istruzione DELETE può eliminare solo dati particolari nella tabella. Può anche includere condizioni per l'eliminazione.
D # 6) Cosa sono DML, DCL e DDL?
Risposta: Le istruzioni SQL sono del tipo: DML, DCL e DML.
Il linguaggio di definizione dei dati o DDL include comandi come ALTER, DROP, CREATE, RENAME, TRUNCATE e COMMENT. Il linguaggio di manipolazione dei dati o DML include comandi come INSERT, DELETE, MERGE, UPDATE, CALL, LOCK TABLE e EXPLAIN PLAN.
Il linguaggio di controllo dei dati o DCL include comandi come GRANT e REVOKE.
D # 7) Il troncamento è più veloce del rilascio?
Risposta: Sì, l'operazione TRUNCATE è più veloce di DROP. Il comando TRUNCATE elimina solo i dati dalla tabella. Il comando DROP cancella la struttura della tabella e i dati dalla tabella.
Conclusione
In questo tutorial, abbiamo discusso in dettaglio alcuni concetti di base dei comandi PL SQL che sono essenziali per sviluppare la conoscenza su di esso. Abbiamo trattato i seguenti argomenti elencati di seguito: