`
lylyb
  • 浏览: 90459 次
  • 性别: Icon_minigender_1
  • 来自: 烟台
社区版块
存档分类
最新评论
阅读更多
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

      对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图。如果有几台不同的服务器分别存储组织中不同地区的数据,而您需要将这些服务器上相似结构的数据组合起来,这种方式就很有用。

      通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。

一、视图的作用
      * 简单性。看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。
      * 安全性。通过视图用户只能查询和修改他们所能见到的数据。数据库中的其它数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过视图,用户可以被限制在数据的不同子集上:

      使用权限可被限制在基表的行的子集上。
      使用权限可被限制在基表的列的子集上。
      使用权限可被限制在基表的行和列的子集上。
      使用权限可被限制在多个基表的连接所限定的行上。
      使用权限可被限制在基表中的数据的统计汇总上。
      使用权限可被限制在另一视图的一个子集上,或是一些视图和基表合并后的子集上。

      * 逻辑数据独立性。视图可帮助用户屏蔽真实表结构变化带来的影响。

二、视图的优点

      (1)视图能简化用户的操作
      (2)视图机制可以使用户以不同的方式查询同一数据
      (3)视图对数据库重构提供了一定程度的逻辑独立性
      (4)视图可以对机密的数据提供安全保护

三、视图的安全性

      视图的安全性可以防止未授权用户查看特定的行或列,是用户只能看到表中特定行的方法如下:

      1 在表中增加一个标志用户名的列;

      2 建立视图,是用户只能看到标有自己用户名的行;

      3 把视图授权给其他用户。

四、逻辑数据独立性

      视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。视图可以在以下几个方面使程序与数据独立:

      1 如果应用建立在数据库表上,当数据库表发生变化时,可以在表上建立视图,通过视图屏蔽表的变化,从而应用程序可以不动。

      2 如果应用建立在数据库表上,当应用发生变化时,可以在表上建立视图,通过视图屏蔽应用的变化,从而使数据库表不动。

      3 如果应用建立在视图上,当数据库表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而应用程序可以不动。

      4 如果应用建立在视图上,当应用发生变化时,可以在表上修改视图,通过视图屏蔽应用的变化,从而数据库可以不动。

五、视图的书写格式

CREATE VIEW <视图名>[(列名组)]
AS <子查询>

DROP VIEW <索引名>

注意:视图可以和基本表一样被查询,但是利用视图进行数据增,删,改操作,会受到一定的限制。

(1)由两个以上的基本表导出的视图
(2)视图的字段来自字段表达式函数
(3)视图定义中有嵌套查询
(4)在一个不允许更新的视图上定义的视图

六、创建和管理视图

(创建视图时注意事项的介绍)

(一). 利用企业管理器创建与管理视图

      1.使用企业管理器创建视图:
      2.使用企业管理器的“向导”创建视图:   
      3.使用企业管理器的修改视图:
      注意:在 “设计视图”时完成的工作:
  添加表/删除表 ?添加引用字段/删除引用字段 ?调整字段顺序 ?设置分组
  设置过滤条件 ?设置引用字段是否输出 ?设置视图其他属性
      4.使用企业管理器的删除视图:

(二). 用T-SQL语句创建与管理视图

      (查看由企业管理器创建的视图—“项目信息”其相应的T-SQL语句)(“视图属性”)
      1. 使用CREATE VIEW创建视图的语法: 参见教材p130~135
      例子1: 选择‘员工表’和‘项目表’中的部分字段和记录创建视图,并且限制表‘员工表’ 中的记录只能是部门为“项目部”的记录集合,视图定义为view_part,其程序清单如下:

CREATE VIEW view_part
AS
SELECT 员工表.编号, 员工表.姓名,员工表.性别,
员工表.所属部门, 项目表.项目编号, 项目表.名称
FROM 项目表 INNER JOIN 员工表 ON 项目表.负责人 = 员工表.编号
WHERE 员工表.所属部门='项目部'

例子2:定义视图时指定别名并加密

CREATE VIEW 项目信息视图
(项目名称,项目客户,项目负责人,开始日期,[计划工期(天)])
with encryption
AS
SELECT 项目表.名称,客户表.客户名称, 员工表.姓名,项目表.开始日期,
DATEDIFF(day,项目表.开始日期,项目表.结束日期)
FROM 项目表 INNER JOIN 员工表 ON 项目表.负责人 = 员工表.编号
INNER JOIN 客户表 ON 项目表.客户 = 客户表.客户编号
WHERE 员工表.所属部门='项目部'

使用语句:exec sp_helptext ‘项目信息视图’显示消息为:
“对象备注已加密。” 

操作结果如下图所示



例子5-3:使用WITH CHECK OPTION子句
问题提出:
若创建视图ygb_view,其程序清单如下:

CREATE VIEW ygb_view
AS
SELECT * FROM 员工表
WHERE 员工表.性别=‘女’执行下列语句,插入新记录:
INSERT INTO ygb_view(姓名,性别,工资)
values(‘李立三’,‘男’,2300)


插入操作成功,但不合理!
解决办法:使用with check option,程序清单如下:

CREATE VIEW ygb_view
AS
SELECT * FROM 员工表 WHERE 员工表.性别=‘女’With check option

同样,插入新记录:
INSERT INTO ygb_view(姓名,性别,工资) values(‘李立三’,‘男’,2300)
插入操作将失败!

2.使用ALTER VIEW修改视图 语法:参见教材
3.删除视图DROP VIEW
  使用DROP VIEW命令删除视图的语法如下: DROP VIEW 视图名1 [, ……]
例: DROP VIEW ygb_view

七、使用视图操作表数据

(一)、通过视图添加表数据

  使用INSERT语句实现。
  注意:视图是虚拟表,其本身不存储数据(来自其引用表), 添加的数据是存储于视图参照的数据表中。

条件分析:
1)用户有向数据表插入数据的权限;
2)视图只引用表中部分字段,插入数据时只能是明确其应用的字段取值;
3)未引用的字段应具备下列条件之一:
  允许空值;设有默认值;是标识字段;数据类型是timestamp或uniqueidentifer;
4)视图不能包含多个字段的组合
5)视图不能包含使用统计函数的结果;
6)视图不能包含DISTINCT或GROUP BY子句;
7)定义视图使用WITH CHECK OPTION,则插入数据应符合相应条件;
8)若视图引用多个表,一条INSERT语句只能同一个基表表中数据;

例:
首先创建了一个新的视图:

CREATE VIEW ygb_view
AS
SELECT * FROM 员工表 WHERE 员工表.性别=‘女’ with check option

然后,通过执行以下语句使用该视图向基表添加一条新的数据记录:
INSERT INTO ygb_view(姓名,性别,工资) values(‘李立平’,‘女’,2300)

(二). 更新数据记录
  使用视图可以更新基表数据记录(注意使用INSERT时的限制同样适用)。
例子3:
(1) update 项目_view
  set 项目负责人= ‘王大力’ where 项目负责人= ‘王立兵’
(2) update 项目_view
  set 结束日期= DATEADD(day, 50, 结束日期) where 客户名称=‘CCH公司’

(三)、删除数据记录
  利用DELETE语句,使用视图删除记录,可以删除任何基表中的记录。
  注意: 必须指定在视图中定义过的字段来删除记录;
     视图引用多个表时,无法用DELETE命令删除数据。
例子4:delete ygb_view where 员工工资<1500

分享到:
评论

相关推荐

    ios 表视图一

    在iOS开发中,表视图(UITableView)是用于展示数据列表的一种常见且强大的控件。它允许用户滚动浏览数据,并可以实现多种交互功能,如点击选中、滑动操作等。"ios 表视图一"这个主题主要是针对初学者,提供了一个...

    分节表视图_动态

    在iOS开发中,分节表视图(Sectioned Table View)是一种常见的用户界面元素,它允许数据以分组的形式展示,极大地提高了用户在浏览大量信息时的可读性和交互性。这种视图常用于App中的联系人列表、日历、购物清单等...

    IOS 创建简单表视图

    在iOS开发中,表视图(UITableView)是用于展示数据的常见组件,它允许用户滚动浏览和交互。本实例将详细介绍如何创建一个简单的表视图,重点在于实现UITableViewDataSource协议中的核心方法。首先,让我们理解...

    abap 维护表视图

    在这个特定的话题“ABAP维护表视图”中,我们将深入探讨如何在ABAP环境中管理和操作表视图,这是一种在数据库层面与数据交互的重要方式。 表视图在数据库管理中扮演着关键角色,它们提供了对原始数据库表的抽象和...

    ios-表视图,增加,删除数据.zip

    在iOS开发中,表视图(UITableView)是用于展示数据的一种常见组件,它允许用户滚动浏览和交互。在这个“ios-表视图,增加,删除数据.zip”项目中,新手开发者可能正在尝试实现如何在表视图中动态地添加、删除数据。...

    二级表视图和表视图的修改

    二级表视图通常是指在一个表视图的基础上嵌套另一个表视图,形成多级数据展示的效果,这对于组织复杂的数据结构非常有用。本话题将深入探讨二级表视图的实现与修改。 首先,我们要理解什么是表视图(TableView)。...

    iOS开发之表视图详解

    在iOS开发中,表视图(UITableView)是一个至关重要的组件,它被广泛用于展示列表形式的数据。本篇文章将深入探讨表视图的各个方面,包括其组成、相关类、分类、单元格的样式以及数据源协议和委托协议。 首先,表...

    导航控制器和表视图(一)

    在iOS应用开发中,导航控制器(Navigation Controller)与表视图(Table View)是两个非常重要的组件,它们在构建用户界面时起着至关重要的作用。本文将深入探讨这两个概念,以及它们如何协同工作来提供流畅的用户...

    分节表视图_静态

    分节表视图是iOS应用开发中常见的UI组件,它允许数据以清晰、有组织的方式呈现,通常用于显示大量信息并支持用户交互。在iOS开发中,我们使用UIKit框架中的UITableView类来创建和管理这样的视图。在这个"分节表视图_...

    表视图资源-密码123.zip

    "表视图资源-密码123.zip" 是一个包含与表视图相关的素材和配置文件的压缩包,主要用于帮助开发者创建具有视觉吸引力和功能性的表视图。 压缩包中的第一个资源是“表视图资源”。这通常包括一系列的图片,这些图片...

    表视图控件的使用

    在iOS开发中,表视图(TableView)是极为关键的用户界面组件,它允许开发者以列表形式展示数据,用户可以通过滚动浏览大量信息。本主题主要围绕“表视图控件的使用”展开,我们将深入探讨如何使用代码创建并管理一个...

    SQL Server 利用触发器对多表视图进行更新的实现方法

    本示例展示了如何利用触发器来实现对多表视图的更新,具体涉及了以下几个关键知识点: 1. **触发器的类型**: - 在SQL Server中,有DML(Data Manipulation Language)触发器和DDL(Data Definition Language)...

    《Iphone开发基础教程》第八章 表视图简介(二)

    在iOS应用开发中,表视图(UITableView)是不可或缺的一部分,尤其在iPhone开发中更是频繁使用。本教程的第八章“表视图简介(二)”深入探讨了如何利用表视图来构建用户界面,提供了丰富的实践案例。下面将详细阐述...

    iphone表视图的创建于使用

    在iOS应用开发中,表视图(UITableView)是不可或缺的一部分,尤其在iPhone应用设计中扮演着重要角色。它提供了一种高效、灵活的方式来展示大量结构化的数据,如联系人列表、菜单选项或日历事件。本篇文章将深入探讨...

    导航栏控制器与表视图简单Demo

    在iOS应用开发中,导航栏控制器(UINavigationController)和表视图(UITableView)是两个非常重要的组件,它们常被一起使用来构建用户界面。在这个名为"NavTableLastDemo"的项目中,我们可以深入理解这两者的结合...

    计算机软件及应用三维CAD表达视图.pptx

    计算机软件在三维CAD领域中的应用主要体现在表达视图的创建和管理上,这对于设计和工程领域至关重要。在本文中,我们将深入探讨表达视图的基本概念、创建方法、位置调整、照相机视图控制以及动画模拟。 首先,表达...

    《Iphone开发基础教程》第八章 表视图简介(一)

    在iOS应用开发中,表视图(UITableView)是不可或缺的一部分,尤其在iPhone应用设计中扮演着重要的角色。《Iphone开发基础教程》第八章“表视图简介(一)”着重介绍了如何入门并掌握这个核心组件。表视图提供了一种...

    SQL表视图代码自动生器

    SQL表视图代码生成器是一种高效实用的工具,专为IT专业人员设计,它能够极大地简化数据库管理和开发过程。此工具的核心功能在于自动化生成SQL Server数据库中的表或视图的相关代码,包括但不限于汇总代码和插入代码...

    《Iphone开发基础教程》第八章 表视图简介(三)

    在iOS应用开发中,表视图(UITableView)是不可或缺的一部分,它被广泛用于展示大量结构化数据,如联系人列表、菜单选项等。本教程基于《Iphone开发基础教程》第八章,着重介绍表视图的基本概念和实现方法,特别关注...

Global site tag (gtag.js) - Google Analytics