Skip to content
Pertemuan 5: View

Pertemuan 5: View

Pada pertemuan ini, mahasiswa akan mempelajari view, yaitu query tersimpan yang menghasilkan result set ketika dipanggil. Jika pada pertemuan sebelumnya mahasiswa berfokus pada sub query untuk menyusun query bertingkat, maka pada pertemuan ini pembelajaran diarahkan pada cara menyimpan query menjadi objek yang dapat dipanggil kembali seperti tabel virtual.

Modul ini disusun untuk membantu mahasiswa memahami bahwa dalam praktik basis data, ada query-query tertentu yang sering digunakan berulang kali. Agar lebih rapi, mudah dipanggil, dan lebih mudah dikelola, query tersebut dapat dibungkus ke dalam sebuah view. Dengan cara ini, pengguna tidak perlu selalu menulis ulang query yang sama dari awal.

Secara umum, modul ini memuat tujuan pembelajaran, gambaran umum materi, materi inti mengenai konsep dan pengelolaan view, serta aktivitas praktikum untuk mencoba pembuatan, perubahan, pengujian, dan penghapusan view secara langsung. Melalui susunan ini, mahasiswa diharapkan memahami terlebih dahulu konsep view sebelum masuk ke tahap praktik.

Tujuan Pembelajaran

Setelah mengikuti praktikum pada pertemuan ini, mahasiswa diharapkan mampu:

  1. menjelaskan konsep view sebagai query tersimpan dan tabel virtual,
  2. membuat view sederhana dan view dengan nama kolom khusus,
  3. memahami penggunaan atribut algoritma MERGE, TEMPTABLE, dan UNDEFINED,
  4. menjelaskan konsep updatable view dan syarat-syaratnya,
  5. memahami penggunaan WITH CHECK OPTION beserta perbedaan LOCAL dan CASCADED,
  6. mengubah definisi view dengan ALTER VIEW,
  7. melihat definisi dan deskripsi view dengan SHOW CREATE VIEW dan DESC,
  8. menghapus view dengan DROP VIEW.

Gambaran Umum

Topik utama pada pertemuan ini adalah view. Dalam MySQL, view adalah query tersimpan yang dapat dipanggil kembali seperti tabel biasa. Namun, view bukan tabel fisik yang menyimpan data baru, melainkan representasi virtual dari data yang diambil melalui query tertentu.

Pembahasan dimulai dari bentuk dasar pembuatan view menggunakan CREATE VIEW, kemudian dilanjutkan dengan pemberian nama kolom hasil view. Setelah itu, mahasiswa akan mempelajari algorithm attributes, yaitu cara MySQL memproses view melalui pilihan MERGE, TEMPTABLE, dan UNDEFINED.

Materi berikutnya membahas updatable view, yaitu view yang masih dapat diubah menggunakan UPDATE, DELETE, atau INSERT, selama memenuhi syarat tertentu. Selain itu, modul ini juga membahas WITH CHECK OPTION untuk membatasi perubahan data melalui view agar tetap sesuai dengan kondisi yang didefinisikan. Sebagai penutup, mahasiswa akan mempelajari cara mengubah, melihat definisi, mendeskripsikan, dan menghapus view.

Secara garis besar, pertemuan ini dirancang agar mahasiswa tidak hanya mampu membuat view, tetapi juga memahami kapan view dapat diupdate, bagaimana MySQL memproses view, dan bagaimana view dikelola sebagai bagian dari objek basis data.

Materi Inti

1. Pengertian View

View adalah query tersimpan yang menghasilkan result set ketika dipanggil. View bertindak sebagai tabel virtual, sehingga dapat diquery seperti tabel biasa, walaupun sebenarnya view hanya menyimpan definisi query, bukan data fisik baru.

View berguna ketika suatu query sering digunakan berulang kali, atau ketika kita ingin menyederhanakan query yang kompleks menjadi objek yang lebih mudah dipanggil.

2. Batasan pada Definisi View

