关于视图

作者: 悟空DD | 来源:发表于2016-04-19 16:14 被阅读78次

A:在视图上使用insert语句

通过视图插入数据与直接在表中插入数据一样,但视图毕竟不是基本表.因此在进行数据插入时还是有一定的限制

1:如果视图上没有包括基本表中属性为not null[不能为空]的列,那么插入操作会因为那些列是null值而失败.

2:如果某些列因为某些规则或约束的限制而不能直接接受从视图插入的列时,插入会失败

3:如果在视图中包含了使用统计函数的结果,或是包含计算列,则插入操作会失败

4:不能在使用了distinct语句的视图中插入值

5:不能在使用了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 职工号='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:在视图上使用insert语句 通过视图插入数据与直接在表中插入数据一样,但视图毕竟不是基本表.因此在进行数据插...

  • RESideMenu 实现抽屉效果

    关于RESideMenu,可以度娘出来很多信息。 抽屉效果有3个视图,分别是左视图,中心视图(MMDrawerCo...

  • Laravel的视图及AR模式

    一、视图操作 1.关于视图文件 ★测试:定义路由,展示视图文件 2.基本用法视图传参 ★小案例:使用view()方...

  • iOS ~ UITableView的内容范围:contentIn

    关于滚动视图contentSize、contentOffset、contentInset 的整理 关于UITabl...

  • Flat Tomato视图介绍

    Flat Tomato有5个主要视图: 右侧的关于视图(手指在表盘上向左滑):

  • Revit二次开发:关于三维视图(View3D)

    关于Revit三维锁定视图 Revit锁定视图3个选项及对应API:1. 保存方向并锁定视图: 将视图锁定在当前方...

  • 关于开发视图

    什么是开发视图 开发视图是逻辑视图的实现,它又叫实现视图,描述了在开发环境中软件的静态组织结构,主要侧重于软件模块...

  • 5.13 关于锚点是怎么回事

    关于 一个视图围绕另一个视图的设置 1.视图中有两个小 View,我要做的就是上面的红色视图围绕蓝色视图的中心旋转...

  • IOS开发系列之UIScrollView(滚动视图)的常用属性和

    UIScrollView:滚动视图 UIScrollView在IOS的UI开发中有着广泛的应用,可实现很多关于视图...

  • Odooproductview

    product模块中有3个关于产品的表单视图: 产品模板主视图 产品模板表单视图,继承自1,在Odoo中打开一个产...

网友评论

    本文标题:关于视图

    本文链接:https://www.haomeiwen.com/subject/fwxzlttx.html