初めてのデート

导航

视图

  虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。下面是视图常用的一些应用:

  1.重用SQL语句。

  2.简化复杂的SQL操作。在编写查询后,可以方便的重用它而不必知道它的基本查询细节。

  3.使用表的组成部分而不是全部。

  4.保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。

  5.更改数据格式和表示。视图可以返回与底层表的表示和格式不同的数据。

  视图创建之后,可以用与表的基本相同的方式利用它们,可以对视图执行SELECT操作、过滤和排序操作,将视图联结到其他视图或者表,甚至可以添加或者更新数据(这个存在限制)。

  性能问题:因为视图不包含数据,所以每次使用视图时,都必须处理查询执行时所必需的的任何一个检索。如果你用多个联结和过滤创建了复杂的视图或者嵌套了视图,可能会发现性能下降的很厉害。因此,如果部署使用了大量视图的应用前,应该进行测试。

  视图的规则和限制:

  1.与表一样,必须给视图名唯一命名。

  2.对于刻意创建的视图数目没有限制

  3.为了可以创建视图,必须具有足够的访问权限,这些一般都是数据库管理人员授予的。

  4.视图可以嵌套,即可以利用从其他视图中检索的数据的查询来构造一个视图。

  5.ORDER BY可以用在视图中,但如果从该视图检索数据的SELECT语句中也包含ORDER BY,那么该视图中的ORDER BY将覆盖。

  6.视图不能索引,也不能有关联的触发器和默认值。

  7.视图可以和表一起使用。

  视图的使用:

  1.使用:CREATE VIEW语句来创建。

  2.使用SHOW CREATE VIEW viewname,来查看创建视图的语句。

  3.用DROP删除视图,其语法为DROP VIEW viewname.

  4.更新视图时,可以先用DROP再用CREATE,也可以直接用CREATE ORREPLACE VIEW。如果要更新的视图不在,则第2条更新语句会创建一个视图;如果要更新的视图存在,则第2条更新语句会替换原有视图。

  更新视图:

  通常视图是可以更新的(即,可以对它们使用INSERT、UPDATE和DELETE)。更新一个视图将更新其基表(视图本身没有数据)。如果对视图增加或者删除行,实际上是对基表增加或者删除行。

  但是,并非所有的视图都是可以更新的。基本上可以说,如果MySQL不能正确的确定被更新的基数据,则不允许更新(包括插入和删除)。这实际意味着,如果视图定义中存在以下操作,则不能对视图进行更新:

  1.分组(使用GROUP BY和HAVING)

  2.联结;

  3.子查询;

  4.并;

  5.聚集函数(Min()、Count()、Sum()等);

  6.DISTINCT();

  7.导出(计算)列;

  这些听上去好像是一个严重的限制,但实际不是,因为视图主要是用来数据检索。

posted on 2018-12-19 17:57  saman_--  阅读(136)  评论(0编辑  收藏  举报