什么时候用到视图
视图是个虚拟的表,其存储的是查询语句而不是数据。视图中的数据存储在其引用的数据表中,除非在视图中建立了索引;
视图差不多就是个临时表(视图不是物理表而是虚拟表).
避免了代码的冗余;
避免了大量重复的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关键字 *引用临时表或表变量
人各有命,上天注定,有人天生为王,有人落草为寇。脚下的路,如果不是你自己的选择,那么旅程的终点在哪,也没人知道。你会走到哪,会遇到谁,都不一定。