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:
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:
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:
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:
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:
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:
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:
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.
Pada contoh CREATE VIEW dosen_jakarta, setelah view jadi, lalu dipanggil dengan query SELECT. Di situ ditulis
mysql>SELECT * FROM dosen_palembang;
Bukankah seharusnya
mysql>SELECT * FROM dosen_jakarta;
Oh ya, betul… saya ada salah ketik disitu. Terimakasih koreksinya :)
gan ane dah buwat tabel view, sudah running dan bisa menambahkan di database tapi ketika melihat isi tabel viewnya tidak terupdate otomatis di myqsl. harus di klik dulu tabel viewnya baru bertambah sendiri. apakah ada scedulernya…Terima kasih
Lihat tabelnya dari mana y? apakah ditampilkan menggunakan PHP? Jika iya, itu memang tidak bisa langsung terupdate isi tabel, harus di refresh dulu agar PHP bisa mengambil data baru ke MySQL. Jika pengen yang otomatis, harus dikombinasikan dengan JavaScript (Ajax).
Apakah membuat table view ini bisa menggunakan query join beberapa tabel?
Yup bisa. Boleh dibilang semua hasil query SELECT bisa dibuat VIEW-nya, termasuk jika query SELECT itu berasal dari JOIN beberapa tabel.
walaupun sederhana tapi jelas banget…tq gan atas bagi-bagi ilmunya
Terimakasih atas penjelasannya. cukup membantu.
Create CREATE VIEW nama_view AS SELECT * FROM nama_tabel WHERE column = 'record';
Read SELECT * FROM nama_view;
Update INSERT INTO nama_view VALUES ('','');
Delete DELETE FROM nama_view WHERE column ='record';
penjelasan yang bagus banget
Makasih kak ini membantu banget. Saya ada pertanyaan kalau cara menyesipkan data diantara 2 baris bagaimana? contohnya untuk menyisipkan data baru diantara baris A dan B. gimana kak caranya tolong bantuannya