Tutorial MySQL Lanjutan
4. View
Tutorial Belajar MySQL: Pengertian VIEW dan Cara Penggunaan VIEW dalam MySQL
Di dalam bahasa SQL, terdapat vitur yang dinamakan VIEW. Dalam tutorial belajar MySQL kali ini saya akan membahas tentang pengertian VIEW dan cara penggunaan VIEW di dalam MySQL.
Pengertian VIEW MySQL
Di dalam MySQL, View dapat didefenisikan sebagai ‘tabel virtual’. Tabel ini bisa berasal dari tabel lain, atau gabungan dari beberapa tabel.
Tujuan dari pembuatan VIEW adalah untuk kenyamanan (mempermudah penulisan query), untuk keamanan (menyembunyikan beberapa kolom yang bersifat rahasia), atau dalam beberapa kasus bisa digunakan untuk mempercepat proses menampilkan data (terutama jika kita akan menjalankan query tersebut secara berulang).
Sebagai contoh, misalkan saya ingin menampilkan nama dosen yang berdomisi di Jakarta, maka saya bisa menggunakan query berikut:
1 2 3 4 5 6 7 8 9 | mysql> SELECT NIP, nama_dosen, alamat FROM daftar_dosen WHERE alamat = 'Jakarta' ; + ------------+--------------+---------+ | NIP | nama_dosen | alamat | + ------------+--------------+---------+ | 0576431001 | M. Siddiq | Jakarta | | 1080432007 | Arif Budiman | Jakarta | + ------------+--------------+---------+ 2 rows in set (0.00 sec) |
Misalkan query tersebut akan dijalankan setiap beberapa detik (diakses dari website yang sibuk), pada setiap permintaan data, MySQL server harus melakukan pemrosesan untuk mencari seluruh dosen yang memiliki alamat di Jakarta. Selain itu, dengan menggunakan VIEW saya bisa menyembunyikan beberapa kolom dari tabel daftar_dosen.
Cara Penggunaan VIEW di dalam MySQL
Untuk membuat View di dalam MySQL, kita tinggal menggunakan format dasar sebagai berikut:
1 | CREATE VIEW nama_view AS ‘query select disini’ |
Selanjutnya VIEW bisa diakses seperti tabel ‘biasa’. Agar lebih jelas, langsung saja kita praktek menggunakan tabel daftar_dosen dari database mahasiswa:
1 2 3 4 5 6 7 8 9 10 11 12 | mysql> CREATE VIEW dosen_jakarta AS SELECT NIP, nama_dosen, alamat FROM daftar_dosen WHERE alamat = 'Jakarta' ; Query OK, 0 rows affected (0.17 sec) mysql> SELECT * FROM dosen_jakarta; + ------------+--------------+---------+ | NIP | nama_dosen | alamat | + ------------+--------------+---------+ | 0576431001 | M. Siddiq | Jakarta | | 1080432007 | Arif Budiman | Jakarta | + ------------+--------------+---------+ 2 rows in set (0.15 sec) |
Dalam query diatas, saya membuat sebuah VIEW bernama dosen_jakarta. Saya juga menyembunyikan kolom no_hp dari tabel asli daftar_dosen.
Untuk mengakses data yang terdapat di VIEW, cukup menggunakan query SELECT:
1 2 3 4 5 6 7 8 | mysql> SELECT * FROM dosen_jakarta; + ------------+--------------+---------+ | NIP | nama_dosen | alamat | + ------------+--------------+---------+ | 0576431001 | M. Siddiq | Jakarta | | 1080432007 | Arif Budiman | Jakarta | + ------------+--------------+---------+ 2 rows in set (0.18 sec) |
Sekarang, pada setiap pemanggilan VIEW, MySQL Server tidak perlu memfilter hasil pencarian, namun cukup memanggil tabel virtual. Hal ini akan mempercepat proses tampilan data.
VIEW juga berfungsi sama seperti layaknya tabel ‘biasa’, sebagai contoh, saya bisa melakukan query berikut:
1 2 3 4 5 6 7 | mysql> SELECT nama_dosen FROM dosen_jakarta WHERE NIP = '1080432007' ; + --------------+ | nama_dosen | + --------------+ | Arif Budiman | + --------------+ 1 row in set (0.20 sec) |
Bagaimana jika tabel utama di update? Mari kita coba:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | mysql> INSERT INTO daftar_dosen VALUES ( '0160431112' , 'Sarah' , '0812349900' , 'Jakarta' ); Query OK, 1 row affected (0.05 sec) mysql> INSERT INTO daftar_dosen VALUES ( '1180123464' , 'Nurhayati Koto' , '0812349222' , 'Jakarta' ); Query OK, 1 row affected (0.04 sec) mysql> SELECT * FROM dosen_jakarta; + ------------+----------------+---------+ | NIP | nama_dosen | alamat | + ------------+----------------+---------+ | 0160431112 | Sarah | Jakarta | | 0576431001 | M. Siddiq | Jakarta | | 1080432007 | Arif Budiman | Jakarta | | 1180123464 | Nurhayati Koto | Jakarta | + ------------+----------------+---------+ 4 rows in set (0.00 sec) |
Terlihat bahwa VIEW juga otomatis diupdate.
Apakah kita bisa menambahkan data ke dalam VIEW? Berikut percobaannya:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | mysql> INSERT INTO dosen_jakarta VALUES ( '0801431222' , 'Siti Nurbaya' , 'Jakarta' ); Query OK, 1 row affected (0.04 sec) mysql> SELECT * FROM dosen_jakarta; + ------------+----------------+---------+ | NIP | nama_dosen | alamat | + ------------+----------------+---------+ | 0160431112 | Sarah | Jakarta | | 0576431001 | M. Siddiq | Jakarta | | 0801431222 | Siti Nurbaya | Jakarta | | 1080432007 | Arif Budiman | Jakarta | | 1180123464 | Nurhayati Koto | Jakarta | + ------------+----------------+---------+ 5 rows in set (0.00 sec) mysql> SELECT * FROM daftar_dosen; + ------------+------------------+------------+-----------+ | NIP | nama_dosen | no_hp | alamat | + ------------+------------------+------------+-----------+ | 0160431112 | Sarah | 0812349900 | Jakarta | | 0160436012 | Sabrina Sari | 0812349900 | Pekanbaru | | 0260432002 | Maya Ari Putri | 0812345234 | Palembang | | 0275430005 | Susi Indriani | 0812656532 | Palembang | | 0480432066 | Tia SariSantrini | 0812451177 | Padang | | 0576431001 | M. Siddiq | 0812979005 | Jakarta | | 0770435006 | Rubin Hadi | 0812567678 | Papua | | 0801431222 | Siti Nurbaya | NULL | Jakarta | | 0869437003 | Arif Mustalifah | 0812338877 | Aceh | | 1080432007 | Arif Budiman | 0812456345 | Jakarta | | 1180123464 | Nurhayati Koto | 0812349222 | Jakarta | + ------------+------------------+------------+-----------+ 11 rows in set (0.00 sec) |
Ternyata kita juga bisa melakukan update ke dalam VIEW. Namun karena tidak seluruh kolom dari tabel daftar_dosen yang tersedia di dalam VIEW dosen_jakarta, akan terdapat nilai NULL di dalam tabel daftar_dosen (kolom no_hp).
Dalam tutorial kali ini kita telah membahas tentang pengertian VIEW dan cara penggunaan VIEW dalam MySQL. Contoh yang saya gunakan memang sangat sederhana, dan mungkin tidak terlihat perubahan kecepatan akses antara VIEW dengan query biasa. Untuk query yang rumit serta melibatkan ratusan tabel, VIEW bisa memberikan pengaruh besar dalam performa MySQL Server.