【mysql】—— 视图

目录

(一)视图理解

1、基本使用

1.1创建视图  

1.2 修改视图 

1.3 删除视图

2、视图规则和限制

(二)小结


(一)视图理解

在 MySQL 中,视图(View)是虚拟的表其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。

  • 上述我们了解了视图的基本概念,接下来我们就需要动手实践一番。 

1、基本使用

1.1创建视图  

create view 视图名 as select语句;
  • 当前我们需要在表中筛选得到以下信息(该测试表为 oracle 9i ):

【mysql】—— 视图_第1张图片

但是,当我们下次在想查看到当前数据时又需要进行复杂的操作,那么有没有一种方法可以解决这样的问题,避免繁琐的操作呢? ——此时就可以通过创建 视图 的方式来合理避免。

【mysql】—— 视图_第2张图片

  •  同时,我们也可以新起一个窗口可以发现创建之后多出了一个文件:

【mysql】—— 视图_第3张图片

  • 我们去验证查看当前【myviem】中的数据是不是之前的数据: 

【mysql】—— 视图_第4张图片

 


1.2 修改视图 

在 MySQL 中,修改视图可能会对依赖该视图的查询或应用产生影响,具体的影响取决于所做的修改。

修改了视图,对基表数据有影响 :

【mysql】—— 视图_第5张图片

  • 此时,我们再去原表查询看是否原数据被修改:

 

【mysql】—— 视图_第6张图片


修改了基表,对视图有影响: 

【mysql】—— 视图_第7张图片

  • 此时,我们再去视图查询看是否数据被修改:

在进行任何修改之前,建议进行充分的测试,并确保修改不会破坏现有的查询逻辑。可以使用事务来包装修改操作,以便在出现问题时可以回滚到修改前的状态。 


1.3 删除视图

drop view 视图名;

【mysql】—— 视图_第8张图片

 


2、视图规则和限制

  1. 与表一样,必须唯一命名(不能出现同名视图或表名)
  2. 创建视图数目无限制,但要考虑复杂查询创建为视图之后的性能影响
  3. 视图不能添加索引,也不能有关联的触发器或者默认值
  4. 视图可以提高安全性,必须具有足够的访问权限
  5. order by 可以用在视图中,但是如果从该视图检索数据 select 中也含有 order by ,那么该视图 中的 order by 将被覆盖
  6. 视图可以和表一起使用

 


(二)小结

  1. 要注意的是,在处理大量数据或复杂查询时,使用视图可能会影响性能,因为每次查询视图时都要重新执行其基础的查询;
  2. 在创建和使用视图时,需要考虑其对性能的影响,因此在许多大公司是不允许用视图的,大家只需知道即可。

你可能感兴趣的:(mysql,mysql,数据库)