În acest tutorial, vom învăța cum să folosim SQL în PL / SQL. SQL este componenta reală care se ocupă de preluarea și actualizarea datelor din baza de date, în timp ce PL / SQL este componenta care procesează aceste date. În plus, în acest articol, vom discuta, de asemenea, despre cum să combinați SQL în blocul PL / SQL.
În acest tutorial, veți învăța-
- Introducerea datelor
- Actualizare date
- Ștergerea datelor
- Selectarea datelor
Tranzacții DML în PL / SQL
DML înseamnă Limbajul de manipulare a datelor . Aceste afirmații sunt utilizate în principal pentru a efectua activitatea de manipulare. Se ocupă de operațiunile de mai jos.
- Introducerea datelor
- Actualizare date
- Ștergerea datelor
- Selectarea datelor
În PL / SQL, putem face manipularea datelor numai utilizând comenzile SQL.
Introducerea datelor
În PL / SQL, putem insera datele în orice tabel folosind comanda SQL INSERT INTO. Această comandă va lua numele tabelului, coloana tabelului și valorile coloanei ca intrare și va introduce valoarea în tabelul de bază.
Comanda INSERT poate, de asemenea, să ia valorile direct dintr-un alt tabel folosind instrucțiunea „SELECT”, mai degrabă decât să dea valorile pentru fiecare coloană. Prin declarația „SELECT”, putem insera câte rânduri conține tabelul de bază.
Sintaxă:
BEGININSERT INTO( , ,… )VALUES( ,… : );END;
- Sintaxa de mai sus arată comanda INSERT INTO. Numele și valorile tabelului sunt câmpuri obligatorii, în timp ce numele coloanelor nu sunt obligatorii dacă instrucțiunile de inserare au valori pentru toată coloana tabelului.
- Cuvântul cheie „VALORI” este obligatoriu dacă valorile sunt date separat așa cum se arată mai sus.
Sintaxă:
BEGININSERT INTO( , ,… , )SELECT , ,… FROM ;END;
- Sintaxa de mai sus arată comanda INSERT INTO care preia valorile direct din
utilizând comanda SELECT. - Cuvântul cheie „VALORI” nu ar trebui să fie prezent în acest caz, deoarece valorile nu sunt date separat.
Actualizare date
Actualizarea datelor înseamnă pur și simplu o actualizare a valorii oricărei coloane din tabel. Acest lucru se poate face folosind instrucțiunea „UPDATE”. Această declarație ia numele tabelului, numele coloanei și valoarea ca intrare și actualizează datele.
Sintaxă:
BEGIN UPDATESET = , = , = WHERE ;END;
- Sintaxa de mai sus arată ACTUALIZAREA. Cuvântul cheie „SET” instruiește acel motor PL / SQL să actualizeze valoarea coloanei cu valoarea dată.
- Clauza „WHERE” este opțională. Dacă această clauză nu este dată, atunci valoarea coloanei menționate din întregul tabel va fi actualizată.
Ștergerea datelor
Ștergerea datelor înseamnă ștergerea unei înregistrări complete din tabelul bazei de date. Comanda „DELETE” este utilizată în acest scop.
Sintaxă:
BEGINDELETEFROMWHERE ;END;
- Sintaxa de mai sus arată comanda DELETE. Cuvântul cheie „FROM” este opțional și cu sau fără clauza „FROM” comanda se comportă în același mod.
- Clauza „WHERE” este opțională. Dacă această clauză nu este dată, atunci întregul tabel va fi șters.
Selectarea datelor
Proiecția / preluarea datelor înseamnă recuperarea datelor necesare din tabelul bazei de date. Acest lucru poate fi realizat utilizând comanda „SELECT” cu clauza „INTO”. Comanda „SELECT” va prelua valorile din baza de date, iar clauza „INTO” va atribui aceste valori variabilei locale a blocului PL / SQL.
Mai jos sunt punctele care trebuie luate în considerare în declarația „SELECT”.
- Instrucțiunea „SELECT” ar trebui să returneze o singură înregistrare în timp ce se utilizează clauza „INTO”, deoarece o variabilă poate conține o singură valoare. Dacă declarația „SELECT” returnează mai multe valori decât excepția „TOO_MANY_ROWS” va fi ridicată.
- Instrucțiunea „SELECT” va atribui valoarea variabilei din clauza „INTO”, deci trebuie să obțină cel puțin o înregistrare din tabel pentru a completa valoarea. Dacă nu a obținut nicio înregistrare, atunci se ridică excepția „NO_DATA_FOUND”.
- Numărul de coloane și tipul lor de date din clauza „SELECT” ar trebui să se potrivească cu numărul de variabile și tipurile lor de date din clauza „INTO”.
- Valorile sunt preluate și completate în aceeași ordine ca cea menționată în declarație.
- Clauza „WHERE” este opțională, care permite să aibă mai multe restricții asupra înregistrărilor care urmează să fie preluate.
- Instrucțiunea „SELECT” poate fi utilizată în condiția „WHERE” a altor instrucțiuni DML pentru a defini valorile condițiilor.
- Instrucțiunea „SELECT” atunci când se utilizează instrucțiunile „INSERT”, „UPDATE”, „DELETE” nu ar trebui să aibă clauza „INTO”, deoarece nu va completa nicio variabilă în aceste cazuri.
Sintaxă:
BEGINSELECT,… INTO ,… FROM WHERE ;END;
- Sintaxa de mai sus arată comanda SELECT-INTO. Cuvântul cheie „FROM” este obligatoriu, care identifică numele tabelului din care trebuie preluate datele.
- Clauza „WHERE” este opțională. Dacă această clauză nu este dată, atunci datele din întregul tabel vor fi preluate.
Exemplul 1 : În acest exemplu, vom vedea cum să efectuăm operațiuni DML în PL / SQL. Vom insera cele patru înregistrări de mai jos în tabelul emp.
EMP_NAME | EMP_NO | SALARIU | ADMINISTRATOR |
BBB | 1000 | 25000 | AAA |
XXX | 1001 | 10000 | BBB |
AAAA | 1002 | 10000 | BBB |
ZZZ | 1003 | 7500 | BBB |
Apoi vom actualiza salariul „XXX” la 15000 și vom șterge înregistrarea angajaților „ZZZ”. În cele din urmă, vom proiecta detaliile angajatului „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;/
Ieșire:
Values InsertedValues UpdatedValues DeletedEmployee DetailEmployee Name:XXXEmployee Number:1001Employee Salary:15000Employee Manager Name:BBB
Explicatie cod:
- Linia de cod 2-5 : Declararea variabilei.
- Linia de cod 7-14 : Introducerea înregistrărilor în tabelul emp.
- Linia de cod 15 : Realizarea tranzacțiilor de inserare.
- Linia de cod 17-19 : Actualizarea salariului angajatului „XXX” la 15000
- Linia de cod 20 : Realizarea tranzacției de actualizare.
- Linia de cod 22 : Ștergerea înregistrării „ZZZ”
- Linia de cod 23 : Realizarea tranzacției de ștergere.
- Linia de cod 25-27 : Selectarea înregistrării „XXX” și completarea în variabila l_emp_name, l_emp_no, l_salary, l_manager.
- Linia de cod 28-32 : Afișarea valorii înregistrărilor preluate.