Selles õpetuses õpime SQL-i kasutamist PL / SQL-is. SQL on tegelik komponent, mis hoolitseb andmebaasis olevate andmete hankimise ja värskendamise eest, samas kui PL / SQL on komponent, mis neid andmeid töötleb. Lisaks käsitleme selles artiklis ka SQL-i ühendamist PL / SQL-plokis.
Selles õpetuses saate teada
- Andmete sisestamine
- Andmete värskendamine
- Andmete kustutamine
- Andmete valik
DML-i tehingud PL / SQL-is
DML tähistab andmete manipuleerimise keelt . Neid avaldusi kasutatakse peamiselt manipuleerimistegevuse läbiviimiseks. See käsitleb järgmisi toiminguid.
- Andmete sisestamine
- Andmete värskendamine
- Andmete kustutamine
- Andmete valik
PL / SQL-is saame andmetega manipuleerida ainult SQL-käske kasutades.
Andmete sisestamine
PL / SQL-is võime sisestada andmed igasse tabelisse, kasutades SQL-i käsku INSERT INTO. Selle käsu korral võetakse sisendiks tabeli nimi, tabeli veeru ja veeru väärtused ning lisatakse väärtus põhitabelisse.
INSERT-käsk võib väärtused võtta ka otse teisest tabelist, kasutades käsku 'SELECT', selle asemel, et anda iga veeru väärtused. Läbi 'SELECT' lause saame sisestada nii palju ridu kui põhitabel sisaldab.
Süntaks:
BEGININSERT INTO( , ,… )VALUES( ,… : );END;
- Ülaltoodud süntaks näitab käsku INSERT INTO. Tabeli nimi ja väärtused on kohustuslikud väljad, samas kui veerunimed pole kohustuslikud, kui sisestuslausetel on väärtused kogu tabeli veeru jaoks.
- Märksõna 'VALUES' on kohustuslik, kui väärtused on eraldi välja toodud, nagu eespool näidatud.
Süntaks:
BEGININSERT INTO( , ,… , )SELECT , ,… FROM ;END;
- Ülaltoodud süntaks näitab käsku INSERT INTO, mis võtab väärtused otse käsul SELECT
. - Märksõna „VÄÄRTUSED” ei tohiks sel juhul olla, kuna väärtusi ei esitata eraldi.
Andmete värskendamine
Andmevärskendus tähendab lihtsalt tabeli mis tahes veeru väärtuse värskendamist. Seda saab teha lause „UPDATE” abil. See lause võtab tabeli nime, veeru nime ja väärtuse sisendiks ja värskendab andmeid.
Süntaks:
BEGIN UPDATESET = , = , = WHERE ;END;
- Ülaltoodud süntaks näitab värskendust. Märksõna „SET” käsib PL / SQL-i mootoril värskendada veeru väärtust antud väärtusega.
- Klausel WHERE on vabatahtlik. Kui seda lauset ei anta, värskendatakse mainitud veeru väärtust kogu tabelis.
Andmete kustutamine
Andmete kustutamine tähendab ühe täieliku kirje kustutamist andmebaasitabelist. Selleks kasutatakse käsku DELETE.
Süntaks:
BEGINDELETEFROMWHERE ;END;
- Ülaltoodud süntaks näitab käsku KUSTUTA. Märksõna „FROM” on valikuline ja koos klausliga „FROM” käitub käsk samamoodi.
- Klausel WHERE on vabatahtlik. Kui seda lauset ei anta, kustutatakse kogu tabel.
Andmete valik
Andmete projektsioon / toomine tähendab vajalike andmete hankimist andmebaasitabelist. Seda saab saavutada, kasutades käsku „SELECT” koos klausliga „INTO”. Käsk „SELECT” tõmbab väärtused andmebaasist ja klausel „INTO” määrab need väärtused PL / SQL-ploki lokaalsele muutujale.
Allpool on punktid, mida tuleb "SELECT" avalduses arvesse võtta.
- 'SELECT' lause peaks tagastama ainult ühe kirje, samal ajal kui klauslit 'INTO' kasutatakse, kuna üks muutuja mahutab ainult ühe väärtuse. Kui lause „SELECT” tagastab rohkem kui ühe väärtuse, tõstetakse erandit „TOO_MANY_ROWS”.
- Avaldis 'SELECT' määrab muutujale väärtuse klauslis 'INTO', seega peab ta väärtuse täitmiseks tabelist hankima vähemalt ühe kirje. Kui see ei saanud ühtegi kirjet, siis tõstetakse erandit NO_DATA_FOUND.
- „SELECT” klausli veergude arv ja nende andmetüüp peaksid vastama muutujate arvule ja nende andmetüüpidele klauslis „INTO”.
- Väärtused tõmmatakse ja täidetakse avalduses mainitud järjekorras.
- Klausel 'WHERE' on valikuline, mis lubab tõmmata kirjetele rohkem piiranguid.
- Tingimuste väärtuste määratlemiseks saab lauset 'SELECT' kasutada teiste DML-lausete WHERE tingimuses.
- Avalduses 'INSERT', 'UPDATE', 'DELETE' kasutamisel 'SELECT' -väljavõttel ei tohiks olla klauslit 'INTO', kuna see ei asenda nendel juhtudel ühtegi muutujat.
Süntaks:
BEGINSELECT,… INTO ,… FROM WHERE ;END;
- Ülaltoodud süntaks näitab käsku SELECT-INTO. Märksõna 'FROM' on kohustuslik, mis tähistab tabeli nime, kust andmed tuleb hankida.
- Klausel WHERE on vabatahtlik. Kui seda lauset ei anta, siis tõmmatakse kogu tabeli andmed.
Näide 1 : Selles näites vaatame, kuidas teha DML-toiminguid PL / SQL-is. Sisestame allpool olevad neli kirjet empi tabelisse.
EMP_NAME | EMP_NO | PALK | JUHT |
BBB | 1000 | 25000 | AAA |
XXX | 1001 | 10000 | BBB |
AAAA | 1002 | 10000 | BBB |
ZZZ | 1003 | 7500 | BBB |
Seejärel uuendame palga XXX suuruseks 15 000 ja kustutame töötajate kirje ZZZ. Lõpuks kavandame töötaja 'XXX' üksikasjad.
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;/
Väljund:
Values InsertedValues UpdatedValues DeletedEmployee DetailEmployee Name:XXXEmployee Number:1001Employee Salary:15000Employee Manager Name:BBB
Koodi selgitus:
- Koodirida 2-5 : muutuja deklareerimine.
- Koodirida 7-14 : kirjete sisestamine emp tabelisse.
- Koodirida 15 : sisestustehingute sooritamine.
- Koodirida 17–19 : töötaja „XXX” palga ajakohastamine 15 000-le
- Koodirida 20 : värskendustehingu sooritamine.
- Koodirida 22 : „ZZZ” kirje kustutamine
- Koodirida 23 : kustutustehingu sooritamine.
- Koodirida 25–27 : „XXX” kirje valimine ja muutujate l_emp_name, l_emp_no, l_salary, l_manager täitmine.
- Koodirida 28-32 : kuvatud kirjete väärtuse kuvamine.