Oracle PL / SQL invoegen, bijwerken, verwijderen & Selecteer in (voorbeeld)

Inhoudsopgave:

Anonim

In deze tutorial gaan we leren hoe we SQL in PL / SQL kunnen gebruiken. SQL is het eigenlijke onderdeel dat zorgt voor het ophalen en bijwerken van gegevens in de database, terwijl PL / SQL het onderdeel is dat deze gegevens verwerkt. Verder zullen we in dit artikel ook bespreken hoe de SQL binnen het PL / SQL-blok kan worden gecombineerd.

In deze tutorial leer je-

  • Gegevens invoegen
  • Gegevensupdate
  • Verwijdering van gegevens
  • Gegevensselectie

DML-transacties in PL / SQL

DML staat voor Data Manipulation Language . Deze verklaringen worden voornamelijk gebruikt om de manipulatieactiviteit uit te voeren. Het behandelt de onderstaande bewerkingen.

  • Gegevens invoegen
  • Gegevensupdate
  • Verwijdering van gegevens
  • Gegevensselectie

In PL / SQL kunnen we de gegevensmanipulatie alleen uitvoeren door de SQL-opdrachten te gebruiken.

Gegevens invoegen

In PL / SQL kunnen we de gegevens in elke tabel invoegen met behulp van het SQL-commando INSERT INTO. Deze opdracht neemt de tabelnaam, tabelkolom en kolomwaarden als invoer en voegt de waarde in de basistabel in.

Het INSERT-commando kan de waarden ook rechtstreeks uit een andere tabel halen met behulp van de 'SELECT'-instructie in plaats van de waarden voor elke kolom op te geven. Via de 'SELECT'-instructie kunnen we zoveel rijen invoegen als de basistabel bevat.

Syntaxis:

BEGININSERT INTO 
(,,… )VALUES(,… :);END;
  • De bovenstaande syntaxis toont de opdracht INSERT INTO. De tabelnaam en waarden zijn verplichte velden, terwijl kolomnamen niet verplicht zijn als de invoeginstructies waarden bevatten voor alle kolommen van de tabel.
  • Het trefwoord 'VALUES' is verplicht als de waarden afzonderlijk worden opgegeven, zoals hierboven weergegeven.

Syntaxis:

BEGININSERT INTO 
(,,… ,)SELECT ,,…  FROM 
;END;
  • De bovenstaande syntaxis toont het INSERT INTO-commando dat de waarden rechtstreeks uit de haalt met behulp van het SELECT-commando.
  • Het trefwoord 'VALUES' mag in dit geval niet aanwezig zijn, aangezien de waarden niet afzonderlijk worden gegeven.

Gegevensupdate

Gegevensupdate betekent eenvoudigweg een update van de waarde van een kolom in de tabel. Dit kan gedaan worden met behulp van de 'UPDATE'-instructie. Deze instructie neemt de tabelnaam, kolomnaam en waarde als invoer en werkt de gegevens bij.

Syntaxis:

BEGIN UPDATE 
SET =,=,=WHERE ;END;
  • De bovenstaande syntaxis toont de UPDATE. Het sleutelwoord 'SET' instrueert die PL / SQL-engine om de waarde van de kolom bij te werken met de opgegeven waarde.
  • 'WHERE'-clausule is optioneel. Als deze clausule niet wordt gegeven, wordt de waarde van de genoemde kolom in de hele tabel bijgewerkt.

Verwijdering van gegevens

Het verwijderen van gegevens betekent dat één volledig record uit de databasetabel wordt verwijderd. Hiervoor wordt het commando 'DELETE' gebruikt.

Syntaxis:

BEGINDELETEFROM
WHERE ;END;
  • De bovenstaande syntaxis toont het DELETE-commando. Het sleutelwoord 'FROM' is optioneel en met of zonder 'FROM' -clausule gedraagt ​​het commando zich op dezelfde manier.
  • 'WHERE'-clausule is optioneel. Als deze clausule niet wordt gegeven, wordt de hele tabel verwijderd.

