You are on page 1of 14

Modul Oracle

Pertemuan 1
Obyektifitas :
 Pengenalan Umum mengenai View
 Melakukan Pemodifikasian pada View
 Mengetahui Fasilitas pada View

1. Definisi Umum View

1.1 Pengertian Umum View

View adalah tabel logika yang berdasarkan pada sebuah tabel atau dari view lainnya.
Sebuah view tidak mempunyai data dari view itu sendiri. Tabel yang ada pada view
dinamakan “ Tabel Asal “ . View disimpan seperti perintah SELECT pada data dictionary.

Tabel Obyek Database

Obyek Deskripsi
Table Unit paling dasar dari database yang berisi baris dan kolom
View Merupakan sebuah tabel logika, dan merupakan bagian data dari
satu atau lebih tabel asal
Sequence Menghasilkan nilai primary key
Index Meningkatkan kemampuan dari beberapa query
Synonym Nama alternatif untuk obyek

Laboratorium Sistem Informasi Universitas Gunadarma 1 dari 36


Modul Oracle

1.2 Keuntungan View

- View dapat mengamankan data, karena view bisa menampilkan kolom – kolom tertentu dari
tabel asal.
- View memperbolehkan user untuk membuat query sederhana untuk mendapatkan hasil dari
query yang rumit. Sebagai contoh, view membolehkan user untuk mendapatkan informasi
dari banyak tabel tanpa harus mengetahui bagaimana untuk mengetahui perintah Join.
- View menyediakan data independen bagi user sementara dan program aplikasi. Sebuah view
dapat digunakan untuk mendapatkan data dari beberapa tabel.
- View menyediakan Group User untuk mengakses data menurut kriteria mereka masing-masing.

1.3 Simple View & Complex View

View dibagi menjadi dua : simple dan complex. Perbedaan mendasar adalah pada operasi
DML (insert, update dan delete) :
- Simple View :
Data turunan yang berasal dari hanya satu tabel
Tidak berisi fungsi atau group data
Dapat menampilkan DML melalui View

- Complex View :
Data turunan yang berasal dari banyak tabel
Berisi fungsi atau group data
Tidak selalu dapat menampilkan DML melalui View

Feature Simple View Complex View


Jumlah tabel 1 >1
Berisi Fungsi Tidak Ya
Memiliki data-grouping Tidak Ya
Updates dimungkinkan Ya Tak selalu

Laboratorium Sistem Informasi Universitas Gunadarma 2 dari 36


Modul Oracle

2. Pembuatan dan Penghapusan View

2.1 Membuat View

Syntax :
CREATE [ OR REPLACE ] [ FORCE | NOFORCE ] VIEW view_name
[ (alias[, alias] . . . .) ]
AS subquery
[ WITH CHECK OPTION [ CONSTRAINT constraint_spec ] ]
[ WITH READ ONLY ] ;

Pada Syntax :
OR REPLACE : Membuat kembali sebuah view bila view itu sudah ada sebelumnya.
FORCE : Membuat view walaupun tabel asalnya tidak ada.
NOFORCE : Membuat view hanya jika tabel asalnya ada.
View_name : Nama dari view.
Alias : Nama field – field yang akan dipilih pada tabel asal (namanya boleh
tidak sama dengan tabel asal tapi jumlahnya harus sama dengan tabel asal).
Subquery : perintah SELECT
WITH CHECK OPTION : Menjelaskan bahwa hanya baris yang ada pada view yang bisa
dilakukan operasi Insert dan Update.
CONSTRAINT : Nama yang ada pada CHECK OPTION constraint.
WITH READ ONLY : Memastikan bahwa tidak ada operasi DML yang dapat dilakukan
pada view ini.

2.2 Petunjuk dalam membuat View

- Subquery yang didefinisikan pada view dapat berisikan SELECT yang kompleks, termasuk
Join , Group, dan Subquery.
- Subquery yang didefinisikan pada view tidak dapat berisikan klausa ORDER BY.
ORDER BY dapat digunakan pada saat kita mencari data dari view tersebut.

Laboratorium Sistem Informasi Universitas Gunadarma 3 dari 36


Modul Oracle

- Bila anda tidak mencantumkan nama contraint untuk view yang kita buat dengan
CHECK OPTION, maka sistem akan otomatis memberikan nama dalam format SYS_Cn.
- Anda dapat menggunakan pilihan OR REPLACE untuk mengubah definisi dari view.
- Anda dapat mengontrol nama kolom dengan mengikutsertakan nama alias dari kolom pada
subquery.

Contoh :

CREATE VIEW salvu30


AS SELECT empno EMPLOYEE_NUMBER, ename NAME, sal
SALARY
FROM emp
WHERE deptno = 30;

Untuk menampilkan data dari view diatas

SELECT * FROM salvu30

