“21天好习惯”第一期-11

视图

删除视图

语句的格式:

DROP  VIEW  <视图名>

该语句从数据字典中删除指定的视图定义
如果该视图上还导出了其他视图,使用 CASCADE 级联删除语句,把该视图和由它导出的所有视图一起删除
删除基表时,由该基表导出的所有视图定义都必须显式地使用 DROP VIEW 语句删除

例如:

删除视图BT_S

DROP VIEW BT_S;

删除视图IS_S1

DROP VIEW IS_S1;
拒绝执行
级联删除:

                     DROP VIEW IS_S1 CASCADE;      

查询视图

用户角度:查询视图与查询基本表相同
RDBMS 实现视图查询的方法
视图消解法( View Resolution
进行有效性检查
转换成等价的对基本表的查询
执行 修正 后的查询

例如

在信息系学生的视图中找出年龄小于20岁的学生。

        SELECT   Sno,Sage
        FROM      IS_Student
        WHERE   Sage<20;

 IS_Student视图的定义 (参见视图定义例1)

视图消解转换后的查询语句为:

 SELECT  Sno,Sage       
 FROM  Student
 WHERE  Sdept= 'IS'  AND  Sage<20;

例如

查询选修了1号课程的信息系学生

SELECT  IS_Student.Sno,Sname
FROM     IS_Student,SC
WHERE  IS_Student.Sno =SC.Sno AND SC.Cno= '1';

视图消解法的局限 

有些情况下,视图消解法不能生成正确查询。 

例如

S_G视图中查询平均成绩在90分以上的学生学号和平均成绩

SELECT *
FROM   S_G
WHERE  Gavg>=90;

       S_G视图的子查询定义:

CREATE VIEW S_G (Sno,Gavg)
         AS 
SELECT  Sno,AVG(Grade)
FROM  SC
GROUP BY Sno;

错误:

SELECT Sno,AVG(Grade)
FROM     SC
WHERE  AVG(Grade)>=90
GROUP BY Sno;

正确:

SELECT  Sno,AVG(Grade)
FROM  SC
GROUP BY Sno
HAVING AVG(Grade)>=90;

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值