3.5 视图

视图类似表,但有区别,考点就是在视图与表的区别!

视图:不是基本表,是从一个或多个基本表(或视图)中导出的表,是虚表,只有结构没有数据

一、定义视图

create view<视图名> [(<列名>[,<列名>]...)] as <子查询> [with check option];

with check option表示对视图进行update、insert和delete时,要保证更新、插入或删除的行满足视图中定义的谓语条件(即子查询的条件表达式);

组成视图的属性列必须全部指定或者是全部省略。以下三种情况是必须明确指定组成视图的所有列名

                                                                  1)某个目标列不是单纯的属性名,而是聚集函数或列表达式;

                                                                   2)多表连接时,选出几个同名列作为师徒的字段;

                                                                   3)需要在视图中为某个列启用新的更合适的名字。

1 create view IS_Student as selet Sno,Sname,Sage from Student  where Sdept='IS';
2 create view IS_Student as select Sno,Sname,Sage from Student where Sdept='IS' with check option;
3 create view IS_S1(SNO,Sname,Grade) as select Student.Sno, Sname,Grade from Student, SC where Sdept='IS' and Sthdent.Sno=Sc.Sno and SC.Cno='1';

二、删除视图

drop view <视图名>;

三、查询视图

select * from IS_Student where Sage<20;等价于查询基本表 
select Sno,Sname,Sage from Student where Sdept='IS' and Sage<20;

四、更新视图

update IS_Student set Sname='刘表‘ where Sno='95020';

注意!关系数据库中一般不允许更新的视图有:

  1.  视图由两个以上基本表导出;
  2. 视图的字段来自字段表达式或常数;
  3. 师徒得子段来自聚焦函数;
  4. 视图定义中含group by字句;
  5. 视图定义中含dinstinct短语
  6. 视图定义中含嵌套查询
  7. 一个不允许更新的视图上定于的视图也不允许更新

五、视图的作用

  1. 简化用户的操作,比如简化数据查询
  2. 使用户能多种角度看问题,把注意力集中在关心的数据上(而不是全部数据)
  3.  通过引入视图可以提高数据的安全性
  4. 视图提供了一定成俗的逻辑独立性
原文地址:https://www.cnblogs.com/xiaoxiaohui2015/p/5770982.html