It is one of commonly asked interview question from database section. View and Synonym is common concept relevant for all database however, the syntax and semantics discussed in this post is oracle database specific.
View is a virtual entity based on table or other views.View is created using database tables(primary storage of data in relational database) or other views.In other words, view is just a stored SELECT statement (a logical table) based on one or multiple tables or views and view does not have its own data, it relies on underlying base tables for result sets.
Note:- Along with table based views, oracle database also support object view or a relational view that supports LOBs, object types, REF datatypes, nested table, varray. XML view can also be created supporting XML types.
Synonym is alternate name for database objects like Table, views, procedure, function , etc. Synonym provides an alias to a database object and gives an opportunity to mask original name & owner of the object.
Synonym is mostly used for providing access on table to external schema by creating Public synonym and by doing this external schema can access table without specifying schema_name where table is existing.
For creating View in our schema we must have CREATE VIEW and for creating view in anothers schema we must have CREATE ANY VIEW system privilege.
Let's create a view based on multiple table in HR schema - Employees, Departments and Jobs
View can be created using following syntax:-
when we execute above query it will create a view object "EMPLOYEE_DETAILS" in database and it can be queried as a table like this.
Other clauses supported in View are - OR REPLACE, FORCE, READ ONLY,CHECK OPTION.
1.OR REPLACE :- If appended, it will recreate view and it is used to alter definition of an existing view without doing rework (dropping, applying grants again, etc).
2.FORCE:- If appended, it will forcefully creates view even if base tables or view does not exist or grants to accessing object is not there.
Note:- Before executing any select, insert,update query above structure should be in place,otherwise it will throe error.
3. READ ONLY:- View created only used for select operation. No insert ,update are allowed on read only views.
4. CHECK OPTION:- If check option is enabled, insert or update can be executed but with some restriction.
Note:- Query should not contain Group By Clause, Group Function ,Distinct Clause,References to any expression,Refrences to any pseudo column rownum. For more detail refer official guide. Read What is difference between view and materialized view ?
Synonym creation :- Synonym is created for an database object to hide details of object and it provides data independence and location transparency too.
Synonym can be of two types: private (default) and public.
For creating private synonym in our own schema we need CREATE SYNONYM privilege and for creating in others schema we need CREATE ANY SYNONYM privilege.For public synonym we need CREATE PUBLIC SYNONYM privilege.
Lets create a synonym for stored procedure and execute it. Use following syntax for creating procedure and synonym:
Create procedure get_employee_names:-
Create a synonym for above stored procedure:-
Now we can execute the above stored procedure via synonym with appropriate parameter passing. Refer the following diagram and execute command in following order :-
We can see that, we have not executed original stored procedure instead we executed MY_PROCUDURE_SYNONYM. Similarly, synonym for table and other objects.
Advantage of Views and Synonyms:-
With views: we can hide columns , add predicates (WHERE clause) to restrict rows, rename columns, give a column name to a SQL expression.
With synonym: we can reference objects in other schemas(using public synonym) and databases without qualifying the name.
======End of post======
Read also:
1. How to test stored procedure in SQL*PLUS and SQL developer
2. Internals of PL/SQL execution in database server
View is a virtual entity based on table or other views.View is created using database tables(primary storage of data in relational database) or other views.In other words, view is just a stored SELECT statement (a logical table) based on one or multiple tables or views and view does not have its own data, it relies on underlying base tables for result sets.
Note:- Along with table based views, oracle database also support object view or a relational view that supports LOBs, object types, REF datatypes, nested table, varray. XML view can also be created supporting XML types.
Synonym is alternate name for database objects like Table, views, procedure, function , etc. Synonym provides an alias to a database object and gives an opportunity to mask original name & owner of the object.
Synonym is mostly used for providing access on table to external schema by creating Public synonym and by doing this external schema can access table without specifying schema_name where table is existing.
Syntax & semantics of View and Synonym creation:-
View creation :- General syntax for table/view based viewCREATE [ OR REPLACE ] [ [ NO ] FORCE ] VIEW
[ schema. ]view
[ (alias [ inline_constraint
[ inline_constraint ]... ]
| out_of_line_constraint
[, alias [ inline_constraint
[ inline_constraint ]... ]
| out_of_line_constraint
]...
)
| object_view_clause
| XMLType_view_clause
]
AS subquery [ subquery_restriction_clause ] ;
For creating View in our schema we must have CREATE VIEW and for creating view in anothers schema we must have CREATE ANY VIEW system privilege.
Let's create a view based on multiple table in HR schema - Employees, Departments and Jobs
View can be created using following syntax:-
CREATE VIEW EMPLOYEE_DETAILS
AS
SELECT emp.FIRST_NAME, emp.EMAIL,dept.DEPARTMENT_NAME, job.JOB_TITLE
FROM
EMPLOYEES emp, DEPARTMENTS dept ,JOBS job
WHERE
emp.DEPARTMENT_ID = dept.DEPARTMENT_ID
AND job.JOB_ID = emp.JOB_ID;
when we execute above query it will create a view object "EMPLOYEE_DETAILS" in database and it can be queried as a table like this.
Select * from EMPLOYEE_DETAILS;
Other clauses supported in View are - OR REPLACE, FORCE, READ ONLY,CHECK OPTION.
1.OR REPLACE :- If appended, it will recreate view and it is used to alter definition of an existing view without doing rework (dropping, applying grants again, etc).
CREATE OR REPLACE VIEW EMPLOYEE_DETAILS
AS
SELECT
....
FROM
......
2.FORCE:- If appended, it will forcefully creates view even if base tables or view does not exist or grants to accessing object is not there.
Note:- Before executing any select, insert,update query above structure should be in place,otherwise it will throe error.
CREATE OR REPLACE FORCE VIEW EMPLOYEE_DETAILS
AS
SELECT
....
FROM
......
3. READ ONLY:- View created only used for select operation. No insert ,update are allowed on read only views.
CREATE OR REPLACE FORCE VIEW EMPLOYEE_DETAILS
AS SELECT emp.FIRST_NAME, emp.EMAIL,dept.DEPARTMENT_NAME, job.JOB_TITLE
FROM
EMPLOYEES emp, DEPARTMENTS dept ,JOBS job
WHERE
emp.DEPARTMENT_ID = dept.DEPARTMENT_ID
AND job.JOB_ID = emp.JOB_ID WITH READ ONLY;
4. CHECK OPTION:- If check option is enabled, insert or update can be executed but with some restriction.
CREATE OR REPLACE FORCE VIEW EMPLOYEE_DETAILS
AS SELECT emp.FIRST_NAME, emp.EMAIL,dept.DEPARTMENT_NAME, job.JOB_TITLE
FROM
EMPLOYEES emp, DEPARTMENTS dept ,JOBS job
WHERE
emp.DEPARTMENT_ID = dept.DEPARTMENT_ID
AND job.JOB_ID = emp.JOB_ID WITH CHECK OPTION;
Synonym creation :- Synonym is created for an database object to hide details of object and it provides data independence and location transparency too.
Synonym can be of two types: private (default) and public.
For creating private synonym in our own schema we need CREATE SYNONYM privilege and for creating in others schema we need CREATE ANY SYNONYM privilege.For public synonym we need CREATE PUBLIC SYNONYM privilege.
CREATE [ OR REPLACE ] [ PUBLIC ] SYNONYM
[ schema. ]synonym
FOR [ schema. ]object [ @ dblink ] ;
Lets create a synonym for stored procedure and execute it. Use following syntax for creating procedure and synonym:
Create procedure get_employee_names:-
create or replace procedure get_employee_names(v_deptId_in NUMBER, v_cur OUT SYS_REFCURSOR ) IS begin open v_cur for select FIRST_NAME,LAST_NAME from employees where DEPARTMENT_ID = v_deptId_in; end get_employee_names; /
Create a synonym for above stored procedure:-
--GET_EMPLOYEE_NAMES(In NUMBER, OUT REF CURSOR) is a procedure CREATE OR REPLACE SYNONYM "HR"."MY_PROCEDURE_SYNONYM" FOR "HR"."GET_EMPLOYEE_NAMES";
Now we can execute the above stored procedure via synonym with appropriate parameter passing. Refer the following diagram and execute command in following order :-
We can see that, we have not executed original stored procedure instead we executed MY_PROCUDURE_SYNONYM. Similarly, synonym for table and other objects.
Advantage of Views and Synonyms:-
With views: we can hide columns , add predicates (WHERE clause) to restrict rows, rename columns, give a column name to a SQL expression.
With synonym: we can reference objects in other schemas(using public synonym) and databases without qualifying the name.
======End of post======
Read also:
1. How to test stored procedure in SQL*PLUS and SQL developer
2. Internals of PL/SQL execution in database server
Tags:
Database
ReplyDeleteI am feeling great to read this.you gave a nice info for us.please update more.
Python Training in Chennai
Python Training in Anna Nagar
JAVA Training in Chennai
Hadoop Training in Chennai
Selenium Training in Chennai
Python Training in Chennai
Python Training in Velachery
This comment has been removed by the author.
ReplyDeleteThanks for the explanation. Doesn't look as hard as i thought.
ReplyDeleteAivivu chuyên vé máy bay, tham khảo
ReplyDeletesăn vé máy bay giá rẻ đi Mỹ
vé máy bay quốc tế từ mỹ về việt nam
thông tin chuyến bay từ canada về vit nam
bay nhật bản việt nam
vé máy bay hàn quốc hà nội
Vé máy bay từ Đài Loan về Việt Nam
giá khách sạn cách ly ở tphcm
Thank you forr writing this
ReplyDeleteThis was lovely to rread
ReplyDelete