Skip to main content
The CREATE VIEW statement creates a new , which is a stored query represented as a virtual table.
By default, views created in a database cannot reference objects in a different database. To enable cross-database references for views, set the sql.cross_db_views.enabled to true.
The CREATE VIEW statement performs a schema change. For more information about how online schema changes work in CockroachDB, see .

Required privileges

The user must have the CREATE on the parent database and the SELECT privilege on any table(s) referenced by the view.

Synopsis

create_view syntax diagram

Parameters

Example

This example highlights one key benefit to using views: simplifying complex queries. For additional benefits and examples, see .

Setup

The following examples use the . To follow along, run to start a temporary, in-memory cluster with the startrek schema and dataset preloaded:

Create a view

The sample startrek database contains two tables, episodes and quotes. The table also contains a foreign key constraint, between the episodes.id column and the quotes.episode column. To count the number of famous quotes per season, you could run the following join:
Alternatively, to make it much easier to run this complex query, you could create a view:
The view is then represented as a virtual table alongside other tables in the database:
Executing the query is as easy as SELECTing from the view, as you would from a standard table:

Replace an existing view

You can create a new view, or replace an existing view, with CREATE OR REPLACE VIEW:

See also