W tym samouczku nauczymy się, jak używać SQL w PL / SQL. SQL jest rzeczywistym komponentem, który zajmuje się pobieraniem i aktualizacją danych w bazie danych, podczas gdy PL / SQL jest komponentem, który przetwarza te dane. Ponadto w tym artykule omówimy również sposób łączenia SQL w bloku PL / SQL.
W tym samouczku nauczysz się:
- Wstawianie danych
- Aktualizacja danych
- Usunięcie danych
- Wybór danych
Transakcje DML w PL / SQL
DML oznacza język manipulacji danymi . Te stwierdzenia służą głównie do wykonywania czynności manipulacyjnych. Zajmuje się poniższymi operacjami.
- Wstawianie danych
- Aktualizacja danych
- Usunięcie danych
- Wybór danych
W PL / SQL możemy manipulować danymi tylko za pomocą poleceń SQL.
Wstawianie danych
W PL / SQL możemy wstawić dane do dowolnej tabeli za pomocą polecenia SQL INSERT INTO. To polecenie przyjmie nazwę tabeli, kolumny tabeli i wartości kolumn jako dane wejściowe i wstawi wartość do tabeli bazowej.
Polecenie INSERT może również pobierać wartości bezpośrednio z innej tabeli za pomocą instrukcji „SELECT” zamiast podawania wartości dla każdej kolumny. Za pomocą instrukcji „SELECT” możemy wstawić tyle wierszy, ile zawiera tabela bazowa.
Składnia:
BEGININSERT INTO( , ,… )VALUES( ,… : );END;
- Powyższa składnia przedstawia polecenie INSERT INTO. Nazwa i wartości tabeli są polami obowiązkowymi, natomiast nazwy kolumn nie są obowiązkowe, jeśli instrukcje wstawiania mają wartości dla całej kolumny tabeli.
- Słowo kluczowe „VALUES” jest obowiązkowe, jeśli wartości są podane osobno, jak pokazano powyżej.
Składnia:
BEGININSERT INTO( , ,… , )SELECT , ,… FROM ;END;
- Powyższa składnia przedstawia polecenie INSERT INTO, które pobiera wartości bezpośrednio z
za pomocą polecenia SELECT. - W tym przypadku słowo kluczowe „VALUES” nie powinno być obecne, ponieważ wartości nie są podawane osobno.
Aktualizacja danych
Aktualizacja danych oznacza po prostu aktualizację wartości dowolnej kolumny w tabeli. Można to zrobić za pomocą instrukcji „UPDATE”. Ta instrukcja przyjmuje nazwę tabeli, nazwę kolumny i wartość jako dane wejściowe i aktualizuje dane.
Składnia:
BEGIN UPDATESET = , = , = WHERE ;END;
- Powyższa składnia przedstawia UPDATE. Słowo kluczowe „SET” instruuje silnik PL / SQL, aby zaktualizował wartość kolumny o podaną wartość.
- Klauzula „WHERE” jest opcjonalna. Brak tej klauzuli spowoduje zaktualizowanie wartości wspomnianej kolumny w całej tabeli.
Usunięcie danych
Usunięcie danych oznacza usunięcie jednego pełnego rekordu z tabeli bazy danych. Służy do tego polecenie „DELETE”.
Składnia:
BEGINDELETEFROMWHERE ;END;
- Powyższa składnia przedstawia polecenie DELETE. Słowo kluczowe „FROM” jest opcjonalne i z klauzulą „FROM” lub bez niej, polecenie zachowuje się w ten sam sposób.
- Klauzula „WHERE” jest opcjonalna. Jeśli ta klauzula nie zostanie podana, cała tabela zostanie usunięta.
Wybór danych
Projekcja / pobieranie danych oznacza pobieranie wymaganych danych z tabeli bazy danych. Można to osiągnąć za pomocą polecenia „SELECT” z klauzulą „INTO”. Polecenie „SELECT” pobierze wartości z bazy danych, a klauzula „INTO” przypisze te wartości do zmiennej lokalnej bloku PL / SQL.
Poniżej znajdują się punkty, które należy wziąć pod uwagę w instrukcji „SELECT”.
- Instrukcja „SELECT” powinna zwracać tylko jeden rekord podczas używania klauzuli „INTO”, ponieważ jedna zmienna może zawierać tylko jedną wartość. Jeśli instrukcja „SELECT” zwróci więcej niż jedną wartość, wyjątek „TOO_MANY_ROWS” zostanie zgłoszony.
- Instrukcja „SELECT” przypisze wartość do zmiennej w klauzuli „INTO”, więc musi pobrać co najmniej jeden rekord z tabeli, aby zapełnić tę wartość. Jeśli nie otrzyma żadnego rekordu, zgłaszany jest wyjątek „NO_DATA_FOUND”.
- Liczba kolumn i ich typ danych w klauzuli „SELECT” powinny odpowiadać liczbie zmiennych i ich typów danych w klauzuli „INTO”.
- Wartości są pobierane i wypełniane w tej samej kolejności, jak podano w instrukcji.
- Klauzula „WHERE” jest opcjonalna, co pozwala na większe ograniczenie rekordów, które będą pobierane.
- Instrukcja „SELECT” może być używana w warunku „WHERE” innych instrukcji DML do definiowania wartości warunków.
- Instrukcja „SELECT” używająca instrukcji „INSERT”, „UPDATE”, „DELETE” nie powinna zawierać klauzuli „INTO”, ponieważ w takich przypadkach nie wypełni żadnej zmiennej.
Składnia:
BEGINSELECT,… INTO ,… FROM WHERE ;END;
- Powyższa składnia przedstawia polecenie SELECT-INTO. Słowo kluczowe „FROM” jest obowiązkowe i określa nazwę tabeli, z której należy pobrać dane.
- Klauzula „WHERE” jest opcjonalna. Jeśli ta klauzula nie zostanie podana, zostaną pobrane dane z całej tabeli.
Przykład 1 : W tym przykładzie zobaczymy, jak wykonywać operacje DML w PL / SQL. Zamierzamy wstawić poniższe cztery rekordy do tabeli emp.
EMP_NAME | EMP_NO | WYNAGRODZENIE | MENEDŻER |
BBB | 1000 | 25000 | AAA |
XXX | 1001 | 10000 | BBB |
YYY | 1002 | 10000 | BBB |
ZZZ | 1003 | 7500 | BBB |
Następnie zaktualizujemy wynagrodzenie „XXX” do 15000 i skasujemy rekord pracownika „ZZZ”. Na koniec zaprojektujemy szczegóły pracownika „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;/
Wynik:
Values InsertedValues UpdatedValues DeletedEmployee DetailEmployee Name:XXXEmployee Number:1001Employee Salary:15000Employee Manager Name:BBB
Objaśnienie kodu:
- Linia kodu 2-5 : Deklarowanie zmiennej.
- Linia kodu 7-14 : Wstawianie rekordów do tabeli emp.
- Linia kodu 15 : Zatwierdzanie transakcji insertowych.
- Linia kodu 17-19 : Aktualizacja wynagrodzenia pracownika „XXX” do 15000
- Linia kodu 20 : Zatwierdzenie transakcji aktualizacji.
- Linia kodu 22 : Usuwanie rekordu „ZZZ”
- Linia kodu 23 : zatwierdzenie operacji usunięcia.
- Linia kodu 25-27 : wybór rekordu „XXX” i umieszczenie go w zmiennej l_emp_name, l_emp_no, l_salary, l_manager.
- Linia kodu 28-32 : wyświetlanie wartości pobranych rekordów.