Upload
paulina-lester
View
248
Download
0
Embed Size (px)
Citation preview
What is a view?
Logically represents subset of data from one or more table. In sql, a view is a virtual relation based on result-set of a SELECT
statement. It contains rows and columns just like a real table. Views contains no data of its own but is like a window through
which data from table can be viewed or changed. The table on which view a view is based are called BASE TABLE. View is stored as a SELECT statement in the data dictonary. SYNTAX CREATE VIEW view_name AS
SELECT column_name(s) FROM table_name WHERE condition;
Advantages of views
Views restrict access to data.Views can be used to make simple queries to
retrieve the result of complicated queries.Views provide group of users access to data
according to their particular criteria.
Simple viewsSimple views Complex viewsComplex views
A simple view is one that : Derives data from one table. Contains no functions or group of
data. Can perform DML operations
through view.
Example:CREATE VIEW emp_view ASSELECT f_name, salary from
Employees WHERE dep_id=90;
A complex view is one that: Derives data from many tables. Contains functions or group of data. Does not always allow DML
operations through view. In particular, complex views can
contain:-join condition-Distinct-Pseudo columns-Group By clause-Having clause
Example:CREATE VIEW comp_view ASSELECT
e.f_name,e.emp_id,e.job_id,e.dep_id,d.dep_id,d.location
WHERE e.dep_id=d.dep_id;
Difference between simple and complex views
Creating a view
You can create a view by embedding a subquery within the CREATE VIEW statement.
The sub query that defines the view can not contain ORDER BY clause. The ORDER BY clause is specified when you retrieve data from the view.
Syntax:CREATE OR REPLACE view view_nameASSubquery;In the syntax:OR REPLACE – re_creates the view if its already exists.View _name – name of the view.Subquery - SELECT statement.Eg:CREATE OR REPLACE VIEW emp_view ASSELECT f_name, salary from Employees WHERE dep_id=90;SELECT * FROM emp_view;
View WITH READ ONLY option
To restrict the data manipulation using views is done using WITH READ ONLY.
CREATE OR REPLACE view v1ASSELECT A from T1Where A=1 WITH READ ONLY; Now you perform a DML operation on this view it will throw
an error.Eg:INSERT into v1 value(3);Output:ORA-01733: virtual column not allowed here
View WITH CHECK OPTION
It specifies that only rows accessible to the view can be inserted or updated.
Here WHERE clause will be checked. If WHERE clause does not satisfy error will be thrownEg:CREATE OR REPLACE view v1ASSELECT A FROM T1WHERE A=1 WITH CHECK OPTION;INSERT into v1 values(3);Output:ORA-01402: view WITH CHECK OPTION where-clause violation
View with FORCE option
Creates the view regardless of whether or not the base table exist. But we will get error.Eg :CREATE OR REPLACE FORCE view v_newASSELECT * FROM GREENS; When we execute this particular query view will be created but with
error.Output: ORA-00942: table or view does not existEg:SELECT * FROM v_new; When we execute this particular view it will throw an error.ORA-04063: view "HR.V1" has errors.
Querying a view
Once your view has been created, you can query the data dictionary view called USER_VIEWS to see the name of the view and the view definition.
The text of the SELECT statement that constitutes your view is stored in a LONG column.
Removing a view
You can remove a view without losing data . The DROP statement removes the view definition from the
DB. Views based on deleted views become invalid. Only the creator or a user with the DROP ANY VIEW
privilege can remove a view. We can remove the error of view by dropping the view or
by creating a table . SELECT * FROM USER_ERROR;
SyntaxDrop view <viewname>;Eg:Drop view v_new;View dropped.
Inline views
An inline view is a subquery with an alias that you can use within a sql statement.
Subquery used in the FROM clause is called inline view.Eg:Select MAX(salary),MIN(salary)FROM (SELECT f_name,salary from emp where d_id=60);
Materialized view
It is a snapshot of a remote table data. It is a database object. Data manipulation cannot be done here. The tables in the query are called master tables or detail table. To store a query view is used and to store a result materialized view is
used. Sysntax:Create materialized view mvASSELECT f_name, salary from employeesWHERE d_id=90;Select * from mv; When you update a table to refresh the materialized view we useDBMS_MVVIEW.REFRESH(‘mv’,’C’);C means complete refresh. To check all the materialized views created we useSELECT * FROM USER_MVVIEW;
Drop materialized view
We can delete a materialized view using syntaxDROP MATERIALIZED VIEW <view_name>;Eg:Drop materialized view mv;
Difference between normal view and materialized view
Normal view It is a stored select statement. It is a virtual component. It allows DESC,DML,SELECT on it. It is stored permanently in “user_views” system table. DML on view are reflected in table and DML on table are
reflected in view. It is used to share “selected rows and columns” with other
rows. It is used for reporting purpose. It will improve the performance while manipulating or
retrieving data through views.
Materialized view It is a static view It holds data in it It will not support DML on it. DML on tale will not reflect in view To create it “create materialized view” permission is
required. It is used to maintain historic data. It is used for data analysis and reporting purpose. It is same as SNAP SHOT.