---
name: "create_view"
section: "7l"
platform: "linux"
package: "postgresql-client"
version: "7.2.1-2woody8"
release: "Debian 3.0 (Woody)"
platforms: ["linux"]
url: "https://new.carta.tech/create_view/7l"
---

# create\_view(7l)

define a new view

## NAME

CREATE VIEW - define a new view

## SYNOPSIS

```
CREATE VIEW view [ ( column name list ) ] AS SELECT query

```

### INPUTS

- *view*

  The name of a view to be created.

- *column name list*

  An optional list of names to be used for columns of the view. If given, these names override the column names that would be deduced from the SQL query.

- *query*

  An SQL query which will provide the columns and rows of the view.

  Refer to the SELECT statement for more information about valid arguments.

### OUTPUTS

- **CREATE**

  The message returned if the view is successfully created.

- **ERROR: Relation '***view***' already exists**

  This error occurs if the view specified already exists in the database.

- **NOTICE: Attribute '***column***' has an unknown type**

  The view will be created having a column with an unknown type if you do not specify it. For example, the following command gives a warning:

  ```
  CREATE VIEW vista AS SELECT 'Hello World'

  ```

  whereas this command does not:

  ```
  CREATE VIEW vista AS SELECT text 'Hello World'

  ```

## DESCRIPTION

**CREATE VIEW** will define a view of a table. The view is not physically materialized. Instead, a query rewrite retrieve rule is automatically generated to support retrieve operations on views.

### NOTES

Currently, views are read only: the system will not allow an insert, update, or delete on a view. You can get the effect of an updatable view by creating rules that rewrite inserts, etc. on the view into appropriate actions on other tables. For more information see **create\_rule**(l).

Use the **DROP VIEW** statement to drop views.

## USAGE

Create a view consisting of all Comedy films:

```
CREATE VIEW kinds AS
    SELECT *
    FROM films
    WHERE kind = 'Comedy';
SELECT * FROM kinds;
 code  |           title           | did | date_prod  |  kind  | len
-------+---------------------------+-----+------------+--------+-------
 UA502 | Bananas                   | 105 | 1971-07-13 | Comedy | 01:22
 C_701 | There's a Girl in my Soup | 107 | 1970-06-11 | Comedy | 01:36
(2 rows)

```

## COMPATIBILITY

### SQL92

SQL92 specifies some additional capabilities for the **CREATE VIEW** statement:

```
CREATE VIEW view [ column [, ...] ]
    AS SELECT expression [ AS colname ] [, ...]
    FROM table [ WHERE condition ]
    [ WITH [ CASCADE | LOCAL ] CHECK OPTION ]

```

The optional clauses for the full SQL92 command are:

- **CHECK OPTION**

  This option is to do with updatable views. All INSERTs and UPDATEs on the view will be checked to ensure data satisfy the view-defining condition. If they do not, the update will be rejected.

- **LOCAL**

  Check for integrity on this view.

- **CASCADE**

  Check for integrity on this view and on any dependent view. CASCADE is assumed if neither CASCADE nor LOCAL is specified.
