数据库原理之视图

您所在的位置:网站首页 视图的特点和作用怎么写 数据库原理之视图

数据库原理之视图

2024-01-07 10:27| 来源: 网络整理| 查看: 265

        视图是从一个或多个表中导出来的虚拟表。这是因为视图返回的结果集的一般格式和由列和行组成的表相似,并且在SQL语句中引用视图的方式也与引用表的方式相同。

一、视图概述

        视图是从一个或多个基本表或视图中导出的虚拟表,是从现有基表中抽取若干子集组成用户的专用表,这种构造方式必须使用SQL中的 SELECT 语句实现。在定义一个视图时,只是把其定义放在数据库中,并不直接存储视图对应的数据,知道用户使用视图时采取查找对应的数据。

        使用视图具有如下优点:

        1.1 简化对数据的操作。视图可以简化用户操作数据的方式。可将经常使用的链接、投影、联合查询的选择查询定义为视图,这样在每次执行相同查询时,不必重写这些复杂的语句,只要一条简单的查询视图语句即可。视图可向用户隐藏表与表之间复杂的连接操作。

        1.2 自定义数据。视图能够让不同的用户不同方式看到不同或相同的数据集,即使不同水平的用户共用同一数据库时也是如此。

        1.3 数据集中显示。 视图使用户着重于其感兴趣的某些特定数据或所负责的特定任务,可以提高数据操作效率,同时增强了数据的安全性,因为用户只能看到视图内定义的数据,而不是基本表中的数据。

        1.4 导入和导出数据。 可以用视图将视图导入和导出。

        1.5 合并分割数据。 在某些情况下,由于表中数据量太大,在表的设计过程中可能经常对表进行水平分割或垂直分割,这样表结构的变化会对应用程序造成不良影响。使用视图就可以重新保持原有的数据关系,从而使外模式保持不变,原有的应用程序仍可以通过视图来重载数据。

        1.6 安全机制。 视图可以作为一种安全机制。通过视图,用户只能查看和修改他们能看到的数据。其他数据库或表既不可见也不可访问。

二、视图的创建

        使用 CREATE VIEW 语句创建视图,语法格式如下:

create view as ;语法说明如下::指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。:指定创建视图的 SELECT 语句,可用于查询多个基础表或源视图。

        对于创建视图的 SELECT 语句有如下限制:

用户除了拥有 CREATE VIEW 权限外,还具有操作中涉及的基础表和其他视图的相关权限。 SELECT 语句不能引用系统或用户变量。 SELECT 语句不能包含 FROM 子句中的子查询。 SELECT 语句不能引用预处理语句参数。         2.1 创建基于单表的视图 表明 tb_students_info 字段 id | name | dept_id | age | sex | height | login_date

        在 tb_students_info 表上创建一个名为 view_students_info 的视图,输入的 SQL 语句和执行结果如下所示。

create view view_students_info as select * from tb_students_info;

        默认情况下,创建的视图和基本表的字段是一样的,也可以通过指定视图字段的名称来创建视图。

        在 tb_students_info 表上创建一个名为 v_students_info 的视图,输入的 SQL 语句和执行结果如下所示。

create view v_students_info (s_id,s_name,d_id,s_age,s_sex,s_height,s_date) as select id,name,dept_id,age,sex,height,login_date from tb_students;

        view_students_info 和 v_students_info 两个视图中的字段名称不同。在使用视图时,可能用户不需要了解基本表的结构,更接触不到实际表中的数据,从而保证了数据库的安全。

        2.2 基于多表创建视图

create view 视图名(视图字段,视图字段,...) as select 字段,字段,... from 表1,表2 where 表1.字段=表2.字段;  三、视图的使用

        视图的使用主要包括视图的检索,以及通过视图对基础表进行插入、修改、删除操作。视图的检索几乎没有限制,但是通过视图实现表的插入、修改、删除操作则有一定的限制条件。

        3.1 使用视图进行检索

        视图的查询总是转换成对他的基础表的等价查询。

        3.2 通过视图修改数据

        视图也可以使用 INSERT 命令插入行,当执行 INSERT 命令时,实际上是向视图所引用的基础表插入行。

        如果视图中有下面所述属性,则插更新、删除操作将失效。

视图定义中的 FROM 子句包含两个或多个表,且 SELECT 选择列表表达式中的列包含来自多个表的列。 视图的列是从集合函数派生的。 视图中的 SELECT 语句包含 GROUP BY 子句或 DISTINCT 选项。 视图的列时从常量或表达式派生的。

        视图使用 DELETE 命令进行删除。

delete from 视图名 where 字段=条件: 四、视图的修改

        视图被创建之后,由于某种原因(如基本表中的列发生了改变,或需要在视图中增/减若干列等),需要对视图进行修改。

alter view 视图名 as select语句 with check option; 五、视图的删除

        视图创建之后,可以随时删除。当某个视图被另一个视图引用,当删除这个视图后,如果调用另一个视图,则会出现错误提示。因此,通常基于数据定义视图,而不是基于视图来定义视图。

drop view 视图名:

        DROP VIEW 命令可以删除多个视图,各视图之间用逗号隔离,删除视图必须有 DORP 权限。

结束!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3