Sekali anda membuat sebuah view maka anda dapat mencari melalui tabel data dictionary
yang bernama USER_VIEWS untuk melihat nama dari view dan definisi dair view. Text dari
perintah SELECT mengatur view anda yang ada pada kolom LONG.

2.3 Akses Data menggunakan View

Ketika anda mengakses data, menggunakan view, server oracle menampilkan operasi
sebagai berikut :
1. Mendapatkan definisi view dari tabel data dictionary USER_VIEW
2. Mencek hak akses untuk view dari tabel asal.
3. Mengkonversi query view ke dalam operasi yang ekivalen pada satu atau lebih tabel
asal yang dirujuk. Dengan kata lain, data didapatkan dari atau perubahan data
diperoleh dari tabel asal.

Laboratorium Sistem Informasi Universitas Gunadarma 4 dari 36


Modul Oracle

2.4 Memodifikasi / merubahView

Option OR REPLACE memungkinkan view dapat diperbaharui walaupun namanya sama.


jadi perbaruan yang terjadi menggantikan struktur yang lama. Ini berarti perubahan view
dapat dilakukan tanpa harus men-drop view, membuat ulang, ataupun memberi hak kembali
pada obyek database.
Catatan : Ketika membuat kolom alias pada klausa CREATE VIEW, perhatikan bahwa alias
tersebut juga harus ada pada subquery.
Contoh :
CREATE OR REPLACE VIEW salvu30 (employee_number, employee_name, job_title )
AS SELECT empno, ename, job
FROM emp
WHERE deptno = 30;

2.5 Membuat Complex View

Contoh :
CREATE VIEW dept_sum_vu (name, minsal, maxsal, avgsal)
AS SELECT d.dname, MIN(E.sal), MAX(e.sal), AVG(e.sal)
FROM emp e, dept d
WHERE e.deptno = d.deptno
GROUP BY d.name;

Contoh di atas adalah contoh dari pembuatan view yang kompleks dimana view tersebut
menampilkan fungsi aritmatika dimana view tersebut adalah view yang berisikan nama
departemen, gaji minimum, gaji maksimum dan gaji rata-rata dari departemen tersebut.
Perhatikan bahwa nama kolom alternatif telah dispesifikasikan pada view tersebut. Hal ini
diperlukan bila kolom pada view tersebut diturunkan dari kolom fungsi atau sebuah ekspresi.

Anda dapat melihat struktur dari view tersebut dengan menggunakan perintah DESCRIBE
pada SQL*Plus. Dan bila ingin menampilkan isi dari view dapat dilakukan dengan perintah

Laboratorium Sistem Informasi Universitas Gunadarma 5 dari 36


Modul Oracle

SELECT. Anda dapat melakukan operasi DML pada data melalui view bila operasi tersebut
mengikuti aturan-aturan yang sudah ditetapkan. Anda dapat menghapus baris dari view bila
setidaknya baris tersebut berisi seperti dibawah ini :
- Fungsi Group
- Klausa GROUP BY
- Keyword pseudocolumn ROWNUM

2.6 Menggunakan Klausa WITH CHECK OPTION

Dapat dimungkinkan untuk melakukan refrential integrity checks melalui view. Anda
juga dapat memberikan constraint pada setiap level database. View dapat digunakan untuk
mempertahankan integritas data, tapi kegunaannya sangatlah terbatas.
Klausa WITH CHECK OPTION menjelaskan bahwa INSERT dan UPDATE melalui view tidak
dapat dibenarkan bila baris yang kita isikanatau kita update bukan merupakan bagian dari view
yang kita buat.

Contoh :
UPDATE salvu30
SET deptno=10
WHERE empno=7788;

Catatan : tidak ada baris yang diupdate karena bila nomor departemen diubah menjadi 10, view
tidak lagi dapat melihat pegawai itu lagi. Karena itu dengan Klausa WITH CHECK
OPTION, view hanya dapat melihat pegawai dengan nomor departemen 30 dan tidak
diperkenankan merubah nomor departemen para pegawai tersebut melalui view.

Laboratorium Sistem Informasi Universitas Gunadarma 6 dari 36


Modul Oracle

2.7 Menolak Operasi DML

Anda dapat memastikan bahwa tidak ada operasi DML yang dapat dijalankan pada view
dengan membuat option WITH READ ONLY. Sebagai contoh :

CREATE OR REPLACE VIEW salvu30


AS SELECT Tempno EMPLOYEE_NUMBER, ename NAME, sal
SALARY
FROM emp
WHERE deptno = 30
WITH READ ONLY ;

2.9 Menghilangkan / menghapus View

Anda dapat menggunakan perintah DROP VIEW untuk menghapus view. Perintah
tersebut akan menghapus definisi view dari database. Menghapus view tidak menimbulkan efek
pada tabel asal. View-view atau aplikasi lainnya yang merujuk pada view yang telah dihapus akan
menjadi invalid atau tidak dapat digunakan lagi. Hanya pembuat dan user yang mendapat hak
untuk menghapus view yang diperkenankan untuk menghapus view.

