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.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 theCREATE on the parent database and the SELECT privilege on any table(s) referenced by the view.
Synopsis
Parameters
Example
Setup
The following examples use the . To follow along, run to start a temporary, in-memory cluster with thestartrek schema and dataset preloaded:
Create a view
The samplestartrek 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:
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, withCREATE OR REPLACE VIEW:
Create a view that references routines
Views can call both scalar and set-returning in theirSELECT statements.
The following example builds a view over a table and two UDFs.
Create and populate a table:
f_scalar and f_setof, attempting to rename either function returns an error:
Create a materialized view with historical data using AS OF SYSTEM TIME
You can create a materialized view using historical data with the clause. This is useful for reducing by performing a when populating the view.
Historical data is available only within the .

