数据库原理-视图

合集下载

数据库-视图

数据库-视图

创建视图
创建视图要注意以下几点: (1)创建视图的用户必须对所参照的表或视图有查询权 限,即可以执行SELECT语句。 (2)创建视图时,不能使用 COMPUTE 或 COMPUTE BY 子句。 (3)创建视图时,不能使用 ORDER BY 子句,除非在 SELECT 语句的选择列表中也有一个TOP子句。 (4)创建视图时,不能使用INTO子句。 (5)不能在临时表或表变量上创建视图。 (6)CREATE VIEW 必须是批命令中的第一条语句。 课外阅读:
视图与表
视图与表不同,是一个虚拟表。视图只储 存了它的定义(select语句),而没有储存视 图对应的数据,这些数据仍存放在原来的 数据表(基表)中,数据与基表中数据同步, 即对视图的数据进行操作时,系统根据视 图的定义去操作与视图相关联的基本表。 视图又像表,可以像基本表一样进行数据 操作:查询、修改、删除和更新数据。
3、修改视图
1. 使用企业管理器修改视图定义 2.使用ALTER VIEW命令修改视图定义 ALTER VIEW 视图名[(列名1 [,…n])] AS 查询语句 说明: (1)视图名称在修改视图操作中是不能改变的。 (sp_rename ‘view1’,’view2’ ) (2)列名可以根据需要进行修改。 注意: ALTER VIEW 语句也必须是批处理中的第一条语句。 课外阅读:
使用视图的优点
(1)为用户集中数据,简化用户的数据查 询和处理。 (2)简化用户权限管理,增加了安全性。 (3)屏蔽数据库的复杂性。 (4)便于数据共享。 (5)可以重新组织数据以便输出到其它应 用程序中。
使用视图的注意事项
(1)只有在当前的数据库中才能创建视图。 (2)视图的命名必须遵循标识符命名规则,不能 与表同名,且对每个用户视图名必须是唯一的, 即对不同用户,即使是定义相同的视图,也必须 使用不同的名字。 (3)不能把规则,默认值与视图相关联。 (4)使用视图查询时,若其关联的基本表中添加 了新字段,则必须重新创建视图才能查询到新字 段。 (5)如果与视图关联的表或视图被删除,则该视 图将不能再使用。

什么是数据库视图作用有哪些

什么是数据库视图作用有哪些

什么是数据库视图作⽤有哪些 数据库视图即视图所对应的数据不进⾏实际存储,数据库中只存储视图的定义,外⾏对于数据库视图表⽰不理解。

以下是由店铺整理关于数据库视图的内容,希望⼤家喜欢! 数据库视图的介绍 视图是虚表,是从⼀个或⼏个基本表(或视图)中导出的表,在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。

视图是原始数据库数据的⼀种变换,是查看表中数据的另外⼀种⽅式。

可以将视图看成是⼀个移动的窗⼝,通过它可以看到感兴趣的数据。

、视图是从⼀个或多个实际表中获得的,这些表的数据存放在数据库中。

那些⽤于产⽣视图的表叫做该视图的基表。

⼀个视图也可以从另⼀个视图中产⽣。

视图的定义存在数据库中,与此定义相关的数据并没有再存⼀份于数据库中。

通过视图看到的数据存放在基表中。

视图看上去⾮常像数据库的物理表,对它的操作同任何其它的表⼀样。

当通过视图修改数据时,实际上是在改变基表中的数据;相反地,基表数据的改变也会⾃动反映在由基表产⽣的视图中。

由于逻辑上的原因,有些视图可以修改对应的基表,⽽有些则不能(仅仅能查询)。

数据库视图的作⽤ 简单性。

看到的就是需要的。

视图不仅可以简化⽤户对数据的理解,也可以简化他们的操作。

那些被经常使⽤的查询可以被定义为视图,从⽽使得⽤户不必为以后的操作每次指定全部的条件。

安全性。

通过视图⽤户只能查询和修改他们所能见到的数据。

数据库中的其它数据则既看不见也取不到。

数据库授权命令可以使每个⽤户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定⾏和特定的列上。

通过视图,⽤户可以被限制在数据的不同⼦集上: 使⽤权限可被限制在基表的⾏的⼦集上。

