视图是基于 SQL 语句的结果集的可视化的表,视图是一个虚拟表,是从数据库中一个或多个表中导出来的表。视图包含一系列带有名称的列和行数据,数据库中只存放了视图的定义,而并没有存放视图中的数据。这些数据存放在原来的表中,使用视图查询数据时,数据库系统会从原来的表中取出对应的数据,一旦表中的数据发生改变,显示在视图中的数据也会发生改变。
特点: 视图的列可以来自不同的表,是表的抽象和在逻辑上建立的新关系。视图是由基本表(实表)产生的表(虚表)。视图的建立和删除不影响基本表。对视图内容的更新(添加,删除和修改)直接影响基本表。当视图来自多个基本表时,不允许添加和删除数据。
优点: 为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。视图使开发者只关心感兴趣的某些特定数据和所负责的特定任务,只能看到视图中所定义的数据,而不是视图所引用表中的数据,从而提高了数据库中数据的安全性。
用途: 简化sql查询,提高开发效率。如果说还有另外一个用途那就是兼容老的表结构。
缺点:
1 性能–>数据库必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,数据库也把它变成一个复杂的结合体,需要花费一定的时间。
2 修改限制–>当用户试图修改视图的某些行时,数据库必须把它转化为对基本表的某些行的修改。事实上,当从视图中插入或者删除时,情况也是这样。对于简单视图来说,这是很方便的,但是,对于比较复杂的视图,可能是不可修改的。