In questo tutorial impareremo come utilizzare SQL in PL / SQL. SQL è il componente effettivo che si occupa del recupero e dell'aggiornamento dei dati nel database mentre PL / SQL è il componente che elabora questi dati. Inoltre, in questo articolo, discuteremo anche di come combinare l'SQL all'interno del blocco PL / SQL.
In questo tutorial imparerai-
- Inserimento dei dati
- Aggiornamento dei dati
- Cancellazione dei dati
- Selezione dei dati
Transazioni DML in PL / SQL
DML è l'acronimo di Data Manipulation Language . Queste istruzioni vengono utilizzate principalmente per eseguire l'attività di manipolazione. Si occupa delle seguenti operazioni.
- Inserimento dei dati
- Aggiornamento dei dati
- Cancellazione dei dati
- Selezione dei dati
In PL / SQL, possiamo eseguire la manipolazione dei dati solo utilizzando i comandi SQL.
Inserimento dei dati
In PL / SQL, possiamo inserire i dati in qualsiasi tabella utilizzando il comando SQL INSERT INTO. Questo comando prenderà il nome della tabella, la colonna della tabella e i valori della colonna come input e inserirà il valore nella tabella di base.
Il comando INSERT può anche prendere i valori direttamente da un'altra tabella utilizzando l'istruzione "SELECT" invece di fornire i valori per ogni colonna. Tramite l'istruzione "SELECT", possiamo inserire tante righe quante sono contenute nella tabella di base.
Sintassi:
BEGININSERT INTO( , ,… )VALUES( ,… : );END;
- La sintassi precedente mostra il comando INSERT INTO. Il nome e i valori della tabella sono campi obbligatori, mentre i nomi delle colonne non sono obbligatori se le istruzioni di inserimento hanno valori per tutta la colonna della tabella.
- La parola chiave "VALORI" è obbligatoria se i valori sono forniti separatamente come mostrato sopra.
Sintassi:
BEGININSERT INTO( , ,… , )SELECT , ,… FROM ;END;
- La sintassi precedente mostra il comando INSERT INTO che prende i valori direttamente da
utilizzando il comando SELECT. - La parola chiave "VALUES" non dovrebbe essere presente in questo caso poiché i valori non vengono forniti separatamente.
Aggiornamento dei dati
Aggiornamento dati significa semplicemente un aggiornamento del valore di qualsiasi colonna nella tabella. Questo può essere fatto usando l'istruzione "UPDATE". Questa istruzione prende il nome della tabella, il nome della colonna e il valore come input e aggiorna i dati.
Sintassi:
BEGIN UPDATESET = , = , = WHERE ;END;
- La sintassi precedente mostra l'AGGIORNAMENTO. La parola chiave "SET" indica al motore PL / SQL di aggiornare il valore della colonna con il valore fornito.
- La clausola "WHERE" è facoltativa. Se questa clausola non viene fornita, il valore della colonna menzionata nell'intera tabella verrà aggiornato.
Cancellazione dei dati
L'eliminazione dei dati significa eliminare un record completo dalla tabella del database. A questo scopo viene utilizzato il comando "DELETE".
Sintassi:
BEGINDELETEFROMWHERE ;END;
- La sintassi precedente mostra il comando DELETE. La parola chiave "FROM" è facoltativa e con o senza la clausola "FROM" il comando si comporta allo stesso modo.
- La clausola "WHERE" è facoltativa. Se questa clausola non viene fornita, l'intera tabella verrà eliminata.
Selezione dei dati
La proiezione / recupero dei dati significa recuperare i dati richiesti dalla tabella del database. Ciò può essere ottenuto utilizzando il comando "SELECT" con la clausola "INTO". Il comando "SELECT" recupererà i valori dal database e la clausola "INTO" assegnerà questi valori alla variabile locale del blocco PL / SQL.
Di seguito sono riportati i punti che devono essere considerati nell'istruzione "SELECT".
- L'istruzione "SELECT" dovrebbe restituire un solo record durante l'utilizzo della clausola "INTO" poiché una variabile può contenere un solo valore. Se l'istruzione "SELECT" restituisce più di un valore, verrà sollevata l'eccezione "TOO_MANY_ROWS".
- L'istruzione "SELECT" assegnerà il valore alla variabile nella clausola "INTO", quindi è necessario ottenere almeno un record dalla tabella per popolare il valore. Se non ha ottenuto alcun record, viene sollevata l'eccezione "NO_DATA_FOUND".
- Il numero di colonne e il loro tipo di dati nella clausola "SELECT" devono corrispondere al numero di variabili e i loro tipi di dati nella clausola "INTO".
- I valori vengono recuperati e popolati nello stesso ordine indicato nell'istruzione.
- La clausola 'WHERE' è facoltativa che consente di avere più restrizioni sui record che verranno recuperati.
- L'istruzione "SELECT" può essere utilizzata nella condizione "WHERE" di altre istruzioni DML per definire i valori delle condizioni.
- L'istruzione "SELECT" quando si utilizzano le istruzioni "INSERT", "UPDATE", "DELETE" non dovrebbe avere la clausola "INTO" poiché non popolerà alcuna variabile in questi casi.
Sintassi:
BEGINSELECT,… INTO ,… FROM WHERE ;END;
- La sintassi precedente mostra il comando SELECT-INTO. La parola chiave "FROM" è obbligatoria e identifica il nome della tabella da cui è necessario recuperare i dati.
- La clausola "WHERE" è facoltativa. Se questa clausola non viene fornita, verranno recuperati i dati dell'intera tabella.
Esempio 1 : in questo esempio, vedremo come eseguire operazioni DML in PL / SQL. Inseriremo i seguenti quattro record nella tabella emp.
EMP_NAME | EMP_NO | STIPENDIO | MANAGER |
BBB | 1000 | 25000 | AAA |
XXX | 1001 | 10000 | BBB |
YYY | 1002 | 10000 | BBB |
ZZZ | 1003 | 7500 | BBB |
Quindi aggiorneremo lo stipendio di "XXX" a 15000 e cancelleremo il record del dipendente "ZZZ". Infine, proietteremo i dettagli del dipendente "XXX".
DECLAREl_emp_name VARCHAR2(250);l_emp_no NUMBER;l_salary NUMBER;l_manager VARCHAR2(250);BEGIN INSERT INTO emp(emp_name,emp_no,salary,manager)VALUES(‘BBB’,1000,25000,’AAA’);INSERT INTO emp(emp_name,emp_no,salary,manager)VALUES('XXX',1001,10000,’BBB);INSERT INTO emp(emp_name,emp_no,salary,managedVALUES(‘YYY',1002,10000,'BBB');INSERT INTO emp(emp_name,emp_no,salary,manager)VALUES(‘ZZZ',1003,7500,'BBB'):COMMIT;Dbms_output.put_line(‘Values Inserted');UPDATE EMPSET salary=15000WHERE emp_name='XXX';COMMIT;Dbms_output.put_line(‘Values Updated');DELETE emp WHERE emp_name='ZZZ';COMMIT:Dbms_output.put_line('Values Deleted );SELECT emp_name,emp_no,salary,manager INTO l_emp_name,l_emp_no,l_salary,l_manager FROM emp WHERE emp_name='XXX';Dbms output.put line(‘Employee Detail’);Dbms_output.put_line(‘Employee Name:‘||l_emp_name);Dbms_output.put_line(‘Employee Number:‘||l_emp_no);Dbms_output.put_line(‘Employee Salary:‘||l_salary);Dbms output.put line(‘Emplovee Manager Name:‘||l_manager):END;/
Produzione:
Values InsertedValues UpdatedValues DeletedEmployee DetailEmployee Name:XXXEmployee Number:1001Employee Salary:15000Employee Manager Name:BBB
Spiegazione del codice:
- Riga di codice 2-5 : dichiarazione della variabile.
- Riga di codice 7-14 : inserimento dei record nella tabella emp.
- Riga di codice 15 : commit delle transazioni di inserimento.
- Riga di codice 17-19 : aggiornamento dello stipendio del dipendente "XXX" a 15000
- Riga di codice 20 : commit della transazione di aggiornamento.
- Riga di codice 22 : eliminazione del record di "ZZZ"
- Riga di codice 23 : commit della transazione di eliminazione.
- Riga di codice 25-27 : selezione del record di "XXX" e inserimento nella variabile l_emp_name, l_emp_no, l_salary, l_manager.
- Riga di codice 28-32 : Visualizzazione del valore dei record recuperati.