Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara Membuat Tabel Bersarang Sebagai Objek Database Di Oracle

Jika Anda berencana untuk menggunakan kembali tabel bersarang yang ingin Anda buat, maka melakukannya sebagai objek database adalah pilihan terbaik untuk Anda. Anda dapat menyimpannya di database Anda secara permanen dan menggunakannya kapan pun Anda mau.

Selain membuat Nested Table tipe PL/SQL Collection di dalam blok PL/SQL Anda juga dapat membuatnya sebagai objek database dan menyimpannya secara permanen. Anda juga dapat menggunakannya kembali kapan pun Anda mau. Tabel bersarang yang dibuat sebagai objek database dapat didasarkan pada Tipe Data Primitif atau Tipe Data Definisi Pengguna. Dalam tutorial ini kita akan berkonsentrasi pada yang pertama dan meninggalkan yang terakhir untuk tutorial berikutnya.

Cara Membuat kumpulan tipe tabel Bersarang berdasarkan tipe data primitif

Dengan tipe data primitif yang kami maksud adalah tipe data yang telah ditentukan sebelumnya oleh bahasa dan diberi nama oleh kata kunci yang dicadangkan. Anda dapat merujuk ke Dokumen Oracle ini untuk membaca lebih lanjut tentang Tipe Data PL/SQL.

Tabel berikut tidak memiliki batasan, indeks, atau apa pun yang dirancang di atasnya dan dibuat murni untuk mendemonstrasikan cara membuat tabel bersarang sebagai objek database.

Langkah 1:Setel keluaran Server pada

SET SERVEROUTPUT ON;

Langkah 2:Buat kumpulan jenis Tabel Bersarang

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

Pernyataan di atas tentang eksekusi yang berhasil akan membuat tabel bersarang dengan nama 'my_nested_table' yang akan didasarkan pada tipe data primitif VARCHAR2.

Langkah 3:Bagaimana cara menggunakan tabel bersarang?

Tipe koleksi yang kita buat di atas dapat digunakan untuk menentukan tipe kolom dari sebuah tabel.

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;
/

Tabel di atas adalah tabel normal kecuali 3 kolomnya adalah tipe tabel bersarang yang dapat menampung banyak nilai. Untuk mendefinisikan kolom tabel sebagai tipe tabel bersarang, Anda harus memberi tahu kompiler nama kolom dan tabel penyimpanan. Anda dapat melakukannya dengan menggunakan klausa NESTED ABLE dan STORE AS, seperti yang kami lakukan di sini pada baris nomor 5. Menggunakan klausa NESTED TABLE kami menentukan nama kolom dan menggunakan klausa STORE AS kami menentukan tabel penyimpanan untuk tabel bersarang.

Anda dapat merujuk ke video tutorial di mana saya telah menjelaskan secara bertahap proses pembuatan tabel di atas.

Menyisipkan baris ke dalam tabel

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

Anda menyisipkan baris ke tabel bersarang sama seperti Anda menyisipkan ke tabel normal. Namun untuk memasukkan data ke dalam kolom tipe tabel bersarang Anda harus terlebih dahulu menulis nama tabel bersarang yang dalam kasus kami adalah 'my_nested_table' (lihat langkah 2) dan kemudian tulis data sesuai dengan tipe data tabel bersarang Anda dan sertakan di dalam tanda kurung.

Ambil data dari tabel

Pernyataan DML SELECT sederhana dapat digunakan untuk mengambil data dari tabel.

SELECT * FROM my_subject;

Pernyataan DML sederhana ini akan menunjukkan kepada Anda semua data yang disimpan ke dalam tabel yang kami buat di atas. Untuk melihat data dari baris tertentu, Anda dapat menggunakan klausa WHERE dengan SELECT DML

SELECT * FROM my_subject WHERE sub_id = 101;

Jika mau, Anda dapat menggunakan bantuan sub-query untuk hanya memeriksa data dari kolom yang Anda definisikan sebagai tipe tabel bersarang.

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

Query di atas akan menampilkan data subjek yang memiliki subject-id 101 hanya dari kolom sub_schedule_day. Dalam kueri ini kami menggunakan ekspresi TABLE untuk membuka instance dan menampilkan data dalam format relasional.

Memperbarui data tabel

Anda dapat memperbarui semua nilai kolom yang Anda definisikan sebagai tabel bersarang atau Anda dapat memperbarui satu instance yang sama.

Perbarui semua nilai kolom jenis tabel bertingkat.

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

Kueri di atas akan memperbarui semua nilai sub_schedule_day dari 'Senin', 'Jumat' hingga 'Selasa' dan 'Sab'. Sekarang misalkan Anda ingin memperbarui hanya satu contoh kolom ini dengan mengganti 'Sab' dengan 'Kamis'. Bagaimana Anda akan melakukannya?

Memperbarui satu contoh tabel bersarang

Untuk memperbarui satu contoh kolom tipe tabel bersarang, Anda dapat sekali lagi menggunakan bantuan ekspresi 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';

Kueri di atas akan memperbarui nilai dari 'Sab' menjadi 'Kamis' di tabel.

Semoga Anda menikmati membaca dan belajar sesuatu yang baru. Pastikan untuk berlangganan saluran kami karena banyak tutorial menarik sedang dalam perjalanan. Terima kasih &semoga harimu menyenangkan!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara meningkatkan buffer dbms_output?

  2. Oracle sql untuk menghitung instance dari nilai yang berbeda dalam satu kolom

  3. Apakah ada rekomendasi resmi Oracle tentang penggunaan eksplisit ANSI JOIN vs implisit join?

  4. Konfigurasikan Hibernate untuk menggunakan Oracle's SYS_GUID() untuk Primary Key

  5. Bagaimana cara memilih dan mengoptimalkan indeks Oracle?