Di di bahasa SQL, terdapat vitur yang dinamakan VIEW. Di panduan belajar MySQL kali ini saya akan membahas mengenai pengertian VIEW dan cara penggunaan VIEW di dalam MySQL.
Pengertian VIEW MySQL
Di di MySQL, View dapat didefenisikan selaku ‘tabel virtual’. Tabel ini dapat berasal dari tabel lain, atau gabungan dari beberapa tabel.
Tujuan dari penyusunan VIEW yaitu untuk kenyamanan (mempermudah penulisan query), untuk keamanan (menyembunyikan beberapa kolom yang bersifat rahasia), atau di beberapa kasus dapat digunakan untuk mempercepat proses menampilkan data (terutama jikalau kita akan menjalankan query tersebut secara berulang).
Selaku contoh, misalkan saya ingin menampilkan nama dosen yang berdomisi di Jakarta, karenanya saya dapat menggunakan query berikut:
1 |
mysql> SELECT NIP, nama_dosen, domisili FROM daftar_dosen<br/>WHERE domisili = 'Jakarta';<br/>+------------+--------------+---------+<br/>| NIP | nama_dosen | domisili |<br/>+------------+--------------+---------+<br/>| 0576431001 | M. Siddiq | Jakarta |<br/>| 1080432007 | Arif Budiman | Jakarta |<br/>+------------+--------------+---------+<br/>2 rows in set (0.00 sec) |
Misalkan query tersebut akan dijalankan setiap beberapa detik (diakses dari blog yang sibuk), di setiap permintaan data, MySQL server mesti menjalankan pemrosesan untuk mencari seluruh dosen yang mempunyai domisili di Jakarta. Selain itu, dengan menggunakan VIEW saya dapat menyembunyikan beberapa kolom dari tabel daftar_dosen.
Cara Pemakaian VIEW di di MySQL
Untuk membangun View di di MySQL, kita tinggal menggunakan format basic selaku berikut:
1 |
CREATE VIEW nama_view AS ‘query select disini’ |
Berikutnya VIEW dapat diakses seperti tabel ‘biasanya’. Agar lebih jelas, seketika saja kita praktek menggunakan tabel daftar_dosen dari database mahasiswa:
1 |
mysql> CREATE VIEW dosen_jakarta AS SELECT NIP, nama_dosen, domisili FROM<br/>daftar_dosen WHERE domisili = 'Jakarta';<br/>Query OK, 0 rows affected (0.17 sec)<br/> <br/>mysql> SELECT * FROM dosen_jakarta;<br/>+------------+--------------+---------+<br/>| NIP | nama_dosen | domisili |<br/>+------------+--------------+---------+<br/>| 0576431001 | M. Siddiq | Jakarta |<br/>| 1080432007 | Arif Budiman | Jakarta |<br/>+------------+--------------+---------+<br/>2 rows in set (0.15 sec) |
Di query diatas, saya membangun sebuah VIEW bernama dosen_jakarta. Saya pun menyembunyikan kolom no_hp dari tabel asli daftar_dosen.
Untuk mengakses data yang terdapat di VIEW, lumayan menggunakan query SELECT:
1 |
mysql> SELECT * FROM dosen_jakarta;<br/>+------------+--------------+---------+<br/>| NIP | nama_dosen | domisili |<br/>+------------+--------------+---------+<br/>| 0576431001 | M. Siddiq | Jakarta |<br/>| 1080432007 | Arif Budiman | Jakarta |<br/>+------------+--------------+---------+<br/>2 rows in set (0.18 sec) |
Kini ini, di setiap pemanggilan VIEW, MySQL Server tak perlu memfilter hasil pencarian, namun lumayan memanggil tabel virtual. Hal ini akan mempercepat proses tampilan data.
VIEW pun berfungsi sama seperti layaknya tabel ‘biasanya’, selaku contoh, saya dapat menjalankan query berikut:
1 |
mysql> SELECT nama_dosen FROM dosen_jakarta WHERE NIP = '1080432007';<br/>+--------------+<br/>| nama_dosen |<br/>+--------------+<br/>| Arif Budiman |<br/>+--------------+<br/>1 row in set (0.20 sec) |
Bagaimana jikalau tabel utama di update? Mari kita coba:
1 |
mysql> INSERT INTO daftar_dosen VALUES <br/>('0160431112','Sarah','0812349900','Jakarta');<br/>Query OK, 1 row affected (0.05 sec)<br/><br/>mysql> INSERT INTO daftar_dosen VALUES <br/>('1180123464','Nurhayati Koto','0812349222','Jakarta');<br/>Query OK, 1 row affected (0.04 sec)<br/> <br/>mysql> SELECT * FROM dosen_jakarta;<br/>+------------+----------------+---------+<br/>| NIP | nama_dosen | domisili |<br/>+------------+----------------+---------+<br/>| 0160431112 | Sarah | Jakarta |<br/>| 0576431001 | M. Siddiq | Jakarta |<br/>| 1080432007 | Arif Budiman | Jakarta |<br/>| 1180123464 | Nurhayati Koto | Jakarta |<br/>+------------+----------------+---------+<br/>4 rows in set (0.00 sec) |
Terlihat bahwa VIEW pun otomatis diupdate.
Apakah kita dapat menambahkan data ke di VIEW? Berikut percobaannya:
1 |
mysql> INSERT INTO dosen_jakarta <br/>VALUES ('0801431222','Siti Nurbaya','Jakarta');<br/>Query OK, 1 row affected (0.04 sec)<br/> <br/>mysql> SELECT * FROM dosen_jakarta;<br/>+------------+----------------+---------+<br/>| NIP | nama_dosen | domisili |<br/>+------------+----------------+---------+<br/>| 0160431112 | Sarah | Jakarta |<br/>| 0576431001 | M. Siddiq | Jakarta |<br/>| 0801431222 | Siti Nurbaya | Jakarta |<br/>| 1080432007 | Arif Budiman | Jakarta |<br/>| 1180123464 | Nurhayati Koto | Jakarta |<br/>+------------+----------------+---------+<br/>5 rows in set (0.00 sec)<br/> <br/>mysql> SELECT * FROM daftar_dosen;<br/>+------------+------------------+------------+-----------+<br/>| NIP | nama_dosen | no_hp | domisili |<br/>+------------+------------------+------------+-----------+<br/>| 0160431112 | Sarah | 0812349900 | Jakarta |<br/>| 0160436012 | Sabrina Sari | 0812349900 | Pekanbaru |<br/>| 0260432002 | Maya Ari Putri | 0812345234 | Palembang |<br/>| 0275430005 | Susi Indriani | 0812656532 | Palembang |<br/>| 0480432066 | Tia SariSantrini | 0812451177 | Padang |<br/>| 0576431001 | M. Siddiq | 0812979005 | Jakarta |<br/>| 0770435006 | Rubin Hadi | 0812567678 | Papua |<br/>| 0801431222 | Siti Nurbaya | NULL | Jakarta |<br/>| 0869437003 | Arif Mustalifah | 0812338877 | Aceh |<br/>| 1080432007 | Arif Budiman | 0812456345 | Jakarta |<br/>| 1180123464 | Nurhayati Koto | 0812349222 | Jakarta |<br/>+------------+------------------+------------+-----------+<br/>11 rows in set (0.00 sec) |
Ternyata kita pun dapat menjalankan update ke di VIEW. Namun karena tak seluruh kolom dari tabel daftar_dosen yang terdapat di di VIEW dosen_jakarta, akan terdapat nilai NULL di di tabel daftar_dosen (kolom no_hp).
Di panduan kali ini kita telah membah
as mengenai pengertian VIEW dan cara penggunaan VIEW dalam MySQL. Contoh yang saya gunakan memang betul-betul sederhana, dan mungkin tak terlihat perubahan kecepatan akses antara VIEW dengan query biasanya. Untuk query yang rumit serta melibatkan ratusan tabel, VIEW dapat memberikan pengaruh besar di performa MySQL Server.
Sumber https://www.duniailkom.com/