Ada beberapa hal yang tidak boleh digunakan pada query yang mendefinisikan view. Batasan-batasan tersebut antara lain:

  • definisi view tidak boleh memiliki sub query di klausa FROM dari statement SQL,
  • variabel user, sistem, atau lokal tidak boleh digunakan dalam SELECT,
  • view tidak dapat merujuk ke tabel temporer,
  • trigger tidak dapat diasosiasikan terhadap view,
  • view yang dibuat di dalam stored procedure tidak dapat merujuk kepada parameter dalam stored procedure.

Batasan ini penting dipahami agar mahasiswa mengetahui bahwa tidak semua query dapat langsung dibungkus menjadi view.

3. Bentuk Dasar CREATE VIEW

Pembuatan view memerlukan nama view dan sebuah statement SQL. Bentuk dasarnya adalah sebagai berikut.

CREATE [OR REPLACE] [<algorithm attributes>] VIEW [database.]<name> [(<columns>)]
AS <SELECT statement> [WITH <LOCAL | CASCADED> CHECK OPTION]

Penjelasan singkat:

  • OR REPLACE digunakan untuk mengganti view yang sudah ada,
  • algorithm attributes digunakan untuk mengatur bagaimana MySQL memproses view,
  • (<columns>) digunakan untuk mendefinisikan nama kolom hasil view,
  • WITH CHECK OPTION digunakan untuk membatasi INSERT atau UPDATE agar tetap memenuhi kondisi view.

4. View Sederhana dan Penamaan Kolom

View dapat dibuat secara sederhana dari query SELECT, misalnya untuk menampilkan gabungan nama dan kota dari tabel employee. Selain itu, MySQL juga memungkinkan pengguna mendefinisikan nama kolom hasil view sendiri, sehingga kolom hasil menjadi lebih mudah dibaca.

Pemberian nama kolom ini penting terutama ketika hasil view berasal dari ekspresi seperti CONCAT() atau fungsi lain yang jika dibiarkan akan menghasilkan nama kolom yang terlalu panjang.

5. Algorithm Attributes

Algorithm attributes memberikan kendali bagaimana MySQL memproses view. Atribut ini bersifat opsional. Nilai algoritma yang tersedia adalah sebagai berikut.

AlgoritmaPenjelasan
MERGEdefinisi view digabung dengan query yang memanggil view
TEMPTABLEhasil view disimpan terlebih dahulu ke temporary table
UNDEFINEDMySQL memilih sendiri algoritma yang digunakan

Secara umum:

  • MERGE lebih efisien jika dapat digunakan,
  • TEMPTABLE berguna ketika pelepasan lock lebih cepat diperlukan,
  • UNDEFINED adalah pilihan default MySQL.

a. MERGE

Pada algoritma MERGE, definisi view digabung dengan query yang memanggil view. Dengan kata lain, MySQL memperlakukan query terhadap view seolah-olah langsung diarahkan ke tabel dasar dengan menambahkan kondisi yang sesuai.

b. TEMPTABLE

Pada algoritma TEMPTABLE, hasil view terlebih dahulu diambil ke temporary table, lalu temporary table tersebut yang dipakai untuk menjalankan query. Kelebihannya adalah lock pada tabel utama dapat dilepas lebih cepat, tetapi konsekuensinya view dengan TEMPTABLE tidak dapat diupdate.

c. UNDEFINED

Pada algoritma UNDEFINED, MySQL memilih sendiri algoritma yang dianggap paling sesuai. Biasanya MySQL lebih memilih MERGE jika memungkinkan.

6. Kondisi MERGE Tidak Dapat Digunakan

Algoritma MERGE tidak dapat digunakan pada view yang memerlukan konstruksi berikut:

  • fungsi agregat seperti SUM(), MIN(), MAX(), COUNT(),
  • DISTINCT,
  • GROUP BY,
  • HAVING,
  • LIMIT,
  • UNION atau UNION ALL,
  • sub query di SELECT,
  • referensi ke nilai literal tanpa tabel.

Jika MERGE tidak dapat digunakan, MySQL akan memberi warning dan biasanya mengubah algoritma menjadi UNDEFINED.

