视图

视图

  视图是一种虚拟存在的表,是个逻辑表,本身不包含数据,只保存了sql逻辑,不保存查询结果。行和列数据来自自定义视图的查询中使用的表,并且是在使用视图时动态生成的。

  应用:多个地方用到同样的查询结果;该查询结果使用的sql语句比较复杂。
#创建视图
/*
  CREATE VIEW 视图命
  AS
  查询语句
*/
CREATE VIEW v1
AS
SELECT stu_name,majorname
FROM stu_info s
INNER JOIN major m
ON s.major_id = m.id
#使用视图
SELECT * FROM v1
#修改视图
/*
  方式一:
  CREATE OR REPLACE VIEW 视图名
  AS
  查询语句
  
  方式二:
  ALTER VIEW 视图名
  AS
  查询语句
*/

#删除视图
/*
  DROP VIEW 视图名;
*/

#查看视图
/*
  DESC 视图名;
  SHOW CREATE VIEW 视图名;
*/

视图的更新

视图的更新与视图中的查询的定义有关系。以下类型视图不能更新:

  1. 包含关键字:分组函数、distinct、group by、having、union、union all
  2. 常量视图
  3. select中存在子查询
  4. join
  5. from一个并不能更新的视图
  6. where子句的子查询引用了from子句中的表

视图优点

安全:一些数据表存有重要信息。有些字段不能给用户直接看到。可以创建一个视图,只保留给用户查看的字段。

性能:关系数据库的数据经常会采用分表存储,使用外键建立这些表的之间关系。数据库查询通常采用join连接。可以使用视图将相关的表和字段组合在一起,这样可以避免使用join查询数据

灵活:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容