查询语言系列—数据视图

创建视图(VIEW)

CREATE[MATERIALIZED] VIEW[IFNOTEXISTS][db.]name[TO[db.]name][ENGINE=engine][POPULATE] AS SELECT...

创建一个视图. 有两种类型的视图: 正常视图和物化(MATERIALIZED)视图.

当创建一个物化视图时, 你必须指定表引擎 – 此表引擎用于存储数据

一个物化视图工作流程如下: 当插入数据到SELECT 查询指定的表中时, 插入数据部分通过SELECT查询部分来转换, 结果插入到视图中.

正常(NORMAL)视图保存任何数据, 但是可以从任意表中读取数据. 换句话说,正常视图可以看作是查询结果的一个结果缓存. 当从一个视图中读取数据时, 此查询可以看做是 FROM语句的子查询.

例如, 假设你已经创建了一个视图:

CREATE VIEW view AS SELECT...

写一个查询:

SELECT a,b,c FROM view

此查询完全等价于子查询:

SELECT a,b,c FROM(SELECT...)


物化视图保存通过SELECT语句查询转换的数据.

当创建一个物化视图时,你必须指定一个引擎 – 存储数据的目标引擎.

一个物化视图使用流程如下:  当插入数据到 SELECT 指定的表时, 插入数据部分通过SELECT 来转换, 同时结果被插入到视图中.

如果你指定了 POPULATE, 当创建时, 现有的表数据被插入到了视图中, 类似于  CREATE TABLE ... AS SELECT ... . 否则, 在创建视图之后,查询仅包含表中插入的数据. 我们不建议使用 POPULATE, 在视图创建过程中,插入到表中的数据不插入到其中.

一个 SELECT 查询可以包含 DISTINCT, GROUP BY, ORDER BY, LIMIT... 对应的转换在每个数据块上独立执行. 例如, 如果 GROUP BY 被设置, 数据将在插入过程中进行聚合, 但仅是在一个插入数据包中.数据不再进一步聚合. 当使用一个引擎时, 如SummingMergeTree,它将独立执行数据聚合.

视图看起来和正常表相同. 例如, 你可以使用 SHOW TABLES来列出视图表的相关信息.

因此并没有一个单独的SQL语句来删除视图. 为了删除一个视图, 可以使用 DROP TABLE.

版权声明:本文版权归@神州云联科技有限公司所有,未经允许任何单位或个人不得转载,复制或以任何其他方式使用本文全部或部分,侵权必究。

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

推荐阅读更多精彩内容

  • 观其大纲 page 01 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 M...
    周少言阅读 3,173评论 0 33
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,039评论 2 89
  • 什么是SQL数据库: SQL是Structured Query Language(结构化查询语言)的缩写。SQL是...
    西贝巴巴阅读 1,862评论 0 10
  • 今天离开学还有八天 离考试还有八天 早上睡了懒觉 中午吃了爸爸做的虎皮青椒 土豆丝 下午一直很认真的学习证券 认真...
    夏零七阅读 256评论 0 0
  • 江南雨水腴沛,且雨性飘渺随性。如此,仅靠关注预报,便想捕捉雨的踪迹,往往只会自讨无趣。江南的雨,固然时常能逃...
    芳踪阅读 514评论 6 23