ビューとは、1 つまたは複数のテーブルに対するクエリで定義される仮想テーブルです。ビューを使用すると、ストレージ領域を消費する物理テーブルを作成することなく、クエリロジック (SQL 文) を保存できます。本トピックでは、ビューを管理するためのコマンドと、その使用例を説明します。
次の表では、ビューの管理に使用するコマンドについて説明します。
操作 | 説明 | 必要な権限 | プラットフォーム |
クエリに基づいてビューを作成するか、既存のビューを更新します。 | プロジェクトに対する | これらのコマンドは、次のプラットフォームで実行できます。 | |
既存のビューの名前を変更します。 | ビューに対する | ||
既存のビューの所有者を変更します。 | プロジェクトの所有者。 | ||
プロジェクト内のすべての標準ビューを一覧表示します。 | プロジェクトに対する | ||
標準ビューの DDL 文を表示します。 | ビューに対する | ||
既存のビューのメタデータを表示します。 | ビューに対する | ||
既存のビューを削除します。 | ビューに対する |
ビューの作成または更新
クエリに基づいてビューを作成するか、既存のビューを更新します。
制限事項
ビューは他のビューを参照できますが、自身を参照したり、循環参照を作成したりすることはできません。
ビューにデータを書き込むことはできません。 たとえば、ビューに対して
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
いいえ
作成するビュー内の列の名前。 省略した場合、
SELECT文の列名が使用されます。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 shop_name, customer_id, total_price FROM sale_detail;
ビューの名前の変更
既存のビューの名前を変更します。
構文
ALTER VIEW <view_name> RENAME TO <new_view_name>;パラメーター
パラメーター
必須
説明
view_name
はい
名前を変更するビューの名前。
new_view_name
はい
ビューの新しい名前。 同じ名前のビューが既に存在する場合、エラーが発生します。
例
-- ビュー 'sale_detail_view' の名前を 'market' に変更します。 ALTER VIEW sale_detail_view RENAME TO market;
ビューの所有者の変更
既存のビューの所有者を変更します。
構文
ALTER VIEW <view_name> CHANGEOWNER TO <new_owner>;パラメーター
パラメーター
必須
説明
view_name
はい
ビューの名前。
new_owner
はい
新しい所有者のアカウント。
例
-- ビュー 'sale_detail_view' の所有者を 'ALIYUN$xxx@aliyun.com' に変更します。 ALTER VIEW sale_detail_view CHANGEOWNER TO 'ALIYUN$xxx@aliyun.com';
標準ビューの一覧表示
SHOW VIEWS; コマンドを使用するには、MaxCompute クライアント (odpscmd) 0.43.0 以降が必要です。
構文
SHOW VIEWS;を実行すると、プロジェクト内のビューのみを一覧表示できます。SHOW TABLES;を実行すると、プロジェクト内のすべてのテーブルとビューを一覧表示することもできます。 詳細については、「プロジェクト内のテーブルとビューの一覧表示」をご参照ください。-- プロジェクト内のすべての標準ビューを一覧表示します。 SHOW VIEWS; -- プロジェクト内で指定されたパターンに名前が一致するビューを一覧表示します。 SHOW VIEWS LIKE '<pattern>';例
SHOW VIEWS LIKE 'sale*';次の結果が返されます。
ALIYUN$account_name:sale_detail_view ...... -- プロンプトの ALIYUN は、Alibaba Cloud アカウントを使用していることを示します。 RAM ユーザーを使用している場合、プロンプトは RAM になります。
標準ビューの DDL 文の表示
標準ビューの DDL 文を表示します。
構文
SHOW CREATE VIEW <view_name>;パラメーター
view_name:必須。 標準ビューの名前。
例
-- 'sale_detail_view' の作成文を表示します。 SHOW CREATE VIEW sale_detail_view; -- 次の結果が返されます。 CREATE VIEW IF NOT EXISTS project.sale_detail_view(store_name,customer_id,price,sale_date,region) COMMENT 'sale_detail テーブルのビュー' AS SELECT sale_detail.shop_name, sale_detail.customer_id, sale_detail.total_price, sale_detail.sale_date, sale_detail.region FROM project.sale_detail sale_detail;
ビューの記述
ビューのメタデータ (ViewText)、作成時刻、プロジェクトなどを表示します。
構文
DESC <view_name>;パラメーター
view_name:必須。 ビューの名前。
例
DESC sale_detail_view;次の結果が返されます。
+------------------------------------------------------------------------------------+ | Owner: ALIYUN$san****@aliyunid.com | | Project: aning**** | | Schema: default | | TableComment: | +------------------------------------------------------------------------------------+ | CreateTime: 2023-10-26 13:22:48 | | LastDDLTime: 2023-10-26 13:22:48 | | LastModifiedTime: 2023-10-26 13:22:48 | +------------------------------------------------------------------------------------+ | VirtualView : YES | | ViewText: SELECT shop_name, customer_id, total_price FROM sale_detail | +------------------------------------------------------------------------------------+ | Native Columns: | +------------------------------------------------------------------------------------+ | Field | Type | Label | Comment | +------------------------------------------------------------------------------------+ | store_name | string | | | | customer_id | string | | | | price | double | | | +------------------------------------------------------------------------------------+
ビューの削除
既存のビューを削除します。
構文
DROP VIEW [IF EXISTS] <view_name>;パラメーター
パラメーター
必須
説明
IF EXISTS
いいえ
ビューが存在せず、 IF EXISTS を指定しなかった場合、エラーが発生します。
view_name
はい
削除するビューの名前。
例
-- ビュー 'sale_detail_view' を削除します。 DROP VIEW IF EXISTS sale_detail_view;