VIEW PADA ORACLE
Pengertian
View adalah salah satu object database, yang secara logika merepresentasikan sub himpunan dari data yang berasal dari satu atau lebih table.
View merupakan hasil perintah SELECT yang berupa tabel virtual yang dapat membungkus query tertentu. View berfungsi untuk mempermudah dalam pengambilan query tertentu. Dengan view kita dapat menerapkan pembatasan pada pengaksesan guna pengamanan keamanan data seperti di bawah ini:
- Kolom/Field pada tabel tertentu.
- Baris/Record pada tabel tertentu.
- Field dan Record pada tabel tertentu.
- Turunan dari view lain.
- Record menggunakan operasi join.
- Data statistik dari tabel.
Kegunaan dari view adalah :
- Membatasi akses database
- Membuat query kompleks secara mudah
- Mengijinkan independensi data
- Untuk menampilkan view (pandangan) data yang berbeda dari data yang sama.
Membuat View
Syntax :
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
[(alias[, alias]…)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint_name]]
[WITH READ ONLY [CONSTRAINT constraint]_name];
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.
nb : Dengan query-query diatas, jika kita melakukan perubahan pada view_emp atau view_emp2, maka tabel employees juga akan ikut berubah sesuai dengan perubahan yang terjadi pada view_emp. begitu juga sebaliknya jika kita melakukan perbuahan pada tabel employees. Hal ini dapat dicegah dengan menggunakan WITH CHECK OPTION dan READ ONLY
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 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;
Menampilkan View
Untuk menampilkan atau memanggil view yang sudah kita buat sebelumnya, kita dapat menggunakan perintah select dengan format seperti dibawah ini :
SELECT * FROM V_PELANGGAN
Merubah View
ALTER VIEW view_name[(column_list)] [WITH ENCRYPTION] AS select_statement [WITH CHECK OPTION]
Contoh :
ALTER VIEW V_SISWA AS SELECT * FROM SISWA WHERE ALAMAT ='JAKARTA'
Menghapus View
DROP VIEW nama_view
sumber :
http://risnotes.com/2012/01/view/
http://irpantips4u.blogspot.com/2012/10/pengertian-funsi-dan-penggunaan-view.html
http://ranafatinhexi.blogspot.com/2013/03/view-pada-oracle.html
0 komentar:
Posting Komentar