Oracle PL/SQL Sett inn, oppdater, slett og velg i [Eksempel]
I denne opplæringen skal vi lære å bruke SQL i PL/SQL. SQL er selve komponenten som tar seg av henting og oppdatering av data i databasen, mens PL/SQL er komponenten som behandler disse dataene. Videre, i denne artikkelen, vil vi også diskutere hvordan du kombinerer SQL i PL/SQL-blokken.
DML-transaksjoner i PL/SQL
DML står for Datamanipulasjonsspråk. Disse uttalelsene brukes hovedsakelig til å utføre manipulasjonsaktiviteten. Den omhandler operasjonene nedenfor.
- Datainnsetting
- Dataoppdatering
- Sletting av data
- Datavalg
I PL/SQL kan vi bare gjøre datamanipulasjonen ved å bruke SQL-kommandoene.
Datainnsetting
I PL/SQL kan vi sette inn dataene i en hvilken som helst tabell ved å bruke SQL-kommandoen INSERT INTO. Denne kommandoen tar tabellnavnet, tabellkolonnen og kolonneverdiene som input og setter inn verdien i basistabellen.
INSERT-kommandoen kan også ta verdiene direkte fra en annen tabell ved å bruke 'SELECT'-setningen i stedet for å gi verdiene for hver kolonne. Gjennom 'SELECT'-setningen kan vi sette inn så mange rader som basistabellen inneholder.
Syntaks:
BEGIN INSERT INTO <table_name>(<column1 >,<column2>,...<column_n>) VALUES(<valuel><value2>,...:<value_n>); END;
- Syntaksen ovenfor viser INSERT INTO-kommandoen. Tabellnavnet og verdiene er obligatoriske felt, mens kolonnenavn ikke er obligatoriske hvis insert-setningene har verdier for alle kolonnene i tabellen.
- Nøkkelordet 'VERDIER' er obligatorisk hvis verdiene er gitt separat som vist ovenfor.
Syntaks:
BEGIN INSERT INTO <table_name>(<columnl>,<column2>,...,<column_n>) SELECT <columnl>,<column2>,.. <column_n> FROM <table_name2>; END;
- Syntaksen ovenfor viser INSERT INTO-kommandoen som tar verdiene direkte fra ved å bruke SELECT-kommandoen.
- Søkeordet 'VERDIER' skal ikke være til stede i dette tilfellet, siden verdiene ikke er gitt separat.
Dataoppdatering
Dataoppdatering betyr ganske enkelt en oppdatering av verdien til en hvilken som helst kolonne i tabellen. Dette kan gjøres ved å bruke 'UPDATE'-setningen. Denne setningen tar tabellnavnet, kolonnenavnet og verdien som input og oppdaterer dataene.
Syntaks:
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;
- Syntaksen ovenfor viser OPPDATERING. Nøkkelordet 'SET' instruerer at PL/SQL-motoren skal oppdatere verdien av kolonnen med verdien som er gitt.
- 'WHERE'-klausulen er valgfri. Hvis denne klausulen ikke er gitt, vil verdien av den nevnte kolonnen i hele tabellen bli oppdatert.
Sletting av data
Datasletting betyr å slette én full post fra databasetabellen. Kommandoen 'DELETE' brukes til dette formålet.
Syntaks:
BEGIN DELETE FROM <table_name> WHERE <condition that uniquely identifies the record that needs to be update>; END;
- Syntaksen ovenfor viser DELETE-kommandoen. Nøkkelordet 'FROM' er valgfritt og med eller uten 'FROM'-klausul oppfører kommandoen seg på samme måte.
- 'WHERE'-klausulen er valgfri. Hvis denne klausulen ikke er gitt, vil hele tabellen bli slettet.
Datavalg
Dataprojeksjon/henting betyr å hente de nødvendige dataene fra databasetabellen. Dette kan oppnås ved å bruke kommandoen 'SELECT' med 'INTO'-klausulen. 'SELECT'-kommandoen vil hente verdiene fra databasen, og 'INTO'-klausulen vil tilordne disse verdiene til den lokale variabelen til PL/SQL-blokk.
Nedenfor er punktene som må vurderes i 'SELECT'-setningen.
- 'SELECT'-setningen skal bare returnere én post mens du bruker 'INTO'-klausulen, da én variabel bare kan inneholde én verdi. Hvis "SELECT"-setningen returnerer mer enn én verdi, vil unntaket "TOO_MANY_ROWS" økes.
- 'SELECT'-setningen vil tilordne verdien til variabelen i 'INTO'-leddet, så den må hente minst én post fra tabellen for å fylle ut verdien. Hvis den ikke fikk noen post, er unntaket 'NO_DATA_FOUND' hevet.
- Antall kolonner og deres datatype i 'SELECT'-leddet skal samsvare med antallet variabler og deres datatyper i 'INTO'-leddet.
- Verdiene hentes og fylles ut i samme rekkefølge som nevnt i setningen.
- 'WHERE'-klausulen er valgfri som gjør det mulig å ha flere begrensninger på postene som skal hentes.
- 'SELECT'-setningen kan brukes i 'WHERE'-tilstanden til andre DML-setninger for å definere verdiene til betingelsene.
- 'SELECT'-setningen ved bruk av 'INSERT', 'UPDATE', 'DELETE'-setninger skal ikke ha 'INTO'-ledd, da den ikke vil fylle ut noen variabel i disse tilfellene.
Syntaks:
BEGIN SELECT <columnl>,..<column_n> INTO <vanable 1 >,. .<variable_n> FROM <table_name> WHERE <condition to fetch the required records>; END;
- Syntaksen ovenfor viser SELECT-INTO-kommandoen. Nøkkelordet 'FROM' er obligatorisk som identifiserer tabellnavnet som dataene må hentes fra.
- 'WHERE'-klausulen er valgfri. Hvis denne klausulen ikke er gitt, vil dataene fra hele tabellen bli hentet.
Eksempel 1: I dette eksemplet skal vi se hvordan du utfører DML-operasjoner i PL / SQL. Vi skal sette inn de fire postene nedenfor i emp-tabellen.
EMP_NAME | EMP_NO | LØNN | SJEF |
---|---|---|---|
BBB | 1000 | 25000 | AAA |
XXX | 1001 | 10000 | BBB |
ÅÅÅ | 1002 | 10000 | BBB |
ZZZ | 1003 | 7500 | BBB |
Deretter skal vi oppdatere lønnen til 'XXX' til 15000, og vi skal slette ansattposten 'ZZZ'. Til slutt skal vi projisere detaljene til den ansatte '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; /
Utgang:
Values Inserted Values Updated Values Deleted Employee Detail Employee Name:XXX Employee Number:1001 Employee Salary:15000 Employee Manager Name:BBB
Kodeforklaring:
- Kodelinje 2-5: Deklarerer variabelen.
- Kodelinje 7-14: Setter inn postene i emp-tabellen.
- Kodelinje 15: Forplikter innsettingstransaksjonene.
- Kodelinje 17-19: Oppdaterer lønnen til den ansatte 'XXX' til 15000
- Kodelinje 20: Begår oppdateringstransaksjonen.
- Kodelinje 22: Sletter posten til 'ZZZ'
- Kodelinje 23: Begår slettetransaksjonen.
- Kodelinje 25-27: Velger posten 'XXX' og fyller inn i variabelen l_emp_name, l_emp_no, l_salary, l_manager.
- Kodelinje 28-32: Viser verdien for hentede poster.