Syntaxnya :
DROP VIEW nama_view ;

Laboratorium Sistem Informasi Universitas Gunadarma 7 dari 36


Modul Oracle

3. Contoh Soal dan Latihan View

3.1 Pembuatan View

CREATE VIEW <view_name> [(column1, column2...)] AS


SELECT <table_name column_names>
FROM <table_name>

INPUTOUTPUT:

SQL> create database BILLS;

Statement processed.

INPUTOUTPUT:

SQL> create table BILLS (


2 NAME CHAR(30) NOT NULL,
3 AMOUNT NUMBER,
4 ACCOUNT_ID NUMBER NOT NULL);

Table created.

INPUTOUTPUT:

SQL> create table BANK_ACCOUNTS (


2 ACCOUNT_ID NUMBER NOT NULL,
3 TYPE CHAR(30),
4 BALANCE NUMBER,
5 BANK CHAR(30));

Table created.

INPUTOUTPUT:

SQL> create table COMPANY (


2 NAME CHAR(30) NOT NULL,
3 ADDRESS CHAR(50),
4 CITY CHAR(30),
5 STATE CHAR(2));

Table created.

Table 10.1. Sample data for the BILLS table.

Name Amount Account_ID


Phone Company 125 1
Power Company 75 1
Record Club 25 2
Software Company 250 1

Laboratorium Sistem Informasi Universitas Gunadarma 8 dari 36


Modul Oracle

Cable TV Company 35 3
Joe's Car Palace 350 5
S.C. Student Loan 200 6
Florida Water Company 20 1
U-O-Us Insurance Company 125 5
Debtor's Credit Card 35 4

Table 10.2. Sample data for the BANK_ACCOUNTS table.

Account_ID Type Balance Bank


1 Checking 500 First Federal
2 Money Market 1200 First Investor's
3 Checking 90 Credit Union
4 Savings 400 First Federal
5 Checking 2500 Second Mutual
6 Business 4500 Fidelity

Table 10.3. Sample data for the COMPANY table.

Name Address City State


Phone Company 111 1st Street Atlanta GA
Power Company 222 2nd Street Jacksonville FL
Record Club 333 3rd Avenue Los Angeles CA
Software Company 444 4th Drive San Francisco CA
Cable TV Company 555 5th Drive Austin TX
Joe's Car Palace 1000 Govt. Blvd Miami FL
S.C. Student Loan 25 College Blvd Columbia SC
Florida Water Company 1883 Hwy 87 Navarre FL
U-O-Us Insurance 295 Beltline Hwy Macon GA
Company
Debtor's Credit Card 115 2nd Avenue Newark NJ

Laboratorium Sistem Informasi Universitas Gunadarma 9 dari 36


Modul Oracle

3.2 Contoh Soal Simple View

INPUT:

SQL> CREATE VIEW DEBTS AS


SELECT * FROM BILLS;

INPUT/OUTPUT :

SQL> SELECT * FROM DEBTS;

NAME AMOUNT ACCOUNT_ID


Phone Company 125 1
Power Company 75 1
Record Club 25 2
Software Company 250 1
Cable TV Company 35 3
Joe's Car Palace 350 5
S.C. Student Loan 200 6
Florida Water Company 20 1
U-O-Us Insurance Company 125 5
Debtor's Credit Card 35 4

10 rows selected.

INPUT:

SQL> CREATE VIEW CREDITCARD_DEBTS AS


2 SELECT * FROM DEBTS
3 WHERE ACCOUNT_ID = 4;
SQL> SELECT * FROM CREDITCARD_DEBTS;

OUTPUT:

NAME AMOUNT ACCOUNT_ID


Debtor's Credit Card 35 4

1 row selected.

Laboratorium Sistem Informasi Universitas Gunadarma 10 dari 36


Modul Oracle

INPUT:

SQL> CREATE VIEW COMPANY_INFO (NAME, STATE) AS


2 SELECT * FROM COMPANY;
SQL> SELECT * FROM COMPANY_INFO;

OUTPUT:

NAME STATE
Phone Company GA
Power Company FL
Record Club CA
Software Company CA
Cable TV Company TX
Joe's Car Palace FL
S.C. Student Loan SC
Florida Water Company FL
U-O-Us Insurance Company GA
Debtor's Credit Card NJ

10 rows selected.

Laboratorium Sistem Informasi Universitas Gunadarma 11 dari 36


Modul Oracle

3.3 Modifikasi Colums


INPUT:

SQL> CREATE VIEW ENVELOPE (COMPANY, MAILING_ADDRESS) AS


