On Sunday, November 16, 2014

View adalah perintah query yang disimpan pada database dengan suatu nama tertentu, sehingga bisa digunakan setiap saat untuk melihat data tanpa menuliskan ulang query tersebut.

Syntax dasar perintah untuk membuat view adalah sebagai berikut :

CREATE
    [OR REPLACE]
    VIEW view_name [(column_list)]
    AS select_statement

Kita menggunakan opsi OR REPLACE jika kita ingin mengganti view dengan nama yang sama dengan perintah tersebut. Jika tidak maka perintah CREATE VIEW akan menghasilkan error jika nama view yang ingin dibuat sudah ada sebelumnya.
Anda dapat menambahkan fungsi sql, pernyataan WHERE dan JOIN kedalam view dan menyajikan data dalam AS jika data itu berasal dari satu table.

SYNTAKS PERINTAH MEMBUAT SQL VIEW

CREATE VIEW view_name AS 
SELECT column_name(s)
FROM table_name
WHERE condition


Kegunaan VIEW:
  • Menyembunyikan Kolom atau Baris
  • Fungsi built-in layer
  • Menampilkan hasil dari penghitungan
  • Menyediakan level isolasi antara data tabel dan View data pengguna
  • Memberikan trigger berbeda pada view yang berbeda dari tabel yang sama
  • Memberikan proses permission yang berbeda untuk view yang berbeda dari tabel yang sama
  • Menyembunyikan Sintak SQL yang rumit
Keuntungan VIEW:
  1. Membatasi akses data
  2. Menyediakan data yang independen
  3. Menampilkan view yang berbeda-beda dengan data yang sama
  4. Memudahkan query yang kompleks

Contoh query :
CREATE VIEW view_emp
AS SELECT employee_id, last_name, salary
FROM employees
WHERE department_id = 80;
Untuk menampilkan view yang kita buat:
SELECT * FROM nama_view
Query diatas akan membuat sebuah view yang bernama view_emp yang menampilkan data dari tabel employees yang bekerja pada department_id = 80.

View dengan alias :
CREATE VIEW view_emp2
AS SELECT employee_id ID_NUMBER, last_name NAME,
salary*12 ANN_SALARY
FROM employees
WHERE department_id = 50;













Query diatas juga dapat ditulis seperti ini:
CREATE VIEW view_emp2(ID_NUMBER, NAME, ANN_SALARY)
AS SELECT employee_id ID_NUMBER, last_name NAME,
salary*12 ANN_SALARY
FROM employees
WHERE department_id = 50;





 



Memodifikasi VIEW dengan CREATE OR REPLACE :

CREATE OR REPLACE VIEW view_emp2(ID_NUMBER, NAME, ANN_SALARY)
AS SELECT employee_id ID_NUMBER, last_name NAME,
salary*12 ANN_SALARY
FROM employees
WHERE department_id = 50;
Dengan menggunakan CREATE OR REPLACE, bila sudah ada view dengan nama yang sama dengan view yang akan kita buat, maka view terdahulu tersebut akan ditimpa dengan view yang baru.


Membuat VIEW yang Kompleks

maksud dari view yang kompleks adalah kita menambahkan fungsi-fungsi lain dalam subquery seperti JOIN, GROUP FUNCTION, SET OPERATOR dll.
contoh :
CREATE OR REPLACE VIEW dept_Sal(name, MinSal, MaxSal, avgSal)
AS
SELECT
d.department_name, MIN(e.salary),
MAX(e.salary),AVG(e.salary)
FROM employees e JOIN departments d
ON (e.department_id = d.department_id)
GROUP BY d.department_name

Aturan dalam VIEW :
Kita tidak bisa menggunakan operasi DML melalui VIEW jika didalam VIEW tersebut terdapat :
  1. GROUP FUNCTION
  2. GROUP BY
  3. DISTINCT
  4. ROWNUM
  5. Kolomnya didefinisikan dengan ekspresi(salary + 2)
  6. NOT NULL kolom pada base table(tabel yang disebutkan setelah kata AS ) yang tidak dipilih oleh view

 

WITH CHECK OPTION

dengan klausa WITH CHECK OPTION, kita dapat membatasi perubahan yang diakibatkan oleh penggunaan operasi DML. sehinga jika adanya perubahan pada view, tidak mempengaruhi pada base tabelnya
contoh :
CREATE OR REPLACE VIEW view_emp2
AS
SELECT *FROM employees
WHERE department_id = 20
WITH CHECK OPTION CONSTRAINT viewEmp2_ck ;
Dengan query diatas kita tidak dapat merubah department_id yang sudah ditentukan pada VIEW view_emp2 tetapi masih dapat melakukan perubahan terhadap data lain dan juga jika kita melakukan operasi DML pada VIEW view_emp2, data pada tabel EMPLOYEES tidak akan berubah

 

READ ONLY

Dengan READ ONLY kita tidak dapat melakukan operasi DML terhadap VIEW yang kita buat, sehingga view tersebut hanya dapat dilihat atau dibaca
CREATE OR REPLACE VIEW view_emp2
AS
SELECT *FROM employees
WHERE department_id = 20
READ ONLY;

 

Menghapus VIEW

DROP VIEW nama_view



Sumber :

Leave a Reply

Subscribe to Posts | Subscribe to Comments

Copyright © Welcome here ~ | Green Minimalist Theme |Powered by Blogger | Designed by Johanes DJ