
# 创建和管理DWS视图
视图允许用户保存常用的或者复杂的查询。视图在磁盘上并没有被物理存储，当用户访问视图时查询会作为一个子查询运行。数据库中仅存放视图的定义，而不存放视图对应的数据，这些数据仍存放在原来的基本表中。若基本表中的数据发生变化，从视图中查询出的数据也随之改变。从这个意义上讲，视图就像一个窗口，透过它可以看到数据库中用户感兴趣的数据及变化。视图每次被引用的时候都会运行一次。
#### 创建视图
使用CREATE VIEW命令创建新视图。
```
CREATE OR REPLACE VIEW MyView AS SELECT * FROM tpcds.customer WHERE c_customer_sk < 150;
```
![](https://support.huaweicloud.com/devg-dws/public_sys-resources/note_3.0-zh-cn.png)
CREATE VIEW中的OR REPLACE可有可无，当存在OR REPLACE时，表示若以前存在该视图就进行替换。
#### 查看视图
- 查看MyView视图，查询结果为当前实时数据。
  ```
  SELECT * FROM myview;
  ```
  
- 查看当前用户下的视图。
  ```
  SELECT * FROM user_views;
  ```
  
- 查看所有视图。
  ```
  SELECT * FROM dba_views;
  ```
  
- 查看某视图的具体信息。
  执行如下命令查询dba_users视图的详细信息。
  ```
  \d+ dba_users
                        View "PG_CATALOG.DBA_USERS"
    Column  |         Type          | Modifiers | Storage  | Description
  ----------+-----------------------+-----------+----------+-------------
   USERNAME | CHARACTER VARYING(64) |           | extended |
  View definition:
   SELECT PG_AUTHID.ROLNAME::CHARACTER VARYING(64) AS USERNAME
     FROM PG_AUTHID;
  ```
  
 
#### 重建视图
使用ALTER VIEW命令在不输入查询语句的情况下重建视图。
```
ALTER VIEW myview REBUILD;
```
#### 删除视图
使用DROP VIEW命令删除一个视图。
```
DROP VIEW myview;
```
DROP VIEW ... CASCADE命令也可以级联删除依赖此视图的对象。 例如，如果A视图依赖于将要被删除的B视图，那么A视图也将被删除。 如果没有CASCADE选项，这个DROP VIEW命令将会失败。
