MySQL详解之视图

一、视图概述

        作为常用的数据库对象,视图(view)为数据查询提供了一条捷径,视图是一个虚拟表,其内容由查询定义, 即视图中的数据并不像表、索引那样需要占用存储空间,视图中保存的仅仅是一条select语句,其数据源来自于数据库表或者其他视图。它同真实的表一样,视图包含一系列带有名称的列和行数据,但是视图并不在数据库中以存储的数据结构形式存在,行和列数据来自于定义视图的查询所引用的表,并且在引用视图时动态生成,当基本表发生变化时,视图也会发生变化。
        视图是存储在数据库中的查询SQL语句,使用它主要有两种原因:一是安全原因, 视图可以隐藏一些数据,例如,学生表可以用视图只显示学号、姓名、性别、班级信息,而不显示电话和家庭住址等信息;二是可使复杂的查询易于理解和使用。

二、视图的优势

        对于所引用的基础表来说,视图的作用类似于筛选,定义视图的筛选可以来自当前或其他数据库的一个或者多个表或者其他视图。通过视图进行查询没有任何限制,通过他们进行数据修改时的限制也很少,视图的优势主要体现在以下几方面:

  1. 增强数据安全性 :同一个数据库表可以创建不同的视图,为不同的用户分配不同的视图可以实现不同的用户只能查询或修改与之对应的数据,继而增强了数据的安全访问控制。
  2. 提高灵活性,操作变简单 :有灵活性的功能需求之后,需要改动表的结构而导致工作量比较大,这时可以虚拟表的形式达到少修改的效果。例如,因为某种需求要将a表与b表进行合并形成一个新的c表,最后,a表与b表都不会存在,而由于原来程序中编写SQL分别是基于a表与b表查询的,这意味着需要重新编写大量的SQL语句(改成向c表去操作数据),而通过视图就可以做到不修改,只需定义两个视图名字还是原来的表名a和b,而a、b视图完成从c表中取出的内容。使用视图可以简化数据查询操作,对于经常使用但结构复杂的select语句,建议将其封装为一个视图。
  3. 提高数据的逻辑独立性 :如果没有视图,应用程序一定是建立在数据库表上的,有了视图之后,应用程序就可以建立在视图上,从而使应用程序和数据库表结构在一定程度上实现逻辑分离。视图在以下两个方面使应用程序与数据逻辑独立:1>使用视图可以向应用程序屏蔽表结构,此时即便表结构发生变化(例如,表的字段名发生变化),只需要重新定义定义视图或者修改视图的定义,无需修改应用程序即可使用应用程序正常运行。2>使用视图可以向数据库表屏蔽应用程序,此时即便应用程序发生变化,只需要重新定义或者修改视图的定义,无需修改数据库表结构即可使应用程序正常运行。

三、视图的工作机制

        调用视图时才会执行视图中的SQL语句,进行取数据操作。视图的内容没有存储,而是在视图被引用的时候才生成数据

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值