What is a View?
Views are virtual
tables that hold data from one or more tables. It is a query stored in the
database as object. A view does not contain any data itself, it is a set of
queries that are applied to one or more tables that are stored within the
database as an object
What is the use of view?
- It allows you to reuse code without having to write the same complex SQL code over and over.
- Views are used for security purposes in databases. Views restrict the user from viewing certain columns and rows. In other words, using a view we can apply the restriction on accessing specific rows and columns for a specific user
Can we use ORDER BY clause inside a view?
The ORDER BY clause is invalid in views, inline functions,
derived tables, subqueries, and common table expressions, unless TOP or FOR XML
is specified.
Can we update a view?
If the view contains joins between multiple tables, you can
only insert and update one table in the view, and you can't delete rows.
You can't modify data in views that use GROUP BY or DISTINCT statements.
All columns being modified are subject to the same
restrictions as if the statements were being executed directly against the base
table.
The WITH CHECK OPTION clause forces all data-modification statements executed against the view to adhere to the criteria set within the WHERE clause of the SELECT statement defining the view. Rows cannot be modified in a way that causes them to vanish from the view.
Can anyone update a table which is used in a view? How you can prevent that?
Schema binding
binds your views to the dependent physical columns of the accessed tables
specified in the contents of the view, i.e. if a view say vw_CustomerBill is schema bind no one will be able to alter
the base table dbo.Customer table
unless they drop the table.
Note: Why would we need Schemabinding?
It prevents your views from being orphaned. Just think that someone
drops/alters the table dbo.Customer without paying any heed to our view. Now that would leave our
view nowhere. Hence schema bind it, this will prevent any such accidents from
happening.Also to be
able to create an index on the view you need it essentially schema bound.
ALTER VIEW
vw_billing
WITH SCHEMABINDING
AS
SELECT C.FName
,C.LNme
,P.ProductDesc
,B.DateOfBooking
,P.Price
,B.QTY
,(B.QTY*P.Price) AS
TotalAmountPayable
FROM dbo.BookMaterials B
INNER JOIN
dbo.PRODUCT P
ON B.ProductID=P.ProductID
INNER JOIN
dbo.Customer C
ON B.CustID=C.CustID;
Comments
Post a Comment