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'.

Datavalg i PL/SQL

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.