Oracle PL/SQL Inserați, actualizați, ștergeți și selectați în [Exemplu]
Î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. Mai mult, în acest articol, vom discuta și despre cum să combinați SQL-ul în blocul PL/SQL.
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.
- Inserarea datelor
- Actualizare de date
- Ștergerea datelor
- Selectarea datelor
În PL/SQL, putem face manipularea datelor numai folosind comenzile SQL.
Inserarea 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 prelua valorile direct dintr-un alt tabel folosind instrucțiunea „SELECT” în loc să ofere valorile pentru fiecare coloană. Prin instrucțiunea „SELECT”, putem insera atâtea rânduri câte conține tabelul de bază.
Sintaxă:
BEGIN INSERT INTO <table_name>(<column1 >,<column2>,...<column_n>) VALUES(<valuel><value2>,...:<value_n>); END;
- Sintaxa de mai sus arată comanda INSERT INTO. Numele tabelului și valorile 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ă:
BEGIN INSERT INTO <table_name>(<columnl>,<column2>,...,<column_n>) SELECT <columnl>,<column2>,.. <column_n> FROM <table_name2>; END;
- Sintaxa de mai sus arată comanda INSERT INTO care preia valorile direct din folosind comanda SELECT.
- Cuvântul cheie „VALUES” nu ar trebui să fie prezent în acest caz, deoarece valorile nu sunt date separat.
Actualizare de 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ă instrucțiune ia numele tabelului, numele coloanei și valoarea ca intrare și actualizează datele.
Sintaxă:
BEGIN UPDATE <table_name> SET <columnl>=<VALUE1>,<column2>=<value2>,<column_n>=<value_n> WHERE <condition that uniquely identifies the record that needs to be update>; END;
- Sintaxa de mai sus arată UPDATE. Cuvântul cheie „SET” instruiește acel motor PL/SQL să actualizeze valoarea coloanei cu valoarea dată.
- Clauza „UNDE” este opțională. Dacă această clauză nu este dată, atunci valoarea coloanei menționate din întreg tabelul va fi actualizată.
Ștergerea datelor
Ștergerea datelor înseamnă ștergerea unei înregistrări complete din tabelul bazei de date. Comanda „ȘTERGERE” este utilizată în acest scop.
Sintaxă:
BEGIN DELETE FROM <table_name> WHERE <condition that uniquely identifies the record that needs to be update>; 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 „UNDE” este opțională. Dacă această clauză nu este dată, atunci întregul tabel va fi șters.
Selectarea datelor
Proiecția/preluarea datelor înseamnă a prelua datele necesare din tabelul bazei de date. Acest lucru poate fi realizat folosind comanda „SELECT” cu clauza „INTO”. Comanda „SELECT” va prelua valorile din baza de date, iar clauza „INTO” va atribui aceste valori variabilei locale a bloc 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 deține o singură valoare. Dacă instrucțiunea „SELECT” returnează mai mult de o valoare, va fi ridicată excepția „TOO_MANY_ROWS”.
- Instrucțiunea „SELECT” va atribui valoarea variabilei din clauza „INTO”, deci trebuie să obțină cel puțin o înregistrare din tabel pentru a popula valoarea. Dacă nu a primit nicio înregistrare, atunci este ridicată excepția „NO_DATA_FOUND”.
- Numărul de coloane și tipul lor de date din clauza „SELECT” trebuie să se potrivească cu numărul de variabile și tipurile lor de date din clauza „INTO”.
- Valorile sunt preluate și populate în aceeași ordine ca cea menționată în declarație.
- Clauza „UNDE” este opțională, ceea ce permite să existe mai multe restricții asupra înregistrărilor care vor fi 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 popula nicio variabilă în aceste cazuri.
Sintaxă:
BEGIN SELECT <columnl>,..<column_n> INTO <vanable 1 >,. .<variable_n> FROM <table_name> WHERE <condition to fetch the required records>; END;
- Sintaxa de mai sus arată comanda SELECT-INTO. Cuvântul cheie „FROM” este obligatoriu care identifică numele tabelului de la care trebuie preluate datele.
- Clauza „UNDE” este opțională. Dacă această clauză nu este dată, atunci datele din întregul tabel vor fi preluate.
Exemplu 1: În acest exemplu, vom vedea cum să efectuați operațiuni DML în PL / SQL. Vom insera cele patru înregistrări de mai jos în tabelul emp.
EMP_NAME | EMP_NR | SALARIU | MANAGER |
---|---|---|---|
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 angajatului „ZZZ”. În cele din urmă, vom proiecta detaliile angajatului „XXX”.
DECLARE l_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,managed VALUES(‘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 EMP SET salary=15000 WHERE 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 Inserted Values Updated Values Deleted Employee Detail Employee Name:XXX Employee Number:1001 Employee Salary:15000 Employee Manager Name:BBB
Explicația codului:
- Linia de cod 2-5: Declararea variabilei.
- Linia de cod 7-14: Inserarea înregistrărilor în tabelul emp.
- Linia de cod 15: Efectuarea tranzacțiilor de inserare.
- Linia de cod 17-19: Actualizarea salariului angajatului „XXX” la 15000
- Linia de cod 20: Se efectuează tranzacția de actualizare.
- Linia de cod 22: Ștergerea înregistrării lui „ZZZ”
- Linia de cod 23: Se efectuează tranzacția de ștergere.
- Linia de cod 25-27: Se selectează înregistrarea „XXX” și se completează în variabila l_emp_name, l_emp_no, l_salary, l_manager.
- Linia de cod 28-32: Afișarea valorii înregistrărilor preluate.