Gegevensselectie

Gegevensprojectie / ophalen betekent het ophalen van de vereiste gegevens uit de databasetabel. Dit kan worden bereikt door het commando 'SELECT' met 'INTO' clausule te gebruiken. De 'SELECT'-opdracht haalt de waarden op uit de database en de' INTO'-clausule wijst deze waarden toe aan de lokale variabele van het PL / SQL-blok.

Hieronder staan ​​de punten waarmee rekening moet worden gehouden in de 'SELECT'-instructie.

  • 'SELECT'-instructie zou slechts één record moeten retourneren terwijl de' INTO'-clausule wordt gebruikt, aangezien één variabele slechts één waarde kan bevatten. Als de instructie 'SELECT' meer dan één waarde retourneert, wordt de uitzondering 'TOO_MANY_ROWS' gegenereerd.
  • De 'SELECT'-instructie wijst de waarde toe aan de variabele in de' INTO'-clausule, dus het moet ten minste één record uit de tabel halen om de waarde te vullen. Als het geen record heeft gekregen, wordt de uitzondering 'NO_DATA_FOUND' gegenereerd.
  • Het aantal kolommen en hun datatype in de 'SELECT'-clausule moet overeenkomen met het aantal variabelen en hun datatypes in de' INTO'-clausule.
  • De waarden worden opgehaald en ingevuld in dezelfde volgorde als vermeld in de instructie.
  • De 'WHERE'-clausule is optioneel en biedt meer beperkingen voor de records die worden opgehaald.
  • 'SELECT'-instructie kan worden gebruikt in de' WHERE'-voorwaarde van andere DML-instructies om de waarden van de voorwaarden te definiëren.
  • De 'SELECT'-instructie bij het gebruik van de' INSERT'-, 'UPDATE'-,' DELETE'-instructies mag geen 'INTO'-clausule hebben, aangezien deze in deze gevallen geen enkele variabele zal vullen.

Syntaxis:

BEGINSELECT ,…  INTO ,… FROM 
WHERE ;END;
  • De bovenstaande syntaxis toont de SELECT-INTO-opdracht. Het sleutelwoord 'FROM' is verplicht en identificeert de tabelnaam waaruit de gegevens moeten worden opgehaald.
  • 'WHERE'-clausule is optioneel. Als deze clausule niet wordt gegeven, worden de gegevens uit de hele tabel opgehaald.

Voorbeeld 1 : in dit voorbeeld gaan we zien hoe we DML-bewerkingen in PL / SQL kunnen uitvoeren. We gaan de onderstaande vier records in de emp-tabel invoegen.

EMP_NAME EMP_NO SALARIS MANAGER
BBB 1000 25000 AAA
XXX 1001 10000 BBB
JJJ 1002 10000 BBB
ZZZ 1003 7500 BBB

Daarna gaan we het salaris van 'XXX' updaten naar 15.000, en gaan we het werknemersrecord 'ZZZ' verwijderen. Ten slotte gaan we de details van de medewerker 'XXX' projecteren.

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;/

Uitgang:

Values InsertedValues UpdatedValues DeletedEmployee DetailEmployee Name:XXXEmployee Number:1001Employee Salary:15000Employee Manager Name:BBB

Code Verklaring:

  • Coderegel 2-5 : de variabele declareren.
  • Coderegel 7-14 : de records invoegen in de emp-tabel.
  • Coderegel 15 : het vastleggen van de invoegtransacties.
  • Coderegel 17-19 : Bijwerken van het salaris van de werknemer 'XXX' naar 15.000
  • Coderegel 20 : de updatetransactie uitvoeren.
  • Coderegel 22 : Verwijderen van het record van 'ZZZ'
  • Coderegel 23 : de verwijdertransactie uitvoeren.
  • Coderegel 25-27 : Het record van 'XXX' selecteren en invullen in de variabele l_emp_name, l_emp_no, l_salary, l_manager.
  • Coderegel 28-32 : de waarde van de opgehaalde records weergeven.