CREATE VIEW

Description

Views are based on the result-set of an SQL query. CREATE VIEW constructs a virtual table that has no physical data therefore other operations like ALTER VIEW and DROP VIEW only change metadata.

Syntax

  1. CREATE [ OR REPLACE ] [ [ GLOBAL ] TEMPORARY ] VIEW [ IF NOT EXISTS ] view_identifier
  2. create_view_clauses AS query

Parameters

  • OR REPLACE

    If a view of same name already exists, it will be replaced.

  • [ GLOBAL ] TEMPORARY

    TEMPORARY views are session-scoped and will be dropped when session ends because it skips persisting the definition in the underlying metastore, if any. GLOBAL TEMPORARY views are tied to a system preserved temporary database global_temp.

  • IF NOT EXISTS

    Creates a view if it does not exist.

  • view_identifier

    Specifies a view name, which may be optionally qualified with a database name.

    Syntax: [ database_name. ] view_name

  • create_view_clauses

    These clauses are optional and order insensitive. It can be of following formats.

    • [ ( column_name [ COMMENT column_comment ], ... ) ] to specify column-level comments.
    • [ COMMENT view_comment ] to specify view-level comments.
    • [ TBLPROPERTIES ( property_name = property_value [ , ... ] ) ] to add metadata key-value pairs.
  • query A SELECT statement that constructs the view from base tables or other views.

Examples

  1. -- Create or replace view for `experienced_employee` with comments.
  2. CREATE OR REPLACE VIEW experienced_employee
  3. (ID COMMENT 'Unique identification number', Name)
  4. COMMENT 'View for experienced employees'
  5. AS SELECT id, name FROM all_employee
  6. WHERE working_years > 5;
  7. -- Create a global temporary view `subscribed_movies` if it does not exist.
  8. CREATE GLOBAL TEMPORARY VIEW IF NOT EXISTS subscribed_movies
  9. AS SELECT mo.member_id, mb.full_name, mo.movie_title
  10. FROM movies AS mo INNER JOIN members AS mb
  11. ON mo.member_id = mb.id;