数据库实验:视图

数据库实验:视图

实验内容

1. 实验目的

2. 实验内容和要求

3. 实验重点和难点

4、实验过程

实验分析


实验内容

1. 实验目的

熟悉SQL语言有关视图的操作,能够熟练使用SQL语句来创建需要的视图,定义数据库外模式,并能使用所创建的视图实现数据管理。

2. 实验内容和要求

针对给定的数据库模式,以及相应的应用需求,创建视图和带WITH CHECK OPTION的视图,并验证视图WITH CHECK OPTION选项的有效性。理解和掌握视图消解执行原理,掌握可更新视图和不可更新视图的区别。

3. 实验重点和难

实验重点:创建视图

实验难点:可更新的视图和不可更新的视图之区别,WITH CHECK OPTION的验证。

4、实验过程

(1)创建视图(省略视图列名)

创建一个“海大汽配”供应商供应的零件视图V_DLMU_PartSupp1,要求列出供应零件的编号、零件名称、可用数量、零售价格、供应价格和备注等信息。

涉及Part.partkey, Part.name, PartSupp.availqty, Part.retailprice, PartSupp.supplycost, Part.comment,Supplier

CREATE VIEW V_DLMU_PartSupp1

AS

SELECT P.Partkey,P.Name,PS.Availqty,P.Retailprice,PS.Supplycost,P.Comment

FROM Part P,PartSupp PS

WHERE P.Partkey = PS.partkey AND PS.Suppkey IN(

SELECT Suppkey

FROM Supplier S

WHERE S.Name = '海大汽配'

 

(2)创建视图(不能忽略列名的情况)

创建一个视图V_CustAvgOrder,按顾客统计平均每个订单的购买金额和零件数量,要求输出顾客编号,姓名,平均购买金额和平均购买零件数量。

涉及Customer, Orders, Lineitem

CREATE VIEW V_CustAvgOrder(Custkey,Name,Avgprice,Avgquan)

AS

SELECT O.Custkey,C.Name,AVG(O.Totalprice),AVG(L.Quantity)

FROM Customer C,Orders O,Lineitem L

WHERE C.Custkey = O.Custkey AND L.Orderkey = O.Orderkey

GROUP BY O.Custkey,C.Name

-- 以 Custkey和 Name为依据排序,结果为分组属性和集合函数

 

(3)创建视图(WITH CHECK OPTION)

使用WITH CHECK OPTION,创建一个“海大汽配”供应商供应的零件视图V_DLMU_PartSupp2,要求列出供应零件的编号、供应商编号、可用数量和供应价格信息。然后通过该视图分别增加、删除和修改一条“海大汽配”零件供应记录,验证WITH CHECK OPTION是否起作用。

涉及PartSupp中partkey,suppkey,availqty,supplycost

Supplier.name

CREATE VIEW V_DLMU_PartSupp2

AS

SELECT Partkey,Suppkey,Availqty,Supplycost

FROM PartSupp

WHERE Suppkey = (

    SELECT Suppkey

    FROM Supplier

    WHERE Name = '海大汽配')

WITH CHECK OPTION
INSERT INTO V_DLMU_PartSupp2 VALUES(10086,2020,600,66666);

执行出错,供应商“海大汽配” 对应的供应商编号不是 “2020”。

UPDATE V_DLMU_PartSupp2 SET Supplycost = 10

WHERE Suppkey = 55555;

执行通过,满足WITH CHECK OPTION条件。

DELETE FROM V_DLMU_PartSupp2

WHERE Suppkey = 65521;

执行出错,不满足WITH CHECK OPTION条件。


实验分析

实验主要练习了创建视图相关的SQL语句操作。创建视图的时候如果可以省略列名,则视图列名使用选择的属性列列名;也可以指定列名(创建视图时指定,与属性列一一对应)。WITH CHECK OPTION表示视图里面所有的元组都要满足WHERE子句中的条件,无论时修改前还是修改后都必须遵从此规则。透过视图进行的插入、更新或删除操作,都需要符合视图定义中的谓词条件。使用WITH CHECK OPTION需要视图中有WHERE子句,否则该语句是多余的。

 

你可能感兴趣的:(Database)