views&syn

Embed Size (px)

DESCRIPTION

views&syn

Citation preview

*)View is a database Object that keeps reference of data in the form of SELECT statement.*)It presents itself just like a table,but the basic difference between a table and view is data.table keeps data while view keeps query.*)A view is used for following purposes:-->Restricted data from one or more tables.(selected records)-->Projection of data from one or more tables.(selected columns).-->Hiding the actual tables from users.--> To avoid data manipulation on the tables.*)View means stored query within database.Syntax:CREATE [FORCE] VIEW AS ;Note:[FORCE]:word is used to create a view eventhe objects required by the query(table,columns) does not exist physically.such views does not work until objects are provided.Example: CREATE VIEW VW1ASSELECT E.empno,E.ename,E.sal,D.deptno,D.dnameFROM emp E,dept DWHERE E.deptno=D.deptno;--> SELECT * FROM VW1;--> SELECT * FROM VW1 WHERE sal>2000;--> DELETE FROM VW1; error: cannot delete--> UPDATE VW1 SET ename='aaa'; error: manipulations are not allowed on multi table views.Q) How to see the content of a view?-----------------------------------Oracle Provides a view under data dictionary that providescontent of views. This view name is USER_VIEWS. It can beaccessed by any user.--> DESC USER_VIEWS--> SELECT VIEW_NAME,text FROM USER_VIEWS;Note:-----If view is based on single table then if we delete the viewthen table content is also deleted.example:DELETE FROM VW4;===============================================SQL> create view d4 2 as 3 select * from dept2;View created.SQL> select * from d4;DEPTNO DNAME LOC------ -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTONSQL> delete from d4;4 rows deleted.SQL> select * from d4;no rows selectedSQL> select * from dept2;no rows selectedSQL> drop table dept2;Table dropped.SQL> select * from d4;select * from d4 *ERROR at line 1:ORA-04063: view "SIVA1.D4" has errors======================================================================================================================================================================================================SYNONYMS:=========*)Synonyms are used :--> To keep short cut names for objects.--> To keep meaningful name Objects.--> To keep the reference of remote object.--> To hide the actual place of objects.Syntax:CREATE [PUBLIC] SYNONYM FOR ;example: CREATE SYNONYM s1 FOR VW4;--> DESC VW4;--> DESC s1--> DESC USER_SYNONYMS;--> SELECT Synonym_name,table_name,table_owner FROM user_sysnonyms;Q) How to know whether it is a synonym or view ?Make the following trials:--> DELETE FROM s1;--> SELECT * FROM tab;--> DESC s1;error: invalid object for describe.Note:--> View is only for table(It works only on query.)--> Synonym is for any type of Object.(Works on Object).===================================================================SQL> create view d4 2 as 3 select * from dept2;View created.SQL> select * from d4;DEPTNO DNAME LOC------ -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTONSQL> delete from d4;4 rows deleted.SQL> select * from d4;no rows selectedSQL> select * from dept2;no rows selectedSQL> drop table dept2;Table dropped.SQL> select * from d4;select * from d4 *ERROR at line 1:ORA-04063: view "SIVA1.D4" has errorsSQL> create table dept2 as select * from dept;Table created.SQL> create view VW4 2 as 3 select * from dept2;View created.SQL> select * from vw4;DEPTNO DNAME LOC------ -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTONSQL> create synonym s1 2 from vw4;from vw4*ERROR at line 2:ORA-00905: missing keywordSQL> create synonym s1 2 for vw4;Synonym created.SQL> select * from s1;DEPTNO DNAME LOC------ -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTONSQL> desc vw4 Name Null? Type ----------------------------------------- -------- ---------------------------- DEPTNO NUMBER(2) DNAME VARCHAR2(14) LOC VARCHAR2(13)SQL> desc s1 Name Null? Type ----------------------------------------- -------- ---------------------------- DEPTNO NUMBER(2) DNAME VARCHAR2(14) LOC VARCHAR2(13)SQL> desc user_synonyms; Name Null? Type ----------------------------------------- -------- ---------------------------- SYNONYM_NAME NOT NULL VARCHAR2(30) TABLE_OWNER VARCHAR2(30) TABLE_NAME NOT NULL VARCHAR2(30) DB_LINK VARCHAR2(128)SQL> select synonym_name,table_name,table_owner 2 from user_synonyms;SYNONYM_NAME TABLE_NAME------------------------------ ------------------------------TABLE_OWNER------------------------------S1 VW4SIVA1SQL> delete from s1;4 rows deleted.SQL> select * from vw4;no rows selectedSQL> select * from dept2;no rows selectedSQL> =============================================================SQL> select * from s2;select * from s2 *ERROR at line 1:ORA-00942: table or view does not existSQL> select * from s1;DEPTNO DNAME LOC------ -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTONSQL> delete from s1;4 rows deleted.SQL> select * from vw4;no rows selectedSQL> select * from dept2;no rows selectedSQL> rollback;Rollback complete.SQL> create view vw5 2 as 3 select * from s1;View created.SQL> select * from vw5;DEPTNO DNAME LOC------ -------------- ------------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTONSQL> create view vw6 2 as select * from vw4;View created.SQL> delete from s1 where deptno=10;1 row deleted.SQL> select * from vw6;DEPTNO DNAME LOC------ -------------- ------------- 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTONSQL> select * from vw4;DEPTNO DNAME LOC------ -------------- ------------- 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTONSQL> select * from dept2;DEPTNO DNAME LOC------ -------------- ------------- 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTONSQL> rollback;Rollback complete.SQL> delete from vw5 2 where depno=10;where depno=10 *ERROR at line 2:ORA-00904: invalid column nameSQL> edWrote file afiedt.buf 1 delete from vw5 2* where deptno=20SQL> /1 row deleted.SQL> select * from dept2;DEPTNO DNAME LOC------ -------------- ------------- 10 ACCOUNTING NEW YORK 30 SALES CHICAGO 40 OPERATIONS BOSTONSQL> select * from vw4;DEPTNO DNAME LOC------ -------------- ------------- 10 ACCOUNTING NEW YORK 30 SALES CHICAGO 40 OPERATIONS BOSTONSQL> select * from vw6;DEPTNO DNAME LOC------ -------------- ------------- 10 ACCOUNTING NEW YORK 30 SALES CHICAGO 40 OPERATIONS BOSTONSQL> drop synonym s1;Synonym dropped.SQL> select * from vw5;select * from vw5 *ERROR at line 1:ORA-04063: view "SIVA1.VW5" has errorsSQL> select * from vw4;DEPTNO DNAME LOC------ -------------- ------------- 10 ACCOUNTING NEW YORK 30 SALES CHICAGO 40 OPERATIONS BOSTONSQL> select * from vw6;DEPTNO DNAME LOC------ -------------- ------------- 10 ACCOUNTING NEW YORK 30 SALES CHICAGO 40 OPERATIONS BOSTONSQL> rollback;Rollback complete.SQL> select * from vw2;select * from vw2 *ERROR at line 1:ORA-00942: table or view does not existSQL> edWrote file afiedt.buf 1* select * from vw4SQL> /DEPTNO DNAME LOC------ -------------- ------------- 10 ACCOUNTING NEW YORK 30 SALES CHICAGO 40 OPERATIONS BOSTONSQL> ==================================================