- Home »
- Fungsi View pada Pemrograman SQL
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
[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
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
- Membatasi akses data
- Menyediakan data yang independen
- Menampilkan view yang berbeda-beda dengan data yang sama
- Memudahkan query yang kompleks
Contoh query :
CREATE VIEW view_empUntuk menampilkan view yang kita buat:
AS SELECT employee_id, last_name, salary
FROM employees
WHERE department_id = 80;
SELECT * FROM nama_viewQuery 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)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.
AS SELECT employee_id ID_NUMBER, last_name NAME,
salary*12 ANN_SALARY
FROM employees
WHERE department_id = 50;
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 :
- GROUP FUNCTION
- GROUP BY
- DISTINCT
- ROWNUM
- Kolomnya didefinisikan dengan ekspresi(salary + 2)
- 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 tabelnyacontoh :
CREATE OR REPLACE VIEW view_emp2Dengan 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
AS
SELECT *FROM employees
WHERE department_id = 20
WITH CHECK OPTION CONSTRAINT viewEmp2_ck ;
READ ONLY
Dengan READ ONLY kita tidak dapat melakukan operasi DML terhadap VIEW yang kita buat, sehingga view tersebut hanya dapat dilihat atau dibacaCREATE OR REPLACE VIEW view_emp2
AS
SELECT *FROM employees
WHERE department_id = 20
READ ONLY;
Menghapus VIEW
DROP VIEW nama_view
Sumber :