如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
2:视图和查询的区别3:视图的优点4:如何创建和管理视图5:如何通过视图修改基本表的数据6:如何通过视图实现数据的安全性A:什么是视图:视图view:从一个或几个基本表中根据用户需要而做成一个虚表1:视图是虚表它在存储时只存储视图的定义而没有存储对应的数据2:视图只在刚刚打开的一瞬间通过定义从基表中搜集数据并展现给用户B:视图与查询的区别:视图和查询都是用由sql语句组成这是他们相同的地方但是视图和查询有着本质区别:它们的区别在于:1:存储上的区别:视图存储为数据库设计的一部分而查询则不是.2:更新限制的要求不一样要注意:因为视图来自于表所以通过视图可以间接对表进行更新我们也可以通过update语句对表进行更新但是对视图和查询更新限制是不同的以下我们会知道虽然通过视图可以间接更新表但是有很多限制.3:排序结果:通过sql语句可以对一个表进行排序而视图则不行.比如:创建一个含有orderby子句的视图看一下可以成功吗C:视图的优点:为什么有了表还要引入视图呢?这是因为视图具有以下几个优点:1:能分割数据简化观点可以通过select和where来定义视图从而可以分割数据基表中某些对于用户不关心的数据使用户把注意力集中到所关心的数据列.进一步简化浏览数据工作.2:为数据提供一定的逻辑独立性如果为某一个基表定义一个视图即使以后基本表的内容的发生改变了也不会影响“视图定义”所得到的数据3:提供自动的安全保护功能视图能像基本表一样授予或撤消访问许可权.4:视图可以间接对表进行更新因此视图的更新就是表的更新D:视图的创建和管理视图的创建1:通过sql语句格式:createview视图名asselect语句试一试:分别创建关于一个表或多个表的视图因为视图可以来自于多表2:通过企业管理器说明:1:在完成视图的创立之后就可以像使用基本表一样来使用视图2:在创建视图时并非所有的select子查询都可用如:compute和computebyorderby除非与top一起连用3:但在查询时依然都可以用在创建时禁用的select子查询4:在视图创建时必须为没有标题列指定标题思考:能否不用select语句来创建一个视图视图的删除:1:通过sql语句:dropview视图名2:通过企业管理器说明:与删除表不同的是删除视图后只是删除了视图了定义并没有删除表中的数据.查看相关性修改视图的定义1:通过企业管理器2:通过sql语句:格式:alterview视图名as新的select语句浏览视图信息sp_helptext视图名查看视图创建的语句E:如何通过视图修改基本表的数据.1:在视图上使用insert语句通过视图插入数据与直接在表中插入数据一样但视图毕竟不是基本表.因此在进行数据插入时还是有一定的限制1:如果视图上没有包括基本表中属性为notnull不能为空的列那么插入操作会因为那些列是null值而失败.2:如果某些列因为某些规则或约束的限制而不能直接接受从视图插入的列时插入会失败3:如果在视图中包含了使用统计函数的结果或是包含计算列则插入操作会失败4:不能在使用了distinct语句的视图中插入值5:不能在使用了groupby语句的视图中插入值2:使用update更新视图中的数据1:更新视图与更新表格一样但是在视图中使用了多个基本表连接的情况下每次更新操作只能更新来自基本表的一个数据列例如:创建以下视图:createviewdelasselect职工号姓名部门名称负责人fromwork1部门wherework1.部门编号部门.部门编号如果再执行下面的语句时:updatedelset职工号001部门名称wendawhere职工号01出现错误只能够改成:updatedelset职工号001where职工号01updatedelset部门名称wendawhere职工号012:不能在使用了distinct语句的视图中更新值3:不能在使用了groupby语句的视图中更新值3:使用delete删除视图中数据.通过视图删除数据最终体现为从基本表中删除数据格式:delete视图名where条件说明:当视图由两个以上的基表构成时不允许删除视图的数据例如:建一个视图kkcreateviewkkasselect职工号姓名性别部门名称fromwork1部门wherework1.部门编号部门.部门编号试着去删除使用withcheckoption的视图如果不了解视图定义内容则常常会发生向视图中输入不符合视图定义的数据的情况.比如:createviewxmasselectfromworkwhere性别男完全可以插入insertxmvalues001女232400....尽管从意义上来说是不合理的但是上述语句是正确的.为了防止这种情况的发生可以使用withcheckoption子句来对插入的或