Oracle PL / SQL Wstawianie, aktualizowanie, usuwanie i Wybierz do (przykład)

Spisie treści:

Anonim

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 UPDATE 
SET =,=,=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:

BEGINDELETEFROM
WHERE ;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.