クエリ文に基づいてビューを作成、または既存のビューを更新します。
制限
- ビューは他のビューを参照できますが、自身を参照することはできません。循環参照はサポートされていません。
- ビューにデータを書き込むことはできません。たとえば、ビューに対して
INSERT INTOまたはINSERT OVERWRITEを実行することはできません。
構文
create [or replace] view [if not exists] <view_name>
[(<col_name> [comment <col_comment>], ...)]
[comment <view_comment>]
as <select_statement>;パラメーター
| パラメーター | 必須 | 説明 |
| or replace | いいえ | ビューを更新する場合、このパラメーターは必須です。 |
| if not exists | いいえ | IF NOT EXISTS を指定せずに CREATE VIEW 文を実行して既存のビューを作成しようとすると、例外が返されます。この場合、CREATE OR REPLACE VIEW 文を実行してビューを再作成できます。ビューを再作成しても、ビューに対する権限は変更されません。 |
| view_name | はい | 作成または更新するビューの名前。 |
| col_name | いいえ | 作成するビューの列名。 |
| col_comment | いいえ | 作成するビューの列のコメント。 |
| view_comment | いいえ | 作成するビューのコメント。 |
| select_statement | はい | ビューのデータソースとなる SELECT 句です。ビューが参照するテーブルに対する読み取り権限が必要です。ビューには有効な SELECT 文を 1 つのみ含めることができます。 |
説明 ビューの作成または更新後、参照テーブルが変更された場合 (例:テーブルの削除)、ビューにアクセスできなくなることがあります。参照テーブルとビューの間の対応関係を維持する必要があります。
例
- 例 1:
sale_detailテーブルに基づいてsale_detail_viewビューを作成します。create view if not exists sale_detail_view (store_name, customer_id, price, sale_date, region) comment 'テーブル sale_detail のビュー' as select * from sale_detail; - 例 2:
sale_detailテーブルに基づいてsale_detail_viewビューを更新します。create or replace view if not exists sale_detail_view (store_name, customer_id, price) comment 'テーブル sale_detail のビュー' as select store_name, customer_id, price from sale_detail;
関連ステートメント
- ALTER VIEW:既存のビューの名前または所有者を変更します。
- DESC VIEW:既存のビューの情報を表示します。
- DROP VIEW:既存のビューを削除します。