全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多

CREATE VIEW

更新时间:2017-06-07 13:26:11

格式

CREATE [OR REPLACE] VIEW viewname
 [(column_list)] AS select_stmt;

创建视图语句,如果指定了OR REPLACE子句,该语句能够替换已有的视图。

select_stmt是一种SELECT语句。它给出了视图的定义。该语句可以从基表或其他视图进行选择。

视图必须具有唯一的列名,不得有重复,就像基表那样。默认情况下,由SELECT语句检索的列名将用作视图列名。要想为视图列定义明确的名称,可使用可选的column_list子句,列出由逗号隔开的ID。column_list中的名称数目必须等于SELECT语句检索的列数。

SELECT语句检索的列可以是对表列的简单引用。也可以是使用函数、常量值、操作符等的表达式。

视图在数据库中实际上并不是以表的形式存在。每次使用时它们就会派生。视图是作为在CREATE VIEW语句中指定的SELECT语句的结果而派生出来的。

OceanBase 1.0只支持不可更新视图。

示例

创建基本表和视图:

Oceanbase>create table test(a int, b int);
createQuery OK, 0 rows affected (1.23 sec)

Oceanbase>create view test_view(va, vb) as select a, a+b from test;
Query OK, 0 rows affected (0.04 sec)

Oceanbase>show create view test_view;
+-----------+------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| View      | Create View                                                                                                                                    | character_set_client | collation_connection |
+-----------+------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| test_view | CREATE VIEW `test_view` AS select `ocp_test`.`test`.`a` AS `va`,(`ocp_test`.`test`.`a` + `ocp_test`.`test`.`b`) AS `vb` from `ocp_test`.`test` | utf8mb4              | utf8mb4_general_ci   |
+-----------+------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
1 row in set (0.01 sec)

向基本表中插入数据,并查看视图数据:

Oceanbase>insert into test values(1,2),(2,3),(3,4);
Query OK, 3 rows affected (0.02 sec)
Records: 3  Duplicates: 0  Warnings: 0

Oceanbase>select * from test_view;
+------+------+
| va   | vb   |
+------+------+
|    1 |    3 |
|    2 |    5 |
|    3 |    7 |
+------+------+
3 rows in set (0.01 sec)

不支持更新视图:

Oceanbase>update test_view set va = 5;
ERROR 4016 (HY000): view table just supports select
本文导读目录