

# CREATE VIEW 和 CREATE PROTECTED MULTI DIALECT VIEW
<a name="create-view"></a>

视图是一个逻辑表，可以被未来查询所引用。视图不包含任何数据，也不写入数据。相反，当您每次通过另一个查询引用该视图时，该视图指定的查询都会运行。
+ `CREATE VIEW` 从指定的 `SELECT` 查询创建 Athena 视图。Athena 视图在 Athena 中起作用。有关 Athena 视图的更多信息，请参阅[使用视图](views.md)。
+ `CREATE PROTECTED MULTI DIALECT VIEW` 在 AWS Glue Data Catalog 中创建 AWS Glue Data Catalog 视图。AWS Glue Data Catalog 视图跨 AWS 服务（例如 Amazon Athena 和 Amazon Redshift）提供单一通用视图。有关 AWS Glue Data Catalog 视图的更多信息，请参阅[在 Athena 中使用 Data Catalog 视图](views-glue.md)。

## CREATE VIEW
<a name="create-view-ate"></a>

创建在 Athena 中使用的视图。

### 摘要
<a name="synopsis"></a>

```
CREATE [ OR REPLACE ] VIEW view_name AS query
```

可选的 `OR REPLACE` 子句允许您通过替换来更新现有视图。有关更多信息，请参阅 [创建视图](views-console.md#creating-views)。

### 示例
<a name="examples"></a>

要根据表 `orders` 创建视图 `test`，请使用类似如下的查询：

```
CREATE VIEW test AS
SELECT 
orderkey, 
orderstatus, 
totalprice / 2 AS half
FROM orders;
```

要根据表 `orders` 创建视图 `orders_by_date`，请使用以下查询：

```
CREATE VIEW orders_by_date AS
SELECT orderdate, sum(totalprice) AS price
FROM orders
GROUP BY orderdate;
```

要更新现有视图，请使用类似于以下内容的示例：

```
CREATE OR REPLACE VIEW test AS
SELECT orderkey, orderstatus, totalprice / 4 AS quarter
FROM orders;
```

 有关使用 Athena 视图的更多信息，请参阅[使用视图](views.md)。

## CREATE PROTECTED MULTI DIALECT VIEW
<a name="create-protected-multi-dialect-view"></a>

在 AWS Glue Data Catalog 中创建 AWS Glue Data Catalog 视图。Data Catalog 视图是一种单一视图架构，可以在 Athena 和其他 SQL 引擎（例如 Amazon Redshift 和 Amazon EMR）之间运行。

### 语法
<a name="create-protected-multi-dialect-view-syntax"></a>

```
CREATE [ OR REPLACE ] PROTECTED MULTI DIALECT VIEW {{view_name}} 
SECURITY DEFINER 
[ SHOW VIEW JSON ]
AS {{query}}
```

**OR REPLACE**  
（可选）通过替换现有视图来更新它。如果 Data Catalog 视图中存在其他引擎的 SQL 方言，则无法替换该视图。如果调用引擎拥有视图中唯一的 SQL 方言，则可以替换视图。

**PROTECTED**  
所需关键字。指定视图受到保护以防数据泄露。Data Catalog 视图只能作为 `PROTECTED` 视图创建。

**MULTI DIALECT**  
指定视图支持不同查询引擎的 SQL 方言，因此可以由这些引擎读取。

**SECURITY DEFINER**  
指定定义程序语义适用于此视图。定义程序语义意味着基础表的有效读取权限属于定义视图的主体或角色，而不是执行实际读取的主体。

**SHOW VIEW JSON**  
（可选）返回 Data Catalog 视图规范的 JSON，而不实际创建视图。当您要验证视图的 SQL 并返回 AWS Glue 将要使用的表元数据时，此“空运行”选项非常有用。

### 示例
<a name="create-protected-multi-dialect-view-syntax-example"></a>

以下示例基于 `orders` 表查询创建 `orders_by_date` Data Catalog 视图。

```
CREATE PROTECTED MULTI DIALECT VIEW orders_by_date 
SECURITY DEFINER 
AS 
SELECT orderdate, sum(totalprice) AS price 
FROM orders 
WHERE order_city = 'SEATTLE' 
GROUP BY orderdate
```

有关使用 AWS Glue Data Catalog 视图的更多信息，请参阅[在 Athena 中使用 Data Catalog 视图](views-glue.md)。