You are on page 1of 9

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