U ovom uputstvu naučit ćemo kako koristiti SQL u PL / SQL-u. SQL je stvarna komponenta koja se brine za dohvaćanje i ažuriranje podataka u bazi podataka, dok je PL / SQL komponenta koja obrađuje te podatke. Dalje, u ovom ćemo članku također raspravljati o tome kako kombinirati SQL u bloku PL / SQL.
U ovom vodiču naučit ćete-
- Umetanje podataka
- Ažuriranje podataka
- Brisanje podataka
- Izbor podataka
DML transakcije u PL / SQL
DML je skraćenica od Data Manipulation Language . Te se izjave uglavnom koriste za izvođenje manipulacijske aktivnosti. Bavi se sljedećim operacijama.
- Umetanje podataka
- Ažuriranje podataka
- Brisanje podataka
- Izbor podataka
U PL / SQL-u možemo manipulirati podacima samo pomoću SQL naredbi.
Umetanje podataka
U PL / SQL podatke možemo umetnuti u bilo koju tablicu pomoću SQL naredbe INSERT INTO. Ova naredba će uzeti naziv tablice, vrijednosti stupca i vrijednosti stupca kao ulaz i unijeti vrijednost u osnovnu tablicu.
Naredba INSERT također može uzimati vrijednosti izravno iz druge tablice pomoću izraza 'SELECT', umjesto da daje vrijednosti za svaki stupac. Kroz naredbu 'SELECT' možemo umetnuti onoliko redaka koliko sadrži osnovna tablica.
Sintaksa:
BEGININSERT INTO( , ,… )VALUES( ,… : );END;
- Gornja sintaksa prikazuje naredbu INSERT INTO. Naziv i vrijednosti tablice su obavezna polja, dok nazivi stupaca nisu obvezni ako izrazi za umetanje imaju vrijednosti za sve stupce tablice.
- Ključna riječ 'VRIJEDNOSTI' obavezna je ako su vrijednosti date zasebno, kao što je gore prikazano.
Sintaksa:
BEGININSERT INTO( , ,… , )SELECT , ,… FROM ;END;
- Gornja sintaksa prikazuje naredbu INSERT INTO koja uzima vrijednosti izravno iz
pomoću naredbe SELECT. - Ključna riječ 'VRIJEDNOSTI' u ovom slučaju ne bi trebala biti prisutna jer vrijednosti nisu date zasebno.
Ažuriranje podataka
Ažuriranje podataka jednostavno znači ažuriranje vrijednosti bilo kojeg stupca u tablici. To se može učiniti pomoću naredbe 'UPDATE'. Ova izjava uzima naziv tablice, naziv stupca i vrijednost kao ulaz i ažurira podatke.
Sintaksa:
BEGIN UPDATESET = , = , = WHERE ;END;
- Gornja sintaksa prikazuje UPDATE. Ključna riječ 'SET' upućuje PL / SQL mehanizam da ažurira vrijednost stupca zadanom vrijednošću.
- Klauzula "WHERE" nije obavezna. Ako ova klauzula nije dana, tada će se vrijednost spomenutog stupca u cijeloj tablici ažurirati.
Brisanje podataka
Brisanje podataka znači brisanje jednog cjelovitog zapisa iz tablice baze podataka. U tu svrhu koristi se naredba 'DELETE'.
Sintaksa:
BEGINDELETEFROMWHERE ;END;
- Gornja sintaksa prikazuje naredbu DELETE. Ključna riječ 'FROM' nije obavezna i sa ili bez klauzule 'FROM' naredba se ponaša na isti način.
- Klauzula "WHERE" nije obavezna. Ako ova klauzula nije dana, tada će se izbrisati cijela tablica.
Izbor podataka
Projekcija / dohvaćanje podataka znači preuzimanje potrebnih podataka iz tablice baze podataka. To se može postići upotrebom naredbe 'SELECT' s klauzulom 'INTO'. Naredba 'SELECT' donijet će vrijednosti iz baze podataka, a klauzula 'INTO' dodijelit će te vrijednosti lokalnoj varijabli PL / SQL bloka.
Ispod su točke koje treba uzeti u obzir u izjavi 'SELECT'.
- Izraz 'SELECT' trebao bi vratiti samo jedan zapis dok se koristi klauzulom 'INTO' jer jedna varijabla može sadržavati samo jednu vrijednost. Ako izraz "SELECT" vrati više od jedne vrijednosti, pojavit će se iznimka "TOO_MANY_ROWS".
- Izraz 'SELECT' dodijelit će vrijednost varijabli u klauzuli 'INTO', tako da treba popuniti barem jedan zapis iz tablice za popunjavanje vrijednosti. Ako nije dobio nikakav zapis, tada se postavlja izuzetak 'NO_DATA_FOUND'.
- Broj stupaca i njihov tip podataka u klauzuli 'SELECT' trebali bi se podudarati s brojem varijabli i njihovim vrstama podataka u klauzuli 'INTO'.
- Vrijednosti se dohvaćaju i popunjavaju istim redoslijedom kako je spomenuto u izjavi.
- Klauzula 'WHERE' nije obavezna koja omogućuje veće ograničenje zapisa koji će se dohvaćati.
- Izraz 'SELECT' može se koristiti u uvjetu 'WHERE' ostalih DML izraza za definiranje vrijednosti uvjeta.
- Izraz 'SELECT' kada koristi izraze 'INSERT', 'UPDATE', 'DELETE' ne bi trebao sadržavati klauzulu 'INTO', jer u tim slučajevima neće popuniti nijednu varijablu.
Sintaksa:
BEGINSELECT,… INTO ,… FROM WHERE ;END;
- Gornja sintaksa prikazuje naredbu SELECT-INTO. Ključna riječ 'FROM' obavezna je koja identificira naziv tablice iz koje treba dohvatiti podatke.
- Klauzula "WHERE" nije obavezna. Ako ova klauzula nije dana, dohvatit će se podaci iz cijele tablice.
Primjer 1 : U ovom ćemo primjeru vidjeti kako izvoditi DML operacije u PL / SQL-u. Ubacit ćemo donja četiri zapisa u emp tablicu.
EMP_NAME | EMP_NO | PLAĆA | MENADŽER |
BBB | 1000 | 25000 | AAA |
XXX | 1001 | 10000 | BBB |
GGG | 1002 | 10000 | BBB |
ZZZ | 1003 | 7500 | BBB |
Tada ćemo ažurirati plaću od "XXX" na 15000, a izbrisat ćemo evidenciju zaposlenika "ZZZ". Konačno, projicirat ćemo detalje zaposlenika '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;/
Izlaz:
Values InsertedValues UpdatedValues DeletedEmployee DetailEmployee Name:XXXEmployee Number:1001Employee Salary:15000Employee Manager Name:BBB
Objašnjenje koda:
- Redak koda 2-5 : Deklariranje varijable.
- Redak koda 7-14 : Umetanje zapisa u emp tablicu.
- Redak koda 15 : Predaja umetanja transakcija.
- Šifarski redak 17-19 : Ažuriranje plaće zaposlenika 'XXX' na 15000
- Redak koda 20 : Predavanje transakcije ažuriranja.
- Linija koda 22 : Brisanje zapisa "ZZZ"
- Redak koda 23 : Predaja transakcije brisanja.
- Redak koda 25-27 : Odabir zapisa 'XXX' i popunjavanje u varijablu l_emp_name, l_emp_no, l_salary, l_manager.
- Linija koda 28-32 : Prikaz vrijednosti dohvaćenih zapisa.