使⽤权限可被限制在基表的列的⼦集上。

使⽤权限可被限制在基表的⾏和列的⼦集上。

使⽤权限可被限制在多个基表的连接所限定的⾏上。

使⽤权限可被限制在基表中的数据的统计汇总上。

使⽤权限可被限制在另⼀视图的⼀个⼦集上,或是⼀些视图和基表合并后的⼦集上。

数据库视图原理

数据库视图原理

数据库视图原理
数据库视图是数据库中的一种虚拟表,它是基于数据库表的查询结果集的可视化展示。

视图不存储任何数据,而只是存储了查询语句。

它提供了一种简化和抽象化表格数据的方式,使用户可以方便地访问和操作数据,同时隐藏了底层表的复杂性。

视图的创建是通过查询语句来定义的,该查询语句可以包含一个或多个表,还可以进行过滤、连接、计算和聚合等操作。

用户可以根据自己的需求创建不同的视图,以满足不同的查询和分析需求。

视图的原理是通过在查询时实时执行定义视图时的查询语句,将结果返回给用户。

当用户查询视图时,实际上是执行了视图定义的查询语句,而不是直接查询底层的表。

这种方式可以避免用户直接对底层表进行操作,保证了数据的安全性和完整性。

视图对用户来说是透明的,用户可以像查询表一样对视图进行查询和操作,而不需要了解底层表的细节。

视图还可以提供额外的数据约束,限制用户对数据的访问和操作。

视图的使用可以提供更高的数据抽象和封装,简化了数据库的使用和管理。

它可以隐藏表的具体结构和关系,提供更简洁、直观的数据展示和操作界面。

同时,视图还可以简化复杂的查询操作,提高查询性能和灵活性。

总之,数据库视图是一种基于查询语句的虚拟表,通过实时执行查询语句来提供数据的可视化展示和操作。

它可以简化数据
库的使用和管理,提高数据的安全性和完整性。

视图对用户来说是透明的,提供了更高的数据抽象和封装。

数据库视图的解释

数据库视图的解释

数据库视图的解释
数据库视图
1.什么是视图
视图是⼀个虚拟的表,它不在数据库中以存储数据的
形式保存,是在使⽤视图的时候动态⽣成。

2.视图的特点
2.1视图是由基本表产⽣的虚表
2.2视图的更新和删除会影响基础表
2.3基础表的更新和删除也会影响到视图
3.视图的作⽤
对视图的操作与对基本表的操作都是⼀样的(包括alter,create,insert into ,update ,delete ,select),且⼆者任意⼀⽅的字段值被修改,都会实时影响到对⽅(如修改view的字段值,会同步修改table相应的字段值);
但是视图的创建是基于基本表的,它的作⽤可以对基本表的敏感信息进⾏保护;
在实际⼯作中,出于安全考虑,将⽤户常⽤的信息创建成视图给⽤户调⽤,避免了直接操作基本表!
4. 显⽰⽬前有哪些视图
show tables;创建的视图都在表的最下⾯。

create view A as (select id,name from dcs); //将查询结果集创建为视图A
show CREATE VIEW A(视图名)//创建给定视图
Show tables //查看视图
drop view 视图名; //删除视图。

数据库视图介绍

数据库视图介绍

