V tomto kurzu se naučíme používat SQL v PL / SQL. SQL je skutečná komponenta, která se stará o načítání a aktualizaci dat v databázi, zatímco PL / SQL je komponenta, která tato data zpracovává. Dále v tomto článku probereme, jak kombinovat SQL v rámci bloku PL / SQL.
V tomto výukovém programu se naučíte
- Vkládání dat
- Aktualizace dat
- Vymazání dat
- Výběr dat
Transakce DML v PL / SQL
DML znamená Data Manipulation Language . Tyto příkazy se používají hlavně k provádění manipulační činnosti. Zabývá se níže uvedenými operacemi.
- Vkládání dat
- Aktualizace dat
- Vymazání dat
- Výběr dat
V PL / SQL můžeme manipulaci s daty provádět pouze pomocí příkazů SQL.
Vkládání dat
V PL / SQL můžeme data vložit do libovolné tabulky pomocí příkazu SQL INSERT INTO. Tento příkaz převezme jako vstup název tabulky, sloupec tabulky a hodnoty sloupce a vloží hodnotu do základní tabulky.
Příkaz INSERT může také převzít hodnoty přímo z jiné tabulky pomocí příkazu 'SELECT', místo aby udával hodnoty pro každý sloupec. Prostřednictvím příkazu 'SELECT' můžeme vložit tolik řádků, kolik obsahuje základní tabulka.
Syntax:
BEGININSERT INTO( , ,… )VALUES( ,… : );END;
- Výše uvedená syntaxe ukazuje příkaz INSERT INTO. Název a hodnoty tabulky jsou povinná pole, zatímco názvy sloupců nejsou povinné, pokud mají příkazy insert hodnoty pro celý sloupec tabulky.
- Klíčové slovo „HODNOTY“ je povinné, pokud jsou hodnoty uvedeny samostatně, jak je uvedeno výše.
Syntax:
BEGININSERT INTO( , ,… , )SELECT , ,… FROM ;END;
- Výše uvedená syntaxe ukazuje příkaz INSERT INTO, který přebírá hodnoty přímo z
pomocí příkazu SELECT. - Klíčové slovo „HODNOTY“ by v tomto případě nemělo být přítomno, protože hodnoty nejsou uvedeny samostatně.
Aktualizace dat
Aktualizace dat jednoduše znamená aktualizaci hodnoty kteréhokoli sloupce v tabulce. To lze provést pomocí příkazu „UPDATE“. Tento příkaz přebírá jako vstup název tabulky, název sloupce a hodnotu a aktualizuje data.
Syntax:
BEGIN UPDATESET = , = , = WHERE ;END;
- Výše uvedená syntaxe ukazuje UPDATE. Klíčové slovo „SET“ dává instrukci tomuto PL / SQL stroji, aby aktualizoval hodnotu sloupce o danou hodnotu.
- Klauzule „WHERE“ je volitelná. Pokud tato klauzule není uvedena, aktualizuje se hodnota uvedeného sloupce v celé tabulce.
Vymazání dat
Smazání dat znamená smazání jednoho celého záznamu z databázové tabulky. Pro tento účel se používá příkaz 'DELETE'.
Syntax:
BEGINDELETEFROMWHERE ;END;
- Výše uvedená syntaxe zobrazuje příkaz DELETE. Klíčové slovo „FROM“ je volitelné a s klauzulí „FROM“ nebo bez ní se příkaz chová stejným způsobem.
- Klauzule „WHERE“ je volitelná. Pokud tato klauzule není uvedena, bude odstraněna celá tabulka.
Výběr dat
Projekce / načítání dat znamená načtení požadovaných dat z databázové tabulky. Toho lze dosáhnout pomocí příkazu 'SELECT' s klauzulí 'INTO'. Příkaz 'SELECT' načte hodnoty z databáze a klauzule 'INTO' přiřadí tyto hodnoty místní proměnné bloku PL / SQL.
Níže jsou uvedeny body, které je třeba vzít v úvahu v příkazu 'SELECT'.
- Příkaz 'SELECT' by měl vrátit pouze jeden záznam při použití klauzule 'INTO', protože jedna proměnná může obsahovat pouze jednu hodnotu. Pokud příkaz 'SELECT' vrátí více než jednu hodnotu, bude vyvolána výjimka 'TOO_MANY_ROWS'.
- Příkaz 'SELECT' přiřadí hodnotu proměnné v klauzuli 'INTO', takže k naplnění hodnoty je třeba získat alespoň jeden záznam z tabulky. Pokud nezískalo žádný záznam, je vyvolána výjimka 'NO_DATA_FOUND'.
- Počet sloupců a jejich datový typ v klauzuli „SELECT“ by měl odpovídat počtu proměnných a jejich datových typů v klauzuli „INTO“.
- Hodnoty jsou načteny a naplněny ve stejném pořadí, jak je uvedeno ve výpisu.
- Klauzule „WHERE“ je volitelná, což umožňuje větší omezení záznamů, které se mají načíst.
- Příkaz 'SELECT' lze použít v podmínce 'WHERE' ostatních příkazů DML k definování hodnot podmínek.
- Příkaz „SELECT“ při použití příkazů „INSERT“, „UPDATE“ a „DELETE“ by neměl mít klauzuli „INTO“, protože v těchto případech nebude vyplňovat žádnou proměnnou.
Syntax:
BEGINSELECT,… INTO ,… FROM WHERE ;END;
- Výše uvedená syntaxe ukazuje příkaz SELECT-INTO. Klíčové slovo „FROM“ je povinné a identifikuje název tabulky, ze které je třeba data načíst.
- Klauzule „WHERE“ je volitelná. Pokud tato klauzule není uvedena, načtou se data z celé tabulky.
Příklad 1 : V tomto příkladu uvidíme, jak provádět operace DML v PL / SQL. Chystáme se vložit níže uvedené čtyři záznamy do emp tabulky.
EMP_NAME | EMP_NO | PLATBA | MANAŽER |
BBB | 1000 | 25 000 | AAA |
XXX | 1001 | 10 000 | BBB |
YYY | 1002 | 10 000 | BBB |
ZZZ | 1003 | 7500 | BBB |
Poté aktualizujeme plat „XXX“ na 15 000 a odstraníme záznam zaměstnance „ZZZ“. Nakonec promítneme podrobnosti o zaměstnanci „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;/
Výstup:
Values InsertedValues UpdatedValues DeletedEmployee DetailEmployee Name:XXXEmployee Number:1001Employee Salary:15000Employee Manager Name:BBB
Vysvětlení kódu:
- Řádek kódu 2-5 : Deklarace proměnné.
- Řádek kódu 7-14 : Vkládání záznamů do emp tabulky.
- Řádek kódu 15 : Potvrzení transakcí vložení.
- Řádek kódu 17-19 : Aktualizace platu zaměstnance „XXX“ na 15000
- Řádek kódu 20 : Potvrzení transakce aktualizace.
- Řádek kódu 22 : Odstranění záznamu „ZZZ“
- Řádek kódu 23 : Potvrzení transakce odstranění.
- Řádek kódu 25-27 : Výběr záznamu 'XXX' a naplnění do proměnné l_emp_name, l_emp_no, l_salary, l_manager.
- Řádek kódu 28-32 : Zobrazení hodnoty načtených záznamů.