#数据库--第4章 数据库视图

#数据库--第4章 数据库视图

    • 一、什么是视图?
    • 二、视图的创建
    • 三、视图的删除
    • 四、视图的查询
    • 五、视图的增删改
    • 六、总结

  这一章节将会介绍所有的数据库视图操作,使用的数据是 第一章 介绍和导入的数据。

一、什么是视图?

  视图是关系数据库系统提供给用户的多种角度观察数据库中数据的重要机制。
  视图是从一个或n个基本表(视图)导出的表,它与基本表不同,是一个虚表。
  数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。
  视图在概念上与基本表等同,用户可以在视图上再定义视图,可以对视图进行查询、删除、更新等操作。
  如果基本表中的数据发生变化,从视图中查询出的数据也随之改变。
  如果对视图进行更新操作,那么对应的基本表也会进行更新,但是不是所有视图都支持更新操作。
  视图定义被编译后存储,因此执行效率高。

注意:视图一旦创建,便不可修改,只能删除重建。


二、视图的创建

  关键字:create view 视图名称[(字段名)] as 子查询 [with check option]
  注意:子查询可以有函数,但不允许有 order by 或者 distinct

  如果子查询的 select 接的不是单纯的字段名,或者有重名字段,则创建视图时字段名不可省略

create view view_partavgcost(AVG_PARTKEY, AVG_SUPPLYCOST) as 
select PS_PARTKEY, avg(PS_SUPPLYCOST) from partsupp group by PS_PARTKEY;

  如果子查询 select 接的是不重复的字段名,则创建视图时,可以省略字段名,默认使用 select 中的字段名

create view partcost as select PS_PARTKEY, PS_SUPPLYCOST from partsupp;
create view region_view as select R_REGIONKEY, R_NAME from region;

三、视图的删除

  关键字:drop view … [cascade]
  注意:cascade 用来连带删除由此视图导出的其它视图
      但是SQL Server里不能够用CASCADE关键字进行表的删除,如果在SQL Server中要对表进行删除可以直接使用DROP<表名>

drop view partcost cascade;

四、视图的查询

  视图的查询和基本表一致,这里不多赘述

select * from view_partavgcost;

五、视图的增删改

  视图的增删改和普通表的增删改基本一致,但有以下几点需要注意:

  1、在对视图进行增加操作时,未在视图中出现的列置为默认值,若没有定义默认值则会插入失败
  2、若视图子句中含有聚集函数,则不可对这个视图进行增删改操作
  3、若视图子句含有标量函数,则不可对视图进行增加操作,可以进行删除和受限的修改操作(受限的修改:只能修改非函数字段)
  4、若视图子句不含有函数,即为单纯的字段名,则可以进行增删改
  5、对视图进行的增删改,也会对基本表进行

insert into region_view(R_REGIONKEY, R_NAME) values (-1, 'ddd');

六、总结

  1、视图其实就相当于预定义一个查询语句,可以让查询的逻辑更清晰
  2、视图使用户能以多种角度看待同一数据
  3、视图对重构数据库提供一定程度的逻辑独立性
  4、视图能够对机密数据提供安全保护
  5、若修改了基本表的结构,那么视图就可能无法工作。需要删除重新建立

你可能感兴趣的:(数据库)