什么时候用到视图

视图是个虚拟的表,其存储的是查询语句而不是数据。视图中的数据存储在其引用的数据表中,除非在视图中建立了索引;
视图差不多就是个临时表(视图不是物理表而是虚拟表).
避免了代码的冗余;
避免了大量重复的sql语句
增加数据的保密性(这个视图我可以给a看,不给b看)
从代码上看,视图是一个select语句
从逻辑上看,被当做一个虚拟表看待

比如一个比较复杂的查询不想每次都写很多语句,就可以写个视图。
或者给特定用户开放某些表的读取权限,但要加一些行和列的限制,也可以写个视图。

视图的好处,可以主要分为四点:

第一点:使用视图,可以定制用户数据,聚焦特定的数据。 
解释: 
在实际过程中,公司有不同角色的工作人员,我们以销售公司为例的话, 
采购人员,可以需要一些与其有关的数据,而与他无关的数据,对他没 
有任何意义,我们可以根据这一实际情况,专门为采购人员创建一个视 
图,以后他在查询数据时,只需select * from   view_caigou   就可以了。。 

第二点:使用视图,可以简化数据操作。 解释:我们在使用查询时,在很多时候我们要使用聚合函数,同时还要 显示其它字段的信息,可能还会需要关联到其它表,这时写的语句可能 会很长,如果这个动作频繁发生的话,我们可以创建视图,这以后,我 们只需要select
* from view1就可以啦~,是不是很方便呀~ 第三点:使用视图,基表中的数据就有了一定的安全性 因为视图是虚拟的,物理上是不存在的,只是存储了数据的集合,我们可以 将基表中重要的字段信息,可以不通过视图给用户,视图是动态的数据的集 合,数据是随着基表的更新而更新。同时,用户对视图,不可以随意的更改 和删除,可以保证数据的安全性。 逻辑数据独立性。视图可以使应用程序和数据库表在一定程度上独立。 如果没有视图,应用一定是建立在表上的。 有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。 第四点:可以合并分离的数据,创建分区视图 随着社会的发展,公司的业务量的不断的扩大,一个大公司,下属都设有很 多的分公司,为了管理方便,我们需要统一表的结构,定期查看各公司业务 情况,而分别看各个公司的数据很不方便,没有很好的可比性,如果将这些 数据合并为一个表格里,就方便多啦,这时我们就可以使用union关键字, 将各分公司的数据合并为一个视图。

 

代码创建视图的语法:

create view  视图名字
as
查询代码
示例:
create view  view_user
as
select id from user
go
/*以上为创建一个视图,视图里面存储的是user表的ID列*/

 

删除视图的SQL语法

if exusts(select * from sysobjects where name='视图名字')/*如果数据库中存在这个视图,就删除该视图,查不查询随便你*/
drop view 视图名字  /*执行删除视图语法*/ 
示例:
drop view view_user  /*删除名为view_user的视图*/

查询视图:

select *[这里的*可以是指定的视图里面的列] from 视图名字

注意事项:

1.一个视图可以嵌套另一个视图,但最后不要超过3层
2.视图定义中的select语句不能包括下列内容
*order by排序子句,除非在select语句中带有一个top子句
*into关键字
*引用临时表或表变量

 

posted @ 2017-12-24 20:36  ProZkb  阅读(903)  评论(0编辑  收藏  举报