《2022年数据库视图介绍 .pdf》由会员分享,可在线阅读,更多相关《2022年数据库视图介绍 .pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、什么是视图:视图(view) :从一个或几个基本表中根据用户需要而做成一个虚表1:视图是虚表 , 它在存储时只存储视图的定义, 而没有存储对应的数据2:视图只在刚刚打开的一瞬间, 通过定义从基表中搜集数据, 并展现给用户视图与查询的区别:视图和查询都是用由sql 语句组成 , 这是他们相同的地方 , 但是视图和查询有着本质区别:它们的区别在于:1:存储上的区别:视图存储为数据库设计的一部分, 而查询则不是 . 2:更新限制的要求不一样要注意:因为视图来自于表 , 所以通过视图可以间接对表进行更新, 我们也可以通过 update 语句对表进行更新 , 但是对视图和查询更新限制是不同的, 以下我们
2、会知道虽然通过视图可以间接更新表但是有很多限制. 3:排序结果: 通过 sql 语句, 可以对一个表进行排序 , 而视图则不行。 比如:创建一个含有 order by子句的视图 , 看一下可以成功吗?视图的优点:为什么有了表还要引入视图呢?这是因为视图具有以下几个优点:1:能分割数据 , 简化观点。可以通过 select和 where来定义视图 , 从而可以分割数据基表中某些对于用户不关心的数据, 使用户把注意力集中到所关心的数据列. 进一步简化浏览数据工作2:为数据提供一定的逻辑独立性。如果为某一个基表定义一个视图, 即使以后基本表的内容的发生改变了也不会影响“视图定义”所得到的数据3:提供
3、自动的安全保护功能。视图能像基本表一样授予或撤消访问许可权4:视图可以间接对表进行更新, 因此视图的更新就是表的更新视图的创建和管理视图的创建1:通过 sql 语句格式: create view 视图名 as select 语句试一试:分别创建关于一个表或多个表的视图 因为视图可以来自于多表 2:通过企业管理器说明:1:在完成视图的创立之后 , 就可以像使用基本表一样来使用视图2: 在创建视图时 , 并非所有的 select子查询都可用,如: compute和 compute by,order by除非与 top 一起连用 3:但在查询时 , 依然都可以用在创建时禁用的select子查询4:在
4、视图创建时 , 必须为没有标题列指定标题 思考:能否不用 select语句来创建一个视图 视图的删除:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - 1:通过 sql 语句: drop view 视图名2:通过企业管理器说明: 与删除表不同的是 , 删除视图后只是删除了视图了定义, 并没有删除表中的数据 . 查看相关性 修改视图的定义1:通过企业管理器2:通过 sql 语句:格式: alter view 视图名 as 新的 se
5、lect语句浏览视图信息 sp_helptext 视图名 查看视图创建的语句 如何通过视图修改基本表的数据. A:在视图上使用 insert语句通过视图插入数据与直接在表中插入数据一样, 但视图毕竟不是基本表 . 因此在进行数据插入时还是有一定的限制1:如果视图上没有包括基本表中属性为not null不能为空 的列, 那么插入操作会因为那些列是null值而失败 . 2:如果某些列因为某些规则或约束的限制而不能直接接受从视图插入的列时, 插入会失败3:如果在视图中包含了使用统计函数的结果, 或是包含计算列 , 则插入操作会失败4:不能在使用了 distinct语句的视图中插入值5:不能在使用了
6、group by 语句的视图中插入值B:使用 update 更新视图中的数据1: 更新视图与更新表格一样, 但是在视图中使用了多个基本表连接的情况下,每次更新操作只能更新来自基本表的一个数据列例如:创建以下视图:create view del as select 职工号 , 姓名, 部门名称 , 负责人 from work1,部门where work1. 部门编号 =部门. 部门编号如果再执行下面的语句时:update del set 职工号 =001,部门名称 =wenda where 职工号 =01出现错误 只能够改成:update del set 职工号 =001 where 职工号 =
7、01 update del set 部门名称 =wenda where 职工号 =01 2:不能在使用了 distinct语句的视图中更新值3:不能在使用了 group by 语句的视图中更新值名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 4 页 - - - - - - - - - C:使用 delete 删除视图中数据 . 通过视图删除数据最终体现为从基本表中删除数据格式: delete 视图名 where 条件 说明:当视图由两个以上的基表构成时, 不允许删除视图的
8、数据例如:建一个视图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.) 尽管从意义上来说是不合理的, 但是上述语句是正确的 . 为了防止这种情况的
9、发生 , 可以使用 with check option子句来对插入的或更改的数据进行限制. 比如:create view xm as select * from work where 性别= 男 with check option 使用 schemabinding 的视图 使用绑定到构架 我们知道视图是依赖于表 , 如果在一个表中创建一个视图, 今后如果这个表被删除了 , 则这个视图将不可再用了. 为了防止用户删除一个有视图在引用的表,可以在创建视图的时候加上schemabinding 关键字 . 比如:create view 基本工资 with SCHEMABINDING as select
10、 姓名, 性别, 基本工资 from dbo.work 说明:1:不能使用“ *”来创建此类型的视图2:创建此类型的视图时 , 一定要加上 dbo. 表名. 3:如果在某个表中定义了此类视图, 则用户将不能对表的结构进行修改, 否则会删除这些绑定4:如果用户对表的结构进行列改名, 则会删除绑定而且视图不可用. 5: 如果用户对表的结构进行列的类型或者大小修改, 则会删除绑定但视图可用, 此时用户可以删除视图所引用的表. 使用 with encryption对视图进行加密为了保护创建视图定义的原代码, 可以对视图进行加密 . 名师资料总结 - - -精品资料欢迎下载 - - - - - - -
11、- - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - 比如:create view kk with encryption as select * from work where 职称= 经理 用 sp_helptext来查看一下 . 或用企业管理器查看一下. 说明:如果应用此项用户将无法设计视图使用视图加强数据的安全一般通过使用视图共有三种途径加强数据的安全性A:对不同用户授予不同的使用权. B:通过使用 select子句限制用户对某些底层基表的列的访问C:通过使用 where 子句限制用户对某些底层基表的行的访问,对不同用户授予不同的权限名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -