I den här handledningen ska vi lära oss hur man använder SQL i PL / SQL. SQL är den faktiska komponenten som tar hand om att hämta och uppdatera data i databasen medan PL / SQL är den komponent som behandlar dessa data. I den här artikeln kommer vi också att diskutera hur man kombinerar SQL i PL / SQL-blocket.
I den här handledningen lär du dig-
- Datainsättning
- Uppdatering av data
- Radering av data
- Val av data
DML-transaktioner i PL / SQL
DML står för Data Manipulation Language . Dessa uttalanden används främst för att utföra manipuleringsaktiviteten. Den behandlar nedanstående operationer.
- Datainsättning
- Uppdatering av data
- Radering av data
- Val av data
I PL / SQL kan vi bara göra datahantering genom att använda SQL-kommandona.
Datainsättning
I PL / SQL kan vi infoga data i valfri tabell med SQL-kommandot INSERT INTO. Detta kommando tar tabellnamnet, tabellkolumnen och kolumnvärdena som inmatning och infogar värdet i bastabellen.
INSERT-kommandot kan också ta värdena direkt från en annan tabell med hjälp av 'VÄLJ' -uttryck snarare än att ge värdena för varje kolumn. Genom 'VÄLJ' uttalande kan vi infoga så många rader som bastabellen innehåller.
Syntax:
BEGININSERT INTO( , ,… )VALUES( ,… : );END;
- Ovanstående syntax visar kommandot INSERT INTO. Tabellnamnet och värdena är obligatoriska fält, medan kolumnnamn inte är obligatoriska om infogade uttalanden har värden för hela kolumnen i tabellen.
- Nyckelordet "VÄRDEN" är obligatoriskt om värdena ges separat enligt ovan.
Syntax:
BEGININSERT INTO( , ,… , )SELECT , ,… FROM ;END;
- Ovanstående syntax visar INSERT INTO-kommandot som tar värdena direkt från
med SELECT-kommandot. - Nyckelordet "VÄRDEN" bör inte finnas i detta fall eftersom värdena inte ges separat.
Uppdatering av data
Datauppdatering betyder helt enkelt en uppdatering av värdet på vilken kolumn som helst i tabellen. Detta kan göras med hjälp av 'UPDATE' uttalande. Detta uttalande tar tabellnamnet, kolumnnamnet och värdet som inmatning och uppdaterar data.
Syntax:
BEGIN UPDATESET = , = , = WHERE ;END;
- Ovanstående syntax visar UPPDATERINGEN. Nyckelordet 'SET' instruerar att PL / SQL-motorn ska uppdatera kolumnens värde med det angivna värdet.
- 'WHERE' klausul är valfri. Om denna klausul inte ges uppdateras värdet för den nämnda kolumnen i hela tabellen.
Radering av data
Dataradering betyder att ta bort en fullständig post från databastabellen. Kommandot 'RADERA' används för detta ändamål.
Syntax:
BEGINDELETEFROMWHERE ;END;
- Ovanstående syntax visar kommandot DELETE. Nyckelordet "FROM" är valfritt och med eller utan "FROM" -sats fungerar kommandot på samma sätt.
- 'WHERE' klausul är valfri. Om denna klausul inte ges kommer hela tabellen att raderas.
Val av data
Dataprojektion / -hämtning betyder att hämta nödvändiga data från databastabellen. Detta kan uppnås genom att använda kommandot "SELECT" med "INTO" -satsen. Kommandot 'SELECT' hämtar värdena från databasen och 'INTO' -satsen tilldelar dessa värden till den lokala variabeln i PL / SQL-blocket.
Nedan följer de punkter som måste beaktas i 'VÄLJ' uttalande.
- 'VÄLJ' -uttrycket ska endast returnera en post medan 'INTO' -satsen används, eftersom en variabel bara kan innehålla ett värde. Om 'VÄLJ' -uttrycket returnerar mer än ett värde än 'TOO_MANY_ROWS' kommer undantaget att höjas.
- 'VÄLJ' uttalande tilldelar värdet till variabeln i 'INTO' satsen, så det måste hämta minst en post från tabellen för att fylla i värdet. Om det inte fick någon post, tas undantaget 'NO_DATA_FOUND' upp.
- Antalet kolumner och deras datatyp i "SELECT" -satsen ska matcha antalet variabler och deras datatyper i "INTO" -satsen.
- Värdena hämtas och fylls i samma ordning som nämns i uttalandet.
- 'WHERE'-klausulen är valfri som gör det möjligt att ha fler begränsningar för de poster som ska hämtas.
- 'SELECT' -uttryck kan användas i 'WHERE'-tillståndet i andra DML-satser för att definiera villkoren.
- Uttrycket "VÄLJ" när du använder "INSERT", "UPDATE", "DELETE" -uttalanden bör inte ha "INTO" -satsen eftersom det inte fyller någon variabel i dessa fall.
Syntax:
BEGINSELECT,… INTO ,… FROM WHERE ;END;
- Ovanstående syntax visar kommandot SELECT-INTO. Nyckelordet "FROM" är obligatoriskt som identifierar det tabellnamn som data måste hämtas från.
- 'WHERE' klausul är valfri. Om denna klausul inte ges kommer data från hela tabellen att hämtas.
Exempel 1 : I det här exemplet ska vi se hur man utför DML-operationer i PL / SQL. Vi ska infoga nedanstående fyra poster i emp-tabellen.
EMP_NAME | EMP_NO | LÖN | CHEF |
BBB | 1000 | 25000 | AAA |
XXX | 1001 | 10000 | BBB |
ÅÅÅ | 1002 | 10000 | BBB |
ZZZ | 1003 | 7500 | BBB |
Sedan ska vi uppdatera lönen på 'XXX' till 15000, och vi kommer att ta bort medarbetarregistret 'ZZZ'. Slutligen ska vi projicera detaljerna för den anställde '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;/
Produktion:
Values InsertedValues UpdatedValues DeletedEmployee DetailEmployee Name:XXXEmployee Number:1001Employee Salary:15000Employee Manager Name:BBB
Kodförklaring:
- Kodrad 2-5 : Deklarera variabeln.
- Kodrad 7-14 : Infoga poster i emp-tabellen.
- Kodrad 15 : Genomföra insättningstransaktioner.
- Kodrad 17-19 : Uppdatering av lönen för den anställde 'XXX' till 15000
- Kodrad 20 : Genomför uppdateringstransaktionen.
- Kodrad 22 : Radera posten för 'ZZZ'
- Kodrad 23 : Begår borttagningstransaktionen.
- Kodrad 25-27 : Välja posten för 'XXX' och fylla i variabeln l_emp_name, l_emp_no, l_salary, l_manager.
- Kodrad 28-32 : Visar det hämtade postvärdet.