什么是视图:视图(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语句的视图中插入值B:使用update更新视图中的数据1:更新视图与更新表格一样,但是在视图中使用了多个基本表连接的情况下,每次更新操作只能更新来自基本表的一个数据列例如:创建以下视图:create view del asselect 职工号,姓名,部门名称,负责人 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 条件]说明:当视图由两个以上的基表构成时,不允许删除视图的数据例如:建一个视图kkcreate view kk asselect 职工号,姓名,性别,部门名称 from work1,部门 where work1.部门编号=部门.部门编号 [试着去删除]使用with check option的视图如果不了解视图定义内容,则常常会发生向视图中输入不符合视图定义的数据的情况.比如:create view xm asselect * from work where 性别='男'完全可以插入insert xm values('001','女',23,'2400'....)尽管从意义上来说是不合理的,但是上述语句是正确的.为了防止这种情况的发生,可以使用with check option子句来对插入的或更改的数据进行限制.比如:create view xm asselect * from work where 性别='男' with check option使用schemabinding的视图[使用绑定到构架]我们知道视图是依赖于表,如果在一个表中创建一个视图,今后如果这个表被删除了,则这个视图将不可再用了.为了防止用户删除一个有视图在引用的表,可以在创建视图的时候加上schemabinding关键字.比如:create view 基本工资 with SCHEMABINDINGas select 姓名,性别,基本工资 from dbo.work说明:1:不能使用“*”来创建此类型的视图2:创建此类型的视图时,一定要加上dbo.表名.3:如果在某个表中定义了此类视图,则用户将不能对表的结构进行修改,否则会删除这些绑定4:如果用户对表的结构进行列改名,则会删除绑定而且视图不可用.5:如果用户对表的结构进行列的类型或者大小修改,则会删除绑定但视图可用,此时用户可以删除视图所引用的表.使用with encryption对视图进行加密为了保护创建视图定义的原代码,可以对视图进行加密.比如:create view kk with encryptionas select * from work where 职称='经理'用sp_helptext来查看一下.或用企业管理器查看一下.说明:如果应用此项用户将无法设计视图使用视图加强数据的安全一般通过使用视图共有三种途径加强数据的安全性A:对不同用户授予不同的使用权.B:通过使用select子句限制用户对某些底层基表的列的访问C:通过使用where子句限制用户对某些底层基表的行的访问,对不同用户授予不同的权限。

数据库-视图(View)详解

数据库-视图(View)详解

数据库-视图(View)详解⼀、简介视图(View)可以看作定义在SQL Server上的虚拟表.视图正如其名字的含义⼀样,是另⼀种查看数据的⼊⼝.常规视图本⾝并不存储实际的数据,⽽仅仅存储⼀个Select语句和所涉及表的metadata。

视图简单理解如下:通过视图,客户端不再需要知道底层table的表结构及其之间的关系。

视图提供了⼀个统⼀访问数据的接⼝。

⼆、为什么要使⽤视图(View)从上⾯的图中,我们不难发现,使⽤视图将会得到如下好处:视图隐藏了底层的表结构,简化了数据访问操作因为隐藏了底层的表结构,所以⼤⼤加强了安全性,⽤户只能看到视图提供的数据使⽤视图,⽅便了权限管理,让⽤户对视图有权限⽽不是对底层表有权限进⼀步加强了安全性视图提供了⼀个⽤户访问的接⼝,当底层表改变后,改变视图的语句来进⾏适应,使已经建⽴在这个视图上客户端程序不受影响三、视图(View)的分类视图在SQL中可以分为三类1. 普通视图(Regular View)2. 索引视图(Indexed View)3. 分割视图(Partitioned View)下⾯从这⼏种视图类型来谈视图。

1)普通视图(Regular View)普通视图由⼀个Select语句所定义,视图仅仅包含其定义和被引⽤表的metadata.并不实际存储数据。

MSDN中创建视图的模版如下:CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ][ WITH <view_attribute> [ ,...n ] ]AS select_statement[ WITH CHECK OPTION ] [ ; ]<view_attribute> ::={[ ENCRYPTION ][ SCHEMABINDING ][ VIEW_METADATA ] }参数还是⽐较少的,现在解释⼀下上⾯的参数: ENCRYPTION:视图是加密的,如果选上这个选项,则⽆法修改.创建视图的时候需要将脚本保存,否则再也不能修改了 SCHEMABINDING:和底层引⽤到的表进⾏定义绑定。

视图的原理

视图的原理

视图的原理
视图是数据库中虚拟表的概念,它是通过查询语句动态生成的结果集。

视图的原理是基于数据库中的表和查询语句的关系。

在数据库中,视图并不实际存储数据,而是根据查询语句的条件从底层的表中提取所需的数据。

视图通过查询语句中的SELECT语句来定义,根据查询语句中的条件对表中的数据进行过滤、排序等操作,然后将结果展示给用户。

视图的原理是通过存储查询语句的定义以及底层表中的数据结构和数据来实现。

当创建视图时,查询语句的定义会被存储在数据库中,而不会运行查询语句。

