--- layout: docu railroad: statements/createview.js redirect_from: - /docs/sql/statements/create_view title: CREATE VIEW Statement --- The `CREATE VIEW` statement defines a new view in the catalog. ## Examples Create a simple view: ```sql CREATE VIEW v1 AS SELECT * FROM tbl; ``` Create a view or replace it if a view with that name already exists: ```sql CREATE OR REPLACE VIEW v1 AS SELECT 42; ``` Create a view and replace the column names: ```sql CREATE VIEW v1(a) AS SELECT 42; ``` The SQL query behind an existing view can be read using the [`duckdb_views()` function]({% link docs/stable/sql/meta/duckdb_table_functions.md %}#duckdb_views) like this: ```sql SELECT sql FROM duckdb_views() WHERE view_name = 'v1'; ``` ## Syntax <div id="rrdiagram"></div> `CREATE VIEW` defines a view of a query. The view is not physically materialized. Instead, the query is run every time the view is referenced in a query. `CREATE OR REPLACE VIEW` is similar, but if a view of the same name already exists, it is replaced. If a schema name is given then the view is created in the specified schema. Otherwise, it is created in the current schema. Temporary views exist in a special schema, so a schema name cannot be given when creating a temporary view. The name of the view must be distinct from the name of any other view or table in the same schema.