SQL - Menggunakan Views
Tampilan tidak lebih dari pernyataan SQL yang disimpan dalam database dengan nama terkait. Tampilan sebenarnya adalah komposisi tabel dalam bentuk kueri SQL yang telah ditentukan sebelumnya.
Tampilan dapat berisi semua baris tabel atau memilih baris dari tabel. Tampilan dapat dibuat dari satu atau banyak tabel yang bergantung pada kueri SQL tertulis untuk membuat tampilan.
Views, yang merupakan jenis tabel virtual yang memungkinkan pengguna melakukan hal berikut -
Membuat struktur data dengan cara yang menurut pengguna atau kelas pengguna alami atau intuitif.
Batasi akses ke data sedemikian rupa sehingga pengguna dapat melihat dan (terkadang) mengubah dengan tepat apa yang mereka butuhkan dan tidak lebih.
Meringkas data dari berbagai tabel yang dapat digunakan untuk menghasilkan laporan.
Membuat Tampilan
Tampilan database dibuat menggunakan CREATE VIEWpernyataan. Tampilan dapat dibuat dari satu tabel, beberapa tabel atau tampilan lain.
Untuk membuat tampilan, pengguna harus memiliki hak istimewa sistem yang sesuai dengan penerapan tertentu.
Dasar CREATE VIEW sintaksnya adalah sebagai berikut -
CREATE VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE [condition];
Anda dapat menyertakan beberapa tabel dalam pernyataan SELECT Anda dengan cara yang sama seperti Anda menggunakannya dalam kueri SQL SELECT normal.
Contoh
Pertimbangkan tabel CUSTOMERS yang memiliki catatan berikut -
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Berikut adalah contoh untuk membuat view dari tabel CUSTOMERS. Tampilan ini akan digunakan untuk mendapatkan nama dan usia pelanggan dari tabel CUSTOMERS.
SQL > CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM CUSTOMERS;
Sekarang, Anda dapat membuat kueri CUSTOMERS_VIEW dengan cara yang sama seperti Anda meminta tabel sebenarnya. Berikut adalah contoh yang sama.
SQL > SELECT * FROM CUSTOMERS_VIEW;
Ini akan menghasilkan hasil sebagai berikut.
+----------+-----+
| name | age |
+----------+-----+
| Ramesh | 32 |
| Khilan | 25 |
| kaushik | 23 |
| Chaitali | 25 |
| Hardik | 27 |
| Komal | 22 |
| Muffy | 24 |
+----------+-----+
The WITH CHECK OPTION
The WITH CHECK OPTION adalah pilihan pernyataan CREATE VIEW. Tujuan dari WITH CHECK OPTION adalah untuk memastikan bahwa semua UPDATE dan INSERT memenuhi kondisi dalam definisi tampilan.
Jika mereka tidak memenuhi kondisi, UPDATE atau INSERT mengembalikan kesalahan.
Blok kode berikut memiliki contoh membuat CUSTOMERS_VIEW tampilan yang sama dengan WITH CHECK OPTION.
CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM CUSTOMERS
WHERE age IS NOT NULL
WITH CHECK OPTION;
WITH CHECK OPTION dalam hal ini harus menolak masuknya nilai NULL apa pun di kolom AGE tampilan, karena tampilan tersebut ditentukan oleh data yang tidak memiliki nilai NULL di kolom AGE.
Memperbarui Tampilan
Tampilan dapat diperbarui dalam kondisi tertentu yang diberikan di bawah ini -
Klausa SELECT tidak boleh berisi kata kunci DISTINCT.
Klausa SELECT mungkin tidak berisi fungsi ringkasan.
Klausa SELECT mungkin tidak berisi fungsi set.
Klausa SELECT mungkin tidak berisi operator set.
Klausa SELECT mungkin tidak berisi klausa ORDER BY.
Klausa FROM mungkin tidak berisi banyak tabel.
Klausa WHERE mungkin tidak berisi subkueri.
Kueri tidak boleh berisi GROUP BY atau HAVING.
Kolom kalkulasi mungkin tidak diperbarui.
Semua kolom NOT NULL dari tabel dasar harus disertakan dalam tampilan agar kueri INSERT berfungsi.
Jadi, jika tampilan memenuhi semua aturan yang disebutkan di atas, maka Anda dapat memperbarui tampilan tersebut. Blok kode berikut memiliki contoh untuk memperbarui usia Ramesh.
SQL > UPDATE CUSTOMERS_VIEW
SET AGE = 35
WHERE name = 'Ramesh';
Ini pada akhirnya akan memperbarui CUSTOMERS tabel dasar dan hal yang sama akan tercermin dalam tampilan itu sendiri. Sekarang, coba untuk query tabel dasar dan pernyataan SELECT akan menghasilkan hasil sebagai berikut.
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 35 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Memasukkan Baris ke dalam Tampilan
Deretan data dapat disisipkan ke dalam tampilan. Aturan yang sama yang berlaku untuk perintah UPDATE juga berlaku untuk perintah INSERT.
Di sini, kami tidak dapat menyisipkan baris di CUSTOMERS_VIEW karena kami belum menyertakan semua kolom NOT NULL dalam tampilan ini, jika tidak, Anda dapat menyisipkan baris dalam tampilan dengan cara yang sama seperti Anda memasukkannya ke dalam tabel.
Menghapus Baris ke dalam Tampilan
Baris data dapat dihapus dari tampilan. Aturan yang sama yang berlaku untuk perintah UPDATE dan INSERT berlaku untuk perintah DELETE.
Berikut adalah contoh untuk menghapus record yang memiliki AGE = 22.
SQL > DELETE FROM CUSTOMERS_VIEW
WHERE age = 22;
Ini pada akhirnya akan menghapus baris dari tabel dasar CUSTOMERS dan hal yang sama akan terlihat dalam tampilan itu sendiri. Sekarang, coba untuk query tabel dasar dan pernyataan SELECT akan menghasilkan hasil sebagai berikut.
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 35 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
Menjatuhkan Tampilan
Tentunya, di mana Anda memiliki pandangan, Anda memerlukan cara untuk melepaskan tampilan jika tidak lagi diperlukan. Sintaksnya sangat sederhana dan diberikan di bawah ini -
DROP VIEW view_name;
Berikut adalah contoh untuk menghapus CUSTOMERS_VIEW dari tabel CUSTOMERS.
DROP VIEW CUSTOMERS_VIEW;