---
title: "CREATE VIEW - OceanBase 数据库 V4.3.4 | OceanBase 文档中心"
description: CREATE VIEW 描述 该语句用于创建视图。 使用限制及注意事项 如果指定了 OR REPLACE 子句，该语句能够替换已有的视图。 视图在数据库中实际上并不是以表的形式存在，视图是作为在 CREATE VIEW 语句中指定的 SELECT 语句的结果而派生出来的，每次使用时视图就会派生。 如果 FROM 子句…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.4

# CREATE VIEW

更新时间：2025-02-06 17:20:51

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.4/zh-CN/700.reference/500.sql-reference/100.sql-syntax/300.common-tenant-of-oracle-mode/900.sql-statement-of-oracle-mode/100.ddl-of-oracle-mode/2800.create-view-of-oracle-mode.md)  

## 描述

该语句用于创建视图。

## 使用限制及注意事项

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

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

如果 `FROM` 子句中引用了两个或多个表或视图，则称该视图为连接视图（Join View）。一个可更新的连接视图，也称为可修改的连接视图，涉及两个或多个基表或视图，并允许 DML 操作。可更新的视图不受限于 `WITH READ ONLY` 子句。

要实现可更新，视图必须满足多个条件。例如，其中一条通用规则就是对于连接视图的 `INSERT`、`UPDATE` 或 `DELETE` 操作一次只能修改一个基表。

## 权限要求

执行 `CREATE VIEW` 语句，需要当前用户拥有 `CREATE VIEW` 权限。有关 OceanBase 数据库权限的详细介绍，请参见 [Oracle 模式下的权限分类](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001576690)。

## 语法

```sql
CREATE [OR REPLACE] [[NO] FORCE] VIEW view_name [(column_name_list)] AS select_stmt view_with_opt;

select_stmt:
    SELECT column_name, [--string]
        [, column_name, [--string] ...]
    FROM from_list
    [WHERE condition]

column_name_list:
    column_name [, column_name ...]

view_with_opt:  
      WITH READ ONLY
    | WITH CHECK OPTION
    | empty  

```

## 参数解释

| 参数 | 描述 |
| --- | --- |
| OR REPLACE | 表示如果要创建的视图名称已存在，则使用新的定义重新创建视图。 |
| [NO] FORCE | 如果在创建视图时，不考虑该视图是否存在基表或存在引用的对象类型，以及视图所在 Schema 的所有者是否具有权限，请指定 `FORCE`。如果只在基表存在且视图所在 Schema 所有者具有权限时才创建视图，请指定 `NOFORCE`。`NOFORCE` 是默认设置。 |
| view_name | 视图名。 |
| column_name_list | 视图必须具有唯一的列名，不得有重复，就像基表那样。默认情况下，由 `SELECT` 语句检索的列名将用作视图列名。要想为视图列定义明确的名称，可使用可选的 `column_name_list` 子句，ID 之间使用逗号分隔。`column_name_list` 中的名称数目必须等于 `SELECT`语句检索的列数。`SELECT` 语句检索的列可以是对表列的简单引用。也可以是使用函数、常量值、运算符等的表达式。 |
| select_stmt | 是一种 `SELECT` 语句。它给出了视图的定义。该语句可以从基表或其他视图进行选择。更多 `SELECT` 语句信息，参见 [SIMPLE SELECT](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001578696)。 |
| --string | 可选项，用于给视图添加注释。注释存储在视图定义中。   #### 说明    `--string` 可以注释在 `select_stmt` 的任意位置。 |
| view_with_opt | `WITH READ ONLY` 是在创建或替换视图时的一个选项，用于指定该视图只能用于读取数据，而不能用于插入、更新或删除操作。 `WITH CHECK OPTION` 是一种用于创建视图的语法，它用于确保插入或更新的数据满足视图的定义条件。   #### 注意    Oracle 模式下的 `WITH CHECK OPTION` 语法不支持指定为 `LOCAL` 或 `CASCADED`，默认为 `CASCADED`。 |

## 示例

- 选择表 `tbl1` 中的 `col1`、`col2` 列来创建视图 `view1`。

  ```shell
  -- 创建表 tbl1
  obclient> CREATE TABLE tbl1 (col1 INT, col2 VARCHAR(50));
  Query OK, 0 rows affected

  -- 插入数据到 tbl1
  obclient> INSERT INTO tbl1 (col1, col2) VALUES (1, 'a'), (2, 'b'), (3, 'c');
  Query OK, 3 rows affected (0.046 sec)
  Records: 3  Duplicates: 0  Warnings: 0

  obclient> CREATE OR REPLACE FORCE VIEW view1(vcol1, vcol2) AS SELECT col1, col2 FROM tbl1;
  Query OK, 0 rows affected

  ```
 - 基于表 `tbl2` 的 `col1`、`col2` 列来创建视图 `view2`，`view2` 中包含满足 `tbl2.col2 > 1` 的全部数据。

  ```shell
  -- 创建表 tbl2
  obclient> CREATE TABLE tbl2 (a INT, b INT);
  Query OK, 0 rows affected

  -- 插入数据到 tbl2
  obclient> INSERT INTO tbl2 (a, b) VALUES (23, 2), (76, 9), (456, 1);
  Query OK, 3 rows affected (0.046 sec)

  obclient> CREATE VIEW view2 AS SELECT * FROM tbl2 WHERE tbl2.b > 1 WITH CHECK OPTION;
  Query OK, 0 rows affected (0.064 sec)

  ```
 - 基于表 `tbl2` 的 `col1`、`col2` 列来创建视图 `view3`，并同时为视图 `view3` 添加注释。

  ```shell
  obclient [SYS]> CREATE VIEW view3
    AS SELECT col1, --col1 comment1
      col2 --col1 comment2
      FROM tbl2;

  ```
 - 通过 `SHOW CREATE VIEW` 或 `DBMS_METADATA.GET_DDL` 查询视图注释。

     - 通过 `SHOW CREATE VIEW` 查询视图注释。

      ```shell
      obclient [SYS]> SHOW CREATE VIEW view3;

      ```

      返回结果如下：

      ```shell
      +-------+--------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
      | VIEW  | CREATE VIEW                                                                                                  | CHARACTER_SET_CLIENT | COLLATION_CONNECTION |
      +-------+--------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
      | VIEW3 | CREATE VIEW "VIEW3" ("COL1", "COL2")  AS SELECT col1, --col1 comment1
          col2 --col1 comment2
          FROM tbl2 | utf8mb4              | utf8mb4_bin          |
      +-------+--------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
      1 row in set

      ```
     - 通过 `DBMS_METADATA.GET_DDL` 查询视图注释。

      ```shell
      obclient [SYS]> SELECT DBMS_METADATA.GET_DDL('VIEW', 'VIEW3', 'SYS') FROM dual;

      ```

      返回结果如下：

      ```shell
      +--------------------------------------------------------------------------------------------------------------+
      | DBMS_METADATA.GET_DDL('VIEW','VIEW3','SYS')                                                                  |
      +--------------------------------------------------------------------------------------------------------------+
      | CREATE VIEW "VIEW3" ("COL1", "COL2")  AS SELECT col1, --col1 comment1
          col2 --col1 comment2
          FROM tbl2 |
      +--------------------------------------------------------------------------------------------------------------+
      1 row in set

      ```

## 相关文档

- [管理普通视图](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001575985)
 - [CREATE VIEW](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001578236)
 - [SIMPLE SELECT](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001578696)
 - [SHOW](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001578178)
 - [GET_DDL](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001577802)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