当用户对视图执行查询操作时,数据库会根据存储的查询语句定义,从底层表中提取所需的数据,并将结果返回给用户。

这使得用户可以通过视图来方便地访问底层表中的数据,而无需了解底层表的结构和具体查询语句的细节。

视图的原理是基于数据库的查询优化技术来实现的。

数据库可以根据视图的定义和查询语句的条件,选择合适的访问路径和查询算法来提高查询性能。

数据库还可以使用缓存等技术来优化视图的访问速度,使得用户在查询视图时可以得到快速的响应。

总之,视图的原理是通过存储查询语句的定义和底层表中的数据结构和数据来实现的。

视图提供了一种方便的方式来访问和操作数据库中的数据,使得用户可以根据自己的需求定义查询语句,并在需要时通过视图来获取所需的数据。

视图的底层原理

视图的底层原理

视图的底层原理视图是数据库中的一种虚拟表,它是一个查询过程的结果集,可以简化复杂的查询操作,提高查询的效率。

在理解视图的底层原理时,我们可以从以下几个方面进行探讨:1. 视图的定义和使用:视图是由一个或多个表的数据衍生出来的虚拟表,通过在原始表上应用查询语句,可以创建视图并将其作为一个新的表来使用。

在创建视图时,可以定义视图的列名、列类型以及列属性。

使用视图时,可以像使用普通表一样进行查询、插入、更新和删除操作。

2. 视图的存储与管理:视图的定义和存储是分开的,视图的定义存储在数据库的数据字典中,而实际的数据存储在原始表中。

视图的查询结果只在使用时才会被计算得到,而不是事先存储在数据库中。

每当使用视图时,数据库系统会根据视图的定义和原始表的数据进行计算并返回结果。

3. 视图的查询优化:视图的底层原理是通过对原始表的查询语句进行优化以提高查询效率。

数据库系统在处理视图查询时,会将视图的定义转换为对原始表的查询操作。

这种转换过程可以基于查询重写、条件推断和列剪裁等技术。

- 查询重写:将对视图的查询转换为对原始表的查询,以简化查询过程。

例如,通过将嵌套查询转换为内连接,可以减少查询的复杂性。

- 条件推断:根据查询条件和视图的定义,推断出额外的条件,以减少查询的数据量。

例如,如果视图定义了某个列的取值范围,可以将其作为查询条件进行优化。

- 列剪裁:根据查询结果中所需的列,只查询原始表中相关的列,以减少数据的读取和传输。

例如,如果视图定义了某个列的查询条件,可以只查询该列的数据而不必检索其他列的数据。

4. 视图的更新和维护:视图可以像普通表一样进行插入、更新和删除操作,但有一些限制。

对于某些视图,由于其查询的原始表不唯一,可能无法直接对视图进行更新操作。

此外,如果视图定义中包含了聚合函数、DISTINCT关键字或GROUP BY子句,通常也无法对视图进行直接更新。

当对视图进行更新操作时,数据库系统会自动将这些操作转换为对原始表的更新操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据库原理及应用课程计算机系09级本科班级第10讲章节名称第3章关系数据库标准语言SQL3.5数据更新3.6视图第4章数据库的安全性4.1数据为安全性概述教学目的掌握数据更新语句。

(Grasp Data Modification Statements)掌握视图的定义、查询及更新。

(Grasp the Definition、Query and Modification of View)并要灵活应用理解数据库安全性的含义。

(Comprehend the meanings of Database Security)了解TDI/TCSEC可信计算机系统评测标准。

(Know the trusted Computer System Evaluation Criteria of TDI/TCSEC)教学内容1.数据更新(Updata Insert Delete)2.视图的定义、视图的更新、视图的查询3.数据库安全性概述教学重点数据更新(Updata Insert Delete)视图的定义、查询及更新。

(Definition、Query and Modification of View)理解数据库安全性教学难点视图的概念及作用(Concepts and Functions of View)存取控制、视图机制。

