转自:http://www.cnblogs.com/pony/archive/2008/07/15/1243210.html
什么是视图:
视图(view):从一个或几个基本表中根据用户需要而做成一个虚表
1:视图是虚表,它在存储时只存储视图的定义,而没有存储对应的数据
2:视图只在刚刚打开的一瞬间,通过定义从基表中搜集数据,并展现给用户
视图与查询的区别:
视图和查询都是用由sql语句组成,这是他们相同的地方,但是视图和查询有着本质区别:
它们的区别在于:
1:存储上的区别:视图存储为数据库设计的一部分,而查询则不是.
2:更新限制的要求不一样
要注意:因为视图来自于表,所以通过视图可以间接对表进行更新,我们也可以通过update语句对表进行更新,但是对视图和查询更新限制是不同的,以下我们会知道虽然通过视图可以间接更新表但是有很多限制.
3:排序结果:通过sql语句,可以对一个表进行排序,而视图则不行。比如:创建一个含有order by子句的视图,看一下可以成功吗?
视图的优点:
为什么有了表还要引入视图呢?这是因为视图具有以下几个优点:
1:能分割数据,简化观点。可以通过select和where来定义视图,从而可以分割数据基表中某些对于用户不关心的数据,使用户把注意力集中到所关心的数据列.进一步简化浏览数据工作
2:为数据提供一定的逻辑独立性。 如果为某一个基表定义一个视图,即使以后基本表的内容的发生改变了也不会影响“视图定义”所得到的数据
3:提供自动的安全保护功能。 视图能像基本表一样授予或撤消访问许可权
4:视图可以间接对表进行更新,因此视图的更新就是表的更新
视图的创建和管理
视图的创建
1:通过sql语句
格式:create view 视图名 as select 语句
试一试:分别创建关于一个表或多个表的视图[因为视图可以来自于多表]
2:通过企业管理器
说明:
1:在完成视图的创立之后,就可以像使用基本表一样来使用视图
2:在创建视图时,并非所有的select子查询都可用,如:compute和compute by,order by[除非与top一起连用]
3:但在查询时,依然都可以用在创建时禁用的select子查询
4:在视图创建时,必须为没有标题列指定标题[思考:能否不用select语句来创建一个视图]
视图的删除:
1:通过sql语句:drop view 视图名
2:通过企业管理器
说明:与删除表不同的是,删除视图后只是删除了视图了定义,并没有删除表中的数据.[查看相关性]
修改视图的定义
1:通过企业管理器
2:通过sql语句:
格式:alter view 视图名 as 新的select语句
浏览视图信息 sp_helptext 视图名 [查看视图创建的语句]
如何通过视图修改基本表的数据.
A:在视图上使用insert语句
通过视图插入数据与直接在表中插入数据一样,但视图毕竟不是基本表.因此在进行数据插入时还是有一定的限制
1:如果视图上没有包括基本表中属性为not null[不能为空]的列,那么插入操作会因为那些列是null值而失败.
2:如果某些列因为某些规则或约束的限制而不能直接接受从视图插入的列时,插入会失败
3:如果在视图中包含了使用统计函数的结果,或是包含计算列,则插入操作会失败
4:不能在使用了distinct语句的视图中插入值
5:不能在使用了group by语句的视图中插入值
1
数据库视图介绍(二)
B:使用update更新视图中的数据
1:更新视图与更新表格一样,但是在视图中使用了多个基本表连接的情况下,每次更新操作只能更新来自基本表的一个数据列
例如:创建以下视图:
create view del as select 职工号,姓名,部门名称,负责人 from work1,部门 where work1.部门编号=部门.部门编号
如果再执行下面的语句时:
update del set 职工号=\'001\',部门名称=\'wenda\' where 职工号=\'01\'[出现错误]
只能够改成:
update del set 职工号=\'001\' where 职工号=\'01\' update del set 部门名称=\'wenda\' where 职工号=\'01\'
2:不能在使用了distinct语句的视图中更新值
3:不能在使用了group by语句的视图中更新值
C:使用delete删除视图中数据.
通过视图删除数据最终体现为从基本表中删除数据
格式:delete 视图名 [where 条件]
说明:当视图由两个以上的基表构成时,不允许删除视图的数据
例如:建一个视图kk
create view kk as select 职工号,姓名,性别,部门名称 from work1,部门 where work1.部门编号=部门.部门编号 [试着去删除]
使用with check option的视图
如果不了解视图定义内容,则常常会发生向视图中输入不符合视图定义的数据的情况.
比如:
create view xm as select * from work where 性别=\'男\'
完全可以插入insert xm values(\'001\',\'女\',23,\'2400\'....)
尽管从意义上来说是不合理的,但是上述语句是正确的.为了防止这种情况的发生,可以使用with check option子句来对插入的或更改的数据进行限制.
比如:
create view xm as select * from work where 性别=\'男\' with check option
使用schemabinding的视图[使用绑定到构架]
我们知道视图是依赖于表,如果在一个表中创建一个视图,今后如果这个表被删除了,则这个视图将不可再用了.为了防止用户删除一个有视图在引用的表,可以在创建视图的时候加上schemabinding关键字.
比如:
create view 基本工资 with SCHEMABINDING as select 姓名,性别,基本工资 from dbo.work
说明:
1:不能使用“*”来创建此类型的视图
2:创建此类型的视图时,一定要加上dbo.表名.
3:如果在某个表中定义了此类视图,则用户将不能对表的结构进行修改,否则会删除这些绑定
4:如果用户对表的结构进行列改名,则会删除绑定而且视图不可用.
5:如果用户对表的结构进行列的类型或者大小修改,则会删除绑定但视图可用,此时用户可以删除视图所引用的表.
使用with encryption对视图进行加密
为了保护创建视图定义的原代码,可以对视图进行加密.
比如:
create view kk with encryption as select * from work where 职称=\'经理\'
用sp_helptext来查看一下.或用企业管理器查看一下.
说明:如果应用此项用户将无法设计视图
使用视图加强数据的安全
一般通过使用视图共有三种途径加强数据的安全性
A:对不同用户授予不同的使用权.
B:通过使用select子句限制用户对某些底层基表的列的访问
C:通过使用where子句限制用户对某些底层基表的行的访问, 对不同用户授予不同的权限
相关推荐
### 数据库视图的创建和使用 ...通过上述详细的介绍,我们可以了解到数据库视图不仅能够简化数据查询过程,还能够提高数据的安全性和可维护性。合理地设计和使用视图对于提高数据库系统的灵活性和效率具有重要意义。
数据库视图是数据库管理系统中的一个重要概念,它提供了一种虚拟表的形式,允许用户从一个或多个实际表中选择和组织数据,以满足特定查询需求。视图并不存储数据,而是根据用户的需求动态生成数据,因此它是一种逻辑...
数据库视图作为一种重要的数据库对象,其在数据管理与查询中扮演着关键角色。视图可以被看作是存储在数据库中的SELECT查询结果的虚拟表,它并不实际存储数据,而是作为一个查询窗口,允许用户以不同的方式查看数据。...
实验报告的主题是“数据库实验”,主要探讨视图的定义与使用,特别针对SQL Server 2000环境。视图是数据库系统中的一个重要概念,它是一个虚拟表,其内容基于一个或多个实际的表,但并不存储任何数据,而是根据需要...
### 数据库视图详解 #### 一、视图的基本概念 **视图**是一种数据库对象,它可以被视为一张虚拟的表,其数据来源于一个或多个实际存在的表(称为基表)。视图本身并不存储数据,而是作为对数据的一种逻辑展现方式...
### Oracle数据库视图管理知识点详解 #### 一、Oracle数据库对象概述 在Oracle数据库中,数据对象主要包括表和视图,此外还有约束、序列、函数、存储过程、包、触发器等多种类型。这些数据对象构成了Oracle数据库...
以下将详细介绍创建MySQL数据库视图的过程以及相关的知识点。 1. **视图的基本概念** 视图是基于一个或多个表的预定义SQL查询。用户可以像操作真实的表一样对视图进行查询,但修改时需要注意视图的可更新性,不是...
数据库视图的创建与使用ppt,需要的童鞋课下载
数据库视图、存储过程与函数入门学习 内容循序渐进 很详细 很规范 从概念到示例 很适合初学者学习
第7章+sql数据库视图与索引.ppt第7章+sql数据库视图与索引.ppt第7章+sql数据库视图与索引.ppt第7章+sql数据库视图与索引.ppt
通过上述步骤和代码示例,我们展示了如何在面向对象分析中通过类图来表示数据库视图,并实现这种映射关系。这种方法不仅有助于理解数据库视图的逻辑结构,还能够提高代码的可维护性和可扩展性。在实际应用中,应根据...
本篇将详细讲解如何利用C#编程语言实现Oracle数据库视图的迁移。 首先,我们需要理解C#的基本语法和Oracle数据库的连接方式。C#提供了ADO.NET框架,通过System.Data.OracleClient或Oracle.ManagedDataAccess.Client...
4. **创建本地视图**:有了数据库链接后,我们可以在本地数据库中创建视图,这个视图基于远程数据库的表或视图。例如: ```sql CREATE VIEW local_view AS SELECT * FROM remote_table@remote_db; ``` 这样,当...
视图是关系数据库中的一个重要概念,它提供了一种抽象机制,使得用户可以以一种简化的方式访问数据。视图可以被视为从一个或多个基本表中导出的虚拟表,它不存储任何实际数据,而是根据其定义在需要时动态生成数据。...
**MySQL数据库中的视图概述** 视图是数据库系统中一个重要的概念,它提供了一种抽象数据的方法,使得用户可以根据自己的需求看到数据库中的特定部分。在MySQL数据库中,视图是通过执行`SELECT`语句从一个或多个基本...
【达梦数据库视图工具+驱动包】是一个专为达梦数据库系统设计的综合性工具集,其中包含了用于管理和操作达梦数据库的视图工具以及必要的驱动程序。达梦数据库是中国自主研发的一款高性能、高可靠性的关系型数据库...
### 数据库表与视图的创建与维护:深入解析与实践 #### 实验核心知识点概览 本实验报告聚焦于数据库表与视图的创建与维护,尤其在Sybase数据库环境下进行深度探索。核心知识点包括: 1. **E-R图到逻辑模式的转换*...
在这个场景中,我们主要关注如何使用SQL来创建数据库表和视图。 首先,让我们从创建数据库表开始。在SQL中,创建表的语句是`CREATE TABLE`。它允许你定义表的结构,包括列名、数据类型、约束条件等。一个基本的`...
"java根据数据库表或视图创建实体"这个程序就是为了解决这一问题而设计的。它允许开发者通过输入数据库的连接信息(如数据库URL、用户名、密码)、表名或视图名,自动生成对应的Java实体类。这极大地方便了开发人员...
数据库视图是数据库中一个非常重要的概念,它提供了一种虚拟表的概念,使得用户可以通过视图来简化复杂的查询操作,同时也可以提高数据的安全性。在不同的数据库管理系统中,视图的支持和实现方式可能会有所不同。...