Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak utworzyć zagnieżdżoną tabelę jako obiekt bazy danych w Oracle?

Jeśli planujesz ponownie użyć zagnieżdżonej tabeli, którą chcesz utworzyć, najlepszym rozwiązaniem dla Ciebie jest zrobienie tego jako obiektu bazy danych. Możesz przechowywać je na stałe w swojej bazie danych i używać ich, kiedy tylko chcesz.

Oprócz tworzenia kolekcji PL/SQL typu Tablica zagnieżdżona wewnątrz bloku PL/SQL można je również tworzyć jako obiekty bazy danych i przechowywać na stałe. Możesz także użyć ich ponownie, kiedy tylko chcesz. Zagnieżdżona tabela utworzona jako obiekt bazy danych może być oparta na pierwotnym typie danych lub typie danych zdefiniowanym przez użytkownika. W tym samouczku skoncentrujemy się na pierwszym, a drugie zostawimy do następnego samouczka.

Jak utworzyć kolekcję zagnieżdżonych typów tabeli w oparciu o pierwotny typ danych

Przez prymitywny typ danych rozumiemy typy danych, które są predefiniowane przez język i są nazwane zastrzeżonym słowem kluczowym. Możesz zapoznać się z tym dokumentem Oracle, aby dowiedzieć się więcej o typach danych PL/SQL.

Poniższe tabele nie mają żadnego ograniczenia, indeksu ani niczego na nich zaprojektowanego i zostały stworzone wyłącznie w celu zademonstrowania, jak utworzyć zagnieżdżoną tabelę jako obiekt bazy danych.

Krok 1:Włącz wyjście serwera

SET SERVEROUTPUT ON;

Krok 2:Utwórz kolekcję typów tabeli zagnieżdżonej

CREATE OR REPLACE TYPE my_nested_table IS TABLE OF VARCHAR2 (10);
/

Powyższa instrukcja dotycząca pomyślnego wykonania utworzy zagnieżdżoną tabelę o nazwie „moja_zagnieżdżona_tabela”, która będzie oparta na prymitywnym typie danych VARCHAR2.

Krok 3:Jak korzystać z tabeli zagnieżdżonej?

Typ kolekcji, który stworzyliśmy powyżej, może być użyty do określenia typu kolumny tabeli.

CREATE TABLE my_subject(
	  sub_id    	NUMBER,
	  sub_name  	VARCHAR2 (20),
	  sub_schedule_day    my_nested_table
) NESTED TABLE sub_schedule_day STORE AS nested_tab_space;
/

Powyższa tabela jest normalną tabelą, z wyjątkiem tego, że jej 3 kolumny są typu tabeli zagnieżdżonej, która może zawierać wiele wartości. Aby zdefiniować kolumnę tabeli jako typ tabeli zagnieżdżonej, musisz podać kompilatorowi nazwę kolumny i tabelę przechowywania. Możesz to zrobić za pomocą klauzuli NESTED ABLE i STORE AS, tak jak to zrobiliśmy w wierszu numer 5. Za pomocą klauzuli NESTED TABLE określamy nazwę kolumny, a za pomocą klauzuli STORE AS określamy tabelę przechowywania dla tabeli zagnieżdżonej.

Możesz zapoznać się z samouczkiem wideo, w którym krok po kroku wyjaśniłem powyższy proces tworzenia tabeli.

Wstaw wiersze do tabeli

INSERT INTO my_subject (sub_id, sub_name, sub_schedule_day)
VALUES (101, 'Maths', my_nested_table('mon', 'Fri'));

Wstawiasz wiersze do tabeli zagnieżdżonej tak samo, jak wstawiasz do tabeli normalnej. Jednak aby wstawić dane do kolumny typu zagnieżdżona tabela, musisz najpierw wpisać nazwę zagnieżdżonej tabeli, która w naszym przypadku to 'moja_zagnieżdżona_tabela' (patrz krok 2), a następnie zapisać dane zgodnie z typem danych zagnieżdżonej tabeli i umieść go w nawiasie.

Pobierz dane z tabeli

Do pobrania danych z tabeli można użyć prostej instrukcji SELECT DML.

SELECT * FROM my_subject;

To proste oświadczenie DML pokaże Ci wszystkie dane przechowywane w tabeli, którą utworzyliśmy powyżej. Aby zobaczyć dane z określonego wiersza, możesz użyć klauzuli WHERE z SELECT DML

SELECT * FROM my_subject WHERE sub_id = 101;

Jeśli chcesz, możesz skorzystać z podzapytania, aby po prostu sprawdzić dane z kolumny, którą zdefiniowałeś jako typ tabeli zagnieżdżonej.

SELECT * FROM TABLE (
  SELECT sub_schedule_day FROM my_subject WHERE sub_id = 101
);

Powyższe zapytanie pokaże Ci dane podmiotu, który ma identyfikator podmiotu 101 tylko z kolumny sub_schedule_day. W tym zapytaniu użyliśmy wyrażenia TABLE, aby otworzyć instancję i wyświetlić dane w formacie relacyjnym.

Zaktualizuj dane tabeli

Możesz zaktualizować wszystkie wartości kolumny, które definiujesz jako tabelę zagnieżdżoną, lub możesz zaktualizować pojedynczą jej instancję.

Zaktualizuj wszystkie wartości w kolumnie typu tabeli zagnieżdżonej.

UPDATE my_subject SET sub_schedule_day = my_nested_table('Tue', 'Sat') 
WHERE sub_id = 101;
/

Powyższe zapytanie zaktualizuje wszystkie wartości sub_schedule_day od „Pon”, „Pt” do „Wt” i „Sob”. Załóżmy teraz, że chcesz zaktualizować tylko jedno wystąpienie tej kolumny, zastępując „Sob” słowem „Cz”. Jak to zrobisz?

Zaktualizuj pojedyncze wystąpienie tabeli zagnieżdżonej

Aby zaktualizować pojedynczą instancję kolumny typu tabeli zagnieżdżonej, możesz ponownie skorzystać z wyrażenia TABLE.

UPDATE TABLE
  (SELECT sub_schedule_day FROM my_subject 
  WHERE sub_id = 101) A
SET A.COLUMN_VALUE   = 'Thur' 
WHERE A.COLUMN_VALUE = 'Sat';

Powyższe zapytanie zaktualizuje wartość z „Sob” na „Cz” w tabeli.

Mam nadzieję, że podobało Ci się czytanie i nauczyłeś się czegoś nowego. Pamiętaj, aby zasubskrybować nasz kanał, ponieważ wiele takich interesujących samouczków jest już w drodze. Dzięki i życzę miłego dnia!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Samozadowolenie prowadzi do:Ryzyko staje się rzeczywistością

  2. Zalecenia dotyczące obsługi Oracle i SQL Server w tej samej aplikacji ASP.NET z NHibernate

  3. Funkcja ABS() w Oracle

  4. ORA-12728:nieprawidłowy zakres w wyrażeniu regularnym

  5. Oracle nie rozróżnia wartości null i pustych ciągów?