视图

本篇文档向你介绍 MatrixOne 的视图功能。

概述

视图作为一个虚拟表,进行存储查询,在调用时产生结果集。

视图的作用

  • 简化用户操作:视图机制使用户可以将注意力集中在所关心地数据上。如果这些数据不是直接来自基本表,则可以通过定义视图,使数据库看起来结构简单、清晰,并且可以简化用户的数据查询操作。

  • 以多种角度看待同一数据:视图机制能使不同的用户以不同的方式看待同一数据,当许多不同种类的用户共享同一个数据库时,这种灵活性是非常必要的。

  • 对重构数据库提供了一定程度的逻辑独立性:数据的物理独立性是指用户的应用程序不依赖于数据库的物理结构。数据的逻辑独立性是指当数据库重构造时,如增加新的关系或对原有的关系增加新的字段,用户的应用程序不会受影响。层次数据库和网状数据库一般能较好地支持数据的物理独立性,而对于逻辑独立性则不能完全的支持。

开始前准备

你需要确认在开始之前,已经完成了以下任务:

数据准备

新建两张表,方便后续为使用视图做准备:

  1. CREATE TABLE t00(a INTEGER);
  2. INSERT INTO t00 VALUES (1),(2);
  3. CREATE TABLE t01(a INTEGER);
  4. INSERT INTO t01 VALUES (1);

可以查看一下表 t00 的结构:

  1. mysql> select * from t00;
  2. +------+
  3. | a |
  4. +------+
  5. | 1 |
  6. | 2 |
  7. +------+

可以查看一下表 t01 的结构:

  1. > select * from t01;
  2. +------+
  3. | a |
  4. +------+
  5. | 1 |
  6. +------+

创建视图

你可以通过 CREATE VIEW 语句来将某个较为复杂的查询定义为视图,其语法如下:

  1. CREATE VIEW view_name AS query;

创建的视图名称不能与已有的视图或表重名。

示例如下:

  1. CREATE VIEW v0 AS SELECT t00.a, t01.a AS b FROM t00 LEFT JOIN t01 USING(a);
  2. Query OK, 0 rows affected (0.02 sec)

查询视图

视图创建完成后,便可以使用 SELECT 语句像查询一般数据表一样查询视图。

  1. mysql> SELECT * FROM v0;
  2. +------+------+
  3. | a | b |
  4. +------+------+
  5. | 1 | 1 |
  6. | 2 | NULL |
  7. +------+------+

获取视图相关信息

使用 SHOW CREATE TABLE|VIEW view_name 语句:

  1. mysql> SHOW CREATE VIEW v0;
  2. +------+----------------------------------------------------------------------------+
  3. | View | Create View |
  4. +------+----------------------------------------------------------------------------+
  5. | v0 | CREATE VIEW v0 AS SELECT t00.a, t01.a AS b FROM t00 LEFT JOIN t01 USING(a) |
  6. +------+----------------------------------------------------------------------------+
  7. 1 row in set (0.00 sec)

删除视图

通过 DROP VIEW view_name; 语句可以删除已经创建的视图。

  1. mysql> DROP VIEW v0;