(Access Control、View Mechanism)专业术语Table View select作业3、4、5教学方法启发式教学法+实例对比法教学后记第3章SQL语言3.5数据更新(学生讲)3.6视图视图的特点:1、虚表,是从一个或几个基本表(或视图)导出的表2、只存放视图的定义,不会出现数据冗余3、基表中的数据发生变化,从视图中查询出的数据也随之改变基于视图的操作:查询、删除、受限更新、定义基于该视图的新视图一、定义视图1.建立视图语句格式:CREATE VIEW<视图名>[(<列名>[,<列名>]…)]AS<子查询>[WITH CHECK OPTION];说明:●DBMS执行CREATE VIEW语句时只是把视图的定义存入数据字典,并不执行其中的SELECT语句。

在对视图查询时,按视图的定义从基本表中将数据查出。

●组成视图的属性列名:全部省略或全部指定省略:由子查询中SELECT目标列中的诸字段组成明确指定视图的所有列名:(1)某个目标列是集函数或列表达式(2)目标列为*(3)多表连接时选出了几个同名列作为视图的字段(4)需要在视图中为某个列启用新的更合适的名字2.视图的各种形式1)行列子集视图[例1]建立信息系学生的视图。

CREATE VIEW IS_StudentASSELECT Sno,Sname,SageFROM Student WHERE Sdept='IS';特点:从单个基本表导出、只是去掉了基本表的某些行和某些列、保留了码2)有WITH CHECK OPTION选项的视图透过视图进行增删改操作时,不得破坏视图定义中的谓词条件(即子查询中的条件表达式)[例2]建立信息系学生的视图,并要求透过该视图进行更新操作只涉及信息系学生。

CREATE VIEW IS_StudentASSELECT Sno,Sname,SageFROM Student WHERE Sdept='IS'WITH CHECK OPTION;注:对IS_Student视图的更新操作时,DBMS自动加上Sdept='IS'的条件3)基于多个基表的视图[例3]建立信息系选修了1号课程的学生视图。

CREATE VIEW IS_S1(Sno,Sname,Grade)ASSELECT Student.Sno,Sname,GradeFROM Student,SCWHERE Sdept='IS'ANDStudent.Sno=SC.Sno ANDo='1';4)基于视图的视图[例4]建立信息系选修了1号课程且成绩在90分以上的学生的视图。

CREATE VIEW IS_S2ASSELECT Sno,Sname,GradeFROM IS_S1WHERE Grade>=90;5)带表达式的视图[例5]定义一个反映学生出生年份的视图。

CREATE VIEW BT_S(Sno,Sname,Sbirth)ASSELECT Sno,Sname,2005-SageFROM Student设置一些派生属性列,也称为虚拟列--Sbirth,带表达式的视图必须明确定义组成视图的各个属性列名。

6)建立分组视图[例6]将学生的学号及他的平均成绩定义为一个视图CREAT VIEW S_G(Sno,Gavg)ASSELECT Sno,AVG(Grade)FROM SCGROUP BY Sno;注:一类不易扩充的视图:以SELECT*方式创建的视图可扩充性差,应尽可能避免[例7]将Student表中所有女生记录定义为一个视图CREATE VIEW F_Student1(stdnum,name,sex,age,dept)AS SELECT*FROM StudentWHERE Ssex='女';缺点:修改基表Student的结构后,Student表与F_Student1视图的映象关系被破坏,导致该第3章SQL语言视图不能正确工作。

CREATE VIEW F_Student2(stdnum,name,sex,age,dept)AS SELECT Sno,Sname,Ssex,Sage,SdeptFROM StudentWHERE Ssex='女';为基表Student增加属性列不会破坏Student表与F_Student2视图的映象关系。

3.删除视图DROP VIEW<视图名>;-----从数据字典中删除指定的视图定义说明:由该视图导出的其他视图定义仍在数据字典中,但已不能使用,必须显式删除。

删除基表时,由该基表导出的所有视图定义都必须显式删除[例8]删除视图IS_S1DROP VIEW IS_S1;二、查询视图从用户角度:查询视图与查询基本表相同DBMS实现视图查询的方法:视图消解法(View Resolution)――进行有效性检查,检查查询的表、视图等是否存在。

如果存在,则从数据字典中取出视图的定义把视图定义中的子查询与用户的查询结合起来,转换成等价的对基本表的查询执行修正后的查询。

[例1]在信息系学生的视图中找出年龄小于20岁的学生。

SELECT Sno,SageFROM IS_StudentWHERE Sage<20;用视图消解法转换后的查询语句为:SELECT Sno,SageFROM StudentWHERE Sdept='IS'AND Sage<20;[例2]查询信息系选修了1号课程的学生SELECT Sno,SnameFROM IS_Student,SCWHERE IS_Student.Sno=SC.Sno AND o='1';注:视图消解法的局限有些情况下,视图消解法不能生成正确查询。

采用视图消解法的DBMS会限制这类查询。

[例3]在S_G视图中查询平均成绩在90分以上的学生学号和平均成绩S_G视图定义:CREATE VIEW S_G(Sno,Gavg) ASSELECT Sno,AVG(Grade) FROM SCGROUP BY Sno;SELECT*FROM S_G WHERE Gavg>=90;查询转换错误:SELECT Sno ,AVG(Grade)FROM SCWHERE AVG(Grade)>=90GROUP BY Sno ;指定WITH CHECK OPTION 子句:DBMS 在更新视图时会进行检查,防止用户通过视图对不属于视图范围内的基本表数据进行更新。

UPDATE IS_Student SET Sname='刘辰'WHERE Sno='95002';[例2]向信息系学生视图IS_S 中插入一个新的学生记录:95029,赵新,20岁INSERTINTO IS_StudentVALUES(‘95029’,‘赵新’,20);[例3]删除视图CS_S 中学号为95029的记录DELETE FROM IS_Student WHERE Sno='95029';注:更新视图的限制一些视图是不可更新的,因为对这些视图的更新不能唯一地有意义地转换成对相应基本表的更新例:视图S_G 为不可更新视图。

CREATE VIEW S_G (Sno ,Gavg)ASSELECT Sno ,AVG(Grade)FROM SCGROUP BY Sno ;对于如下更新语句:UPDATE S_G //不能将其转换成对基本表SC 的更新SET Gavg=90WHERE Sno='95001';正确:SELECT Sno,AVG(Grade)FROM SC GROUP BY Sno HAVING AVG(Grade)>=90;转换后的语句:UPDATE Student SET Sname='刘辰'WHERE Sno='95002'AND Sdept='IS';转换为对基本表的更新:INSERT INTO Student(Sno,Sname,Sage,Sdept)VALUES('95029','赵新',20,'IS');转换为对基本表的更新:DELETE FROM Student WHERE Sno='95029'AND Sdept='IS';第3章SQL语言视图的作用:1.视图能够简化用户的操作当视图中数据不是直接来自基本表时,定义视图能够简化用户的操作比如:基于多张表连接形成的视图、基于复杂嵌套查询的视图、含导出属性的视图等2.视图使用户能以多种角度看待同一数据视图机制能使不同用户以不同方式看待同一数据,适应数据库共享的需要3.视图对重构数据库提供了一定程度的逻辑独立性例:数据库逻辑结构发生改变学生关系Student(Sno,Sname,Ssex,Sage,Sdept)“垂直”地分成两个基本表:SX(Sno,Sname,Sage)SY(Sno,Ssex,Sdept)通过建立一个视图Student:CREATE VIEW Student(Sno,Sname,Ssex,Sage,Sdept)ASSELECT SX.Sno,SX.Sname,SY.Ssex,SX.Sage,SY.SdeptFROM SX,SYWHERE SX.Sno=SY.Sno;使用户的外模式保持不变,从而对原Student表的查询程序不必修改4.视图能够对机密数据提供安全保护对不同用户定义不同视图,使每个用户只能看到他有权看到的数据通过WITH CHECK OPTION对关键数据定义操作时间限制第四章数据库安全性4.1数据库安全性概述一、问题的提出:数据库的一大特点是数据可以共享,但数据共享必然带来数据库的安全性问题数据库系统中的数据共享不能是无条件的共享例:军事秘密、国家机密、新产品实验数据、市场需求分析、市场营销策略、销售计划、客户档案、医疗档案、银行储蓄数据数据库中数据的共享是在DBMS统一的严格的控制之下的共享,即只允许有合法使用权限的用户访问允许他存取的数据·数据库系统的安全保护措施是否有效是数据库系统主要的性能指标之一·什么是数据库的安全性:数据库的安全性是指保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏。

相关文档
最新文档