2 SELECT NAME, ADDRESS + " " + CITY + ", " + STATE
3 FROM COMPANY;
SQL> SELECT * FROM ENVELOPE;

OUTPUT:

COMPANY MAILING_ADDRESS
Phone Company 111 1st Street Atlanta, GA
Power Company 222 2nd Street Jacksonville, FL
Record Club 333 3rd Avenue Los Angeles, CA
Software Company 444 4th Drive San Francisco, CA
Cable TV Company 555 5th Drive Austin, TX
Joe's Car Palace 1000 Govt. Blvd Miami, FL
S.C. Student Loan 25 College Blvd. Columbia, SC
Florida Water Company 1883 Hwy. 87 Navarre, FL
U-O-Us Insurance Company 295 Beltline Hwy. Macon, GA
Debtor's Credit Card 115 2nd Avenue Newark, NJ

10 rows selected.

INPUT:

SQL> SELECT BILLS.NAME, BILLS.AMOUNT, BANK_ACCOUNTS.BALANCE,


2 BANK_ACCOUNTS.BANK FROM BILLS, BANK_ACCOUNTS
3 WHERE BILLS.ACCOUNT_ID = BANK_ACCOUNTS.ACCOUNT_ID;

OUTPUT:

BILLS.NAME BILLS.AMOUNT BANK_ACCOUNTS.BALANCE


BANK_ACCOUNTS.BANK
Phone Company 125 500 First
Federal
Power Company 75 500 First
Federal
Record Club 25 1200 First
Investor's
Software Company 250 500 First
Federal
Cable TV Company 35 90 Credit
Union
Joe's Car Palace 350 2500 Second
Mutual
S.C. Student Loan 200 4500
Fidelity
Florida Water Company 20 500 First
Federal
U-O-Us Insurance Company 125 2500 Second
Mutual

9 rows selected.

Laboratorium Sistem Informasi Universitas Gunadarma 12 dari 36


Modul Oracle

Dapat pula dibuat sebagai berikut :

INPUT/OUTPUT:

SQL> CREATE VIEW BILLS_DUE (NAME, AMOUNT, ACCT_BALANCE, BANK) AS


2 SELECT BILLS.NAME, BILLS.AMOUNT, BANK_ACCOUNTS.BALANCE,
3 BANK_ACCOUNTS.BANK FROM BILLS, BANK_ACCOUNTS
4 WHERE BILLS.ACCOUNT_ID = BANK_ACCOUNTS.ACCOUNT_ID;

View created.

Dengan Kondisi yang sama, Dapat Pula sebagai berikut :

INPUT/OUTPUT:

SQL> SELECT * FROM BILLS_DUE


2 WHERE ACCT_BALANCE > 500;

NAME AMOUNT ACCT_BALANCE BANK


Record Club 25 1200 First Investor's
Joe's Car Palace 350 2500 Second Mutual
S.C. Student Loan 200 4500 Fidelity
U-O-Us Insurance Company 125 2500 Second Mutual
4 rows selected.

SQL> SELECT BILLS.NAME, BILLS.AMOUNT, BANK_ACCOUNTS.BALANCE,


2 BANK_ACCOUNTS.BANK FROM BILLS, BANK_ACCOUNTS
3 WHERE BILLS.ACCOUNT_ID = BANK_ACCOUNTS.ACCOUNT_ID
4 AND BANK_ACCOUNTS.BALANCE > 500;

3.4 Menghapus Baris Pada View

INPUT/OUTPUT:

SQL> DELETE FROM LATE_PAYMENT


2 WHERE ACCOUNT_ID = 4;

1 row deleted.

SQL> SELECT * FROM LATE_PAYMENT;

NAME NEW_TOTAL ACCOUNT_ID


Phone Company 137.50 1
Power Company 82.50 1
Record Club 27.50 2
Software Company 275 1
Cable TV Company 38.50 3
Joe's Car Palace 385 5
S.C. Student Loan 220 6
Florida Water Company 22 1
U-O-Us Insurance Company 137.50 5
9 rows selected.

Laboratorium Sistem Informasi Universitas Gunadarma 13 dari 36


Modul Oracle

INPUT/OUTPUT:

SQL> UPDATE LATE_PAYMENT


2 SET NEW_TOTAL = NEW_TOTAL + 10
3 WHERE NEW_TOTAL > 100;

9 rows updated.

SQL> SELECT * FROM LATE_PAYMENT;

NAME NEW_TOTAL ACCOUNT_ID


Phone Company 147.50 1
Power Company 82.50 1
Record Club 27.50 2
Software Company 285 1
Cable TV Company 38.50 3
Joe's Car Palace 395 5
S.C. Student Loan 230 6
Florida Water Company 22 1
U-O-Us Insurance Company 147.50 5

9 rows selected.

Laboratorium Sistem Informasi Universitas Gunadarma 14 dari 36

You might also like