Membuat View pada PostgreSQL atau MySQL

Sekarang syuaa akan memberikan contoh kecil cara membuat view pada query PostgreSQL atau MySQL, pada dasarnya kedua database ini memiliki bentuk query yang sama.

View digunakan untuk mempersimple penggunaan query yang panjang jika query yang panjang tersebut akan digunakan berulang-ulang kali. Hal ini tentu akan mempermudah programmer untuk melakukan query yang panjang tersebut dan meminimalisir kesalahan.

Sebagai contoh, saya memiliki table seperti ini :

1. t_murit
mysql> create table t_murit ( mid integer not null auto_increment, mname varchar(150), primary key ( mid ));

mysql> desc t_murit;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| mid   | int(11)      | NO   | PRI | NULL    | auto_increment |
| mname | varchar(150) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
2. t_kelas
mysql> create table t_kelas ( id integer not null auto_increment, mid integer, fval varchar(10), primary key ( id ));

mysql> desc t_kelas;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| mid   | int(11)     | YES  |     | NULL    |                |
| fval  | varchar(10) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
3. t_jenis_kelamin
mysql> create table t_jenis_kelamin ( id integer not null auto_increment, mid integer, fval integer, primary key ( id ));

mysql> desc t_jenis_kelamin;
+-------+---------+------+-----+---------+----------------+
| Field | Type    | Null | Key | Default | Extra          |
+-------+---------+------+-----+---------+----------------+
| id    | int(11) | NO   | PRI | NULL    | auto_increment |
| mid   | int(11) | YES  |     | NULL    |                |
| fval  | int(11) | YES  |     | NULL    |                |
+-------+---------+------+-----+---------+----------------+
4. t_point
mysql> create table t_nilai ( id integer not null auto_increment, mid integer, fval integer, primary key ( id ));

mysql> desc t_nilai;
+-------+---------+------+-----+---------+----------------+
| Field | Type    | Null | Key | Default | Extra          |
+-------+---------+------+-----+---------+----------------+
| id    | int(11) | NO   | PRI | NULL    | auto_increment |
| mid   | int(11) | YES  |     | NULL    |                |
| fval  | int(11) | YES  |     | NULL    |                |
+-------+---------+------+-----+---------+----------------+
Selanjutnya, silahkan eksekusi query berikut untuk menambahkan value pada masing-masing tabel.
insert into t_murit (mname) values ('Syuaa'), ('Gadis'), ('Agus'), ('Indah'), ('Sobari');
insert into t_kelas (mid,fval) values(1,'1.5'), (2,'1.6'), (3,'1.1'), (4,'1.2'), (5,'1.1');
insert into t_jenis_kelamin (mid,fval) values(1,1), (2,2), (3,1), (4,2), (5,1);
insert into t_nilai (mid,fval) values(1,10), (2,9), (3,6), (4,8), (5,9);
Sehingga isi dalam tabel kita nanti jadi seperti ini :
mysql> select * from t_murit;
+-----+--------+
| mid | mname  |
+-----+--------+
|   1 | Syuaa  |
|   2 | Gadis  |
|   3 | Agus   |
|   4 | Indah  |
|   5 | Sobari |
+-----+--------+

mysql> select * from t_kelas;
+----+------+------+
| id | mid  | fval |
+----+------+------+
|  1 |    1 | 1.5  |
|  2 |    2 | 1.6  |
|  3 |    3 | 1.1  |
|  4 |    4 | 1.2  |
|  5 |    5 | 1.1  |
+----+------+------+

mysql> select * from t_jenis_kelamin;
+----+------+------+
| id | mid  | fval |
+----+------+------+
|  1 |    1 |    1 |
|  2 |    2 |    2 |
|  3 |    3 |    1 |
|  4 |    4 |    2 |
|  5 |    5 |    1 |
+----+------+------+

mysql> select * from t_nilai;
+----+------+------+
| id | mid  | fval |
+----+------+------+
|  1 |    1 |   10 |
|  2 |    2 |    9 |
|  3 |    3 |    6 |
|  4 |    4 |    8 |
|  5 |    5 |    9 |
+----+------+------+
Secara umumnya, ketika kita ingin mengambil seluruh siswa beserta datanya, maka setidaknya kita harus mengekseskusi query sepanjang ini :
mysql> select t_murit.mid as mid, t_murit.mname as mname, t_kelas.fval as kelas, t_jenis_kelamin.fval as jenis_kelamin, t_nilai.fval as nilai from t_murit, t_kelas, t_jenis_kelamin, t_nilai where t_murit.mid = t_kelas.mid and t_murit.mid = t_jenis_kelamin.mid and t_murit.mid = t_nilai.mid;
+-----+--------+-------+---------------+-------+
| mid | mname  | kelas | jenis_kelamin | nilai |
+-----+--------+-------+---------------+-------+
|   1 | Syuaa  | 1.5   |             1 |    10 |
|   2 | Gadis  | 1.6   |             2 |     9 |
|   3 | Agus   | 1.1   |             1 |     6 |
|   4 | Indah  | 1.2   |             2 |     8 |
|   5 | Sobari | 1.1   |             1 |     9 |
+-----+--------+-------+---------------+-------+
Dan tentu saja bisa terjadi kesalahan dalam pengetikan jika programmer harus mengetikkan query sepanjang itu setiap kali membutuhkan data siswa.

Untuk mengantisipasi terjadinya kesalahan dalam pengetikan berulang-ulang untuk query tersebut, maka view adalah solusi yang tepat untuk masalah ini.

Sekarang kita akan membuat sebuah view yang mewakili query panjang tersebut. Silahkan eksekusi query berikut :
mysql> create view v_murit as select t_murit.mid as mid, t_murit.mname as mname, t_kelas.fval as kelas, t_jenis_kelamin.fval as jenis_kelamin, t_nilai.fval as nilai from t_murit, t_kelas, t_jenis_kelamin, t_nilai where t_murit.mid = t_kelas.mid and t_murit.mid = t_jenis_kelamin.mid and t_murit.mid = t_nilai.mid;
Dengan bermodalkan view ini, akan cukup mudah untuk melakukan pencarian data siswa keseluruhan atau dengan kriteria tertentu.

Selanjutnya, untuk menampilkan data siswa secara keseluruhan, kita bisa menggunakan query berikut :
mysql> select * from v_murit;
+-----+--------+-------+---------------+-------+
| mid | mname  | kelas | jenis_kelamin | nilai |
+-----+--------+-------+---------------+-------+
|   1 | Syuaa  | 1.5   |             1 |    10 |
|   2 | Gadis  | 1.6   |             2 |     9 |
|   3 | Agus   | 1.1   |             1 |     6 |
|   4 | Indah  | 1.2   |             2 |     8 |
|   5 | Sobari | 1.1   |             1 |     9 |
+-----+--------+-------+---------------+-------+
Untuk menampilkan data siswa dengan id 4, bisa dengan menggunakan query berikut :
mysql> select * from v_murit where mid = 4;
+-----+-------+-------+---------------+-------+
| mid | mname | kelas | jenis_kelamin | nilai |
+-----+-------+-------+---------------+-------+
|   4 | Indah | 1.2   |             2 |     8 |
+-----+-------+-------+---------------+-------+