CREATE VIEW
Use CREATE VIEW to define a view, which simply provides an alias for the
embedded SELECT statement. The results of a view can be incrementally
maintained in memory within a cluster by creating an
index. This allows you to serve queries without the overhead
of materializing the view.
Syntax
Create view
To create a view:
CREATE [TEMP|TEMPORARY] VIEW [IF NOT EXISTS] <view_name>[(<col_ident>, ...)] AS
<select_stmt>;
| Syntax element | Description |
|---|---|
TEMP / TEMPORARY
|
Optional. Mark the view as temporary. Temporary views are:
|
IF NOT EXISTS
|
Optional. If specified, do not generate an error if a view with the same name already exists. If not specified, an error is generated if a view with the same name already exists. |
<view_name>
|
A name for the view. |
(<col_ident>, ...)
|
Optional if the SELECT statement return columns with unique names;
else, is required if the SELECT statement returns multiple columns
with the same identifier. If specified, renames the SELECT statement’s columns to the list of identifiers.
Both must be the same length.
|
<select_stmt>
|
The SELECT statement that defines the view.
|
Create or replace view
To create, or if a view exists with the same name, replace it with the view defined in this statement:
CREATE OR REPLACE VIEW <view_name> [(<col_ident>, ...)] AS <select_stmt>;
| Syntax element | Description |
|---|---|
<view_name>
|
A name for the view. |
(<col_ident>, ...)
|
Optional if the SELECT statement return columns with unique names;
else, is required if the SELECT statement returns multiple columns
with the same identifier. If specified, renames the SELECT statement’s columns to the list of identifiers.
Both must be the same length.
|
<select_stmt>
|
The SELECT statement that defines the view.
|
Details
Temporary views
The TEMP/TEMPORARY keyword creates a temporary view. Temporary views are
automatically dropped at the end of the SQL session and are not visible to other
connections. They are always created in the special mz_temp schema.
Temporary views may depend upon other temporary database objects, but non-temporary views may not depend on temporary objects.
Examples
Creating a view
CREATE VIEW purchase_sum_by_region
AS
SELECT sum(purchase.amount) AS region_sum,
region.id AS region_id
FROM region
INNER JOIN user
ON region.id = user.region_id
INNER JOIN purchase
ON purchase.user_id = user.id
GROUP BY region.id;
Privileges
The privileges required to execute this statement are:
CREATEprivileges on the containing schema.USAGEprivileges on all types used in the view definition.USAGEprivileges on the schemas for the types in the statement.- Ownership of the existing view if replacing an existing
view with the same name (i.e.,
OR REPLACEis specified inCREATE VIEWcommand).
Additional information
- Views can be monotonic; that is, views can be recognized as append-only.