7. Updatable View

Beberapa view dapat diupdate menggunakan statement UPDATE, DELETE, atau INSERT. Perubahan pada view akan diteruskan ke tabel dasar yang dirujuk oleh view tersebut.

Agar sebuah view dapat diupdate, harus ada hubungan satu-satu antara baris dalam view dengan baris pada tabel dasarnya.

8. View yang Tidak Dapat Diupdate

Ada juga view yang tidak dapat diupdate, yaitu view yang memiliki:

  • fungsi agregat seperti SUM(), MIN(), MAX(), COUNT(),
  • DISTINCT,
  • GROUP BY,
  • HAVING,
  • UNION atau UNION ALL,
  • sub query di SELECT,
  • join tertentu,
  • nonupdatable view di klausa FROM,
  • sub query di klausa WHERE yang merujuk ke tabel di klausa FROM,
  • hanya merujuk ke literal,
  • ALGORITHM = TEMPTABLE,
  • referensi berulang ke kolom mana pun dari sebuah tabel.

Pemahaman ini penting agar mahasiswa dapat membedakan view mana yang hanya dapat dibaca dan view mana yang masih dapat dimodifikasi.

9. INSERT pada View

View dapat menerima INSERT jika memenuhi syarat berikut:

  • tidak boleh ada duplikasi nama kolom,
  • view harus terdiri atas semua kolom pada tabel dasar yang tidak memiliki nilai default,
  • kolom view harus merupakan referensi langsung ke kolom tabel dan bukan kolom turunan.

Contoh kolom turunan adalah:

  • 3.1415
  • CONCAT(first_name, " ", last_name)
  • salary + 1
  • (subquery)

Jika view memiliki kolom turunan, maka kolom tersebut tidak dapat diinsert atau diupdate secara langsung.

10. WITH CHECK OPTION

Klausa WITH CHECK OPTION diberikan pada updatable view untuk mencegah INSERT atau UPDATE pada baris data yang tidak memenuhi kondisi WHERE pada definisi view.

Terdapat dua parameter yang dapat digunakan:

OpsiPenjelasan
LOCALpengecekan hanya dilakukan pada view yang sedang didefinisikan
CASCADEDpengecekan dilakukan pada view beserta view/tabel yang dirujuk

Secara default, CHECK OPTION bernilai CASCADED.

Perbedaan keduanya sangat penting:

  • LOCAL hanya memeriksa syarat pada view saat ini,
  • CASCADED memeriksa seluruh syarat pada rantai view yang terlibat.

11. Mengubah View dengan ALTER VIEW

View yang telah dibuat dapat diubah menggunakan ALTER VIEW. Perintah ini digunakan ketika kita ingin mengganti definisi view, nama kolom hasil, atau isi query tanpa harus menghapus view terlebih dahulu.

12. Melihat Definisi dan Deskripsi View

Setelah view dibuat, kita dapat melihat definisinya kembali dengan:

  • SHOW CREATE VIEW nama_view;
  • DESC nama_view;

SHOW CREATE VIEW menampilkan sintaks lengkap pembentukan view, sedangkan DESC menampilkan struktur kolom hasil view.

13. Menghapus View

View yang telah dibuat dapat dihapus menggunakan:

DROP VIEW nama_view;

Perintah ini akan menghapus definisi view, tetapi tidak menghapus tabel dasar yang dirujuk oleh view tersebut.

Penutup Pengantar

Sebelum masuk ke aktivitas praktikum, mahasiswa perlu memahami bahwa seluruh materi pada pertemuan ini saling berkaitan. Pembuatan view, pemilihan algoritma, aturan updatable view, WITH CHECK OPTION, ALTER VIEW, SHOW CREATE VIEW, DESC, dan DROP VIEW merupakan bagian dari satu proses pengelolaan view dalam MySQL. Dengan memahami materi inti ini terlebih dahulu, mahasiswa akan lebih mudah mengikuti percobaan praktikum secara runtut dan memahami alasan di balik setiap langkah yang dijalankan.