Views (Oracle)
Views (Oracle)
TYPES OF VIEWS:
A USER CAN CREATE THE FOLLOWING TWO TYPES OF VIEWS
ON BASE TABLES THOSE ARE,
1. SIMPLE VIEWS
2. COMPLEX VIEWS
1. SIMPLE VIEWS:
WHEN WE CREATE A VIEW TO ACCESS REQUIRED DATA
FROM A SINGLE BASE TABLE IS CALLED AS SIMPLE VIEWS.
THROUGH A SIMPLE VIEW WE CAN PERFORM ALL DML
(INSERT, UPDATE, DELETE) OPERATIONS ON BASE TABLE.
SYNTAX:
CREATE VIEW <VIEW NAME> AS SELECT * FROM <TN> [ WHERE
<CONDITION>];
EX1:
SQL> CREATE VIEW SV1 AS SELECT * FROM DEPT;
SQL> SELECT * FROM SV1;
TESTING:
SQL> INSERT INTO SV2 VALUES (1122,'SAI','HR',8000); ---ALLOW
SQL> INSERT INTO SV2 VALUES (1122,'WARNER','SR.HR',9500); -
---NOT ALLOW (EMPNO COLUMN IS PRIMARY KEY COLUMN IN
EMP TABLE)
EX:
SQL> CREATE VIEW SV3 AS SELECT * FROM TEST1 WHERE
SAL=18000 WITH CHECK OPTION;
TESTING:
SQL> INSERT INTO SV3 VALUES (1025,'SCOTT',12000); ---NOT
ALLOW
SQL> INSERT INTO SV3 VALUES (1025,'SCOTT',58000); ---NOT
ALLOW
SQL> INSERT INTO SV3 VALUES (1025,'SCOTT',18000); ---
ALLOWED
WITH READ ONLY:
IF WE CREATED A VIEW "WITH READ ONLY" CLAUSE THEN WE
RESTRICT DML OPERATIONS.WE ALLOW "SELECT" AND "DESC"
COMMANDS.
EX:
SQL> CREATE VIEW SV4 AS SELECT * FROM DEPT WITH READ
ONLY;
EX1:
SQL> CREATE VIEW CV1 AS SELECT * FROM STUDENT S INNER
JOIN COURSE C
ON S.CID=C.CID;
ERROR AT LINE 1:
ORA-00957: DUPLICATE COLUMN NAME
NOTE: WHEN WE CREATE A VIEW ON BASE TABLES THEN WE
SHOULD NOT ALLOW DUPLICATE COLUMN NAMES.TO AVOID THIS
PROBLEM THEN USE "USING" CLAUSE.
SQL> CREATE VIEW CV1 AS SELECT * FROM STUDENT S INNER
JOIN COURSE C USING(CID);
NOW WE CREATED A COMPLEX VIEW ON MULTIPLE
TABLES.BUT NOT ALLOW DML OPERATIONS.
EX2:
SQL> CREATE VIEW CV2 AS
SELECT * FROM EMP_HYD
UNION
SELECT * FROM EMP_CHENNAI;
EX3:
SQL> CREATE VIEW CV3 AS SELECT DEPTNO, SUM(SAL) FROM
EMP GROUP BY DEPTNO;
ERROR AT LINE 1:
ORA-00998: MUST NAME THIS EXPRESSION WITH A COLUMN
ALIAS
EX:
SQL> CREATE VIEW CV3 AS SELECT DEPTNO, SUM(SAL) AS
SUMSAL FROM EMP
GROUP BY DEPTNO;
TESTING:
SQL> UPDATE CV4 SET SAL=500 WHERE EMPNO=7788; ---
ALLOWED
SQL> DELETE FROM CV4 WHERE EMPNO=7782; ----ALOOWED
SQL> INSERT INTO CV4 VALUES (1122,'SAI',6000,10,'SAP','HYD');
---NOT ALLOW
FORCE VIEWS:
GENERALLY, VIEWS ARE CREATED BASED ON TABLES, BUT
FORCE VIEWS ARE CREATE WITHOUT TABLES.
SYNTAX:
CREATE FORCE VIEW <VIEW NAME> AS SELECT * FROM <TN>;
EX:
SQL> CREATE FORCE VIEW FV1 AS SELECT * FROM TEST;
WARNING: VIEW CREATED WITH COMPILATION ERRORS.
TESTING:
SQL> SELECT * FROM FV1;
ERROR AT LINE 1:
ORA-04063: VIEW "SCOTT.FV1" HAS ERRORS
SQL> DESC FV1;
ERROR:
ORA-24372: INVALID OBJECT FOR DESCRIBE
EX:
SQL> CREATE TABLE TEST (SNO INT, NAME VARCHAR2(10));
TABLE CREATED.
TESTING:
SQL> SELECT * FROM FV1; ----ACTIVATED
SQL> DESC FV1; ----ACTIVATED
EX:
SQL> DESC USER_VIEWS;
SQL> SELECT VIEW_NAME FROM USER_VIEWS;
EX:
SQL> DROP VIEW SV1;
SQL> DROP VIEW CV1;
SQL> DROP VIEW FV1;
ADVANTAGES OF VIEWS:
1. IT IS PROVIDING SECURITY.IT MEANS THAT TO EACH USER
CAN BE GIVEN PERMISSION TO ACCESS SPECIFIC COLUMNS &
SPECIFIC ROWS FROM A TABLE.
2. IF DATA IS ACCESSED AND ENTERED THROUGH A VIEW,THE DB
SERVER WILL CHECK DATA TO ENSURE THAT IT MEETS SPECIFIED
INTERGRITY CONSTRAINTS RULES OR NOT.
3. QUERY SIMPLIFY IT MEANS THAT TO REDUCE COMPLEX QUERY.
SYNONYM VIEW
1. IT IS A MIRROR OF TABLE. 1. IT IS A SUBSET OF
TABLE.
2. CREATED ON A SINGLE TABLE. 2. CREATED ON
MULTIPLE TABLES.