ビューは、テーブル層の既存のテーブルから作成される仮想テーブルです。ストレージ容量を消費する追加のテーブルを必要とせずに、クエリロジック (SQL 文) を維持できます。このトピックでは、ビューを管理するための文と、その使用例について説明します。
操作
種類 | ロール | 操作プラットフォーム |
プロジェクトで CreateTable 権限を持つユーザー | このトピックで説明されているコマンドは、次のプラットフォームで実行できます。 | |
テーブルに対する Alter 権限を持つユーザー | ||
テーブルに対する Alter 権限を持つユーザー | ||
プロジェクト内のオブジェクトに対する List 権限を持つユーザー | ||
テーブルメタデータを読み取るための Describe 権限を持つユーザー | ||
テーブルに対する Drop 権限を持つユーザー |
ビューの作成または更新
この操作では、クエリ文を使用して新しいビューを作成するか、既存のビューを更新します。
制限
ビューは他のビューを参照できますが、循環参照や自己参照を作成しないでください。
ビューにデータを書き込むことはできません。
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 'a view for table sale_detail' /* 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 'a view for table sale_detail' /* 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) V0.43.0 以降が必要です。
構文
プロジェクト内のビューのみを一覧表示するには、
SHOW VIEWS;
を使用します。または、SHOW TABLES;
は、プロジェクト内のすべてのテーブルとビューを一覧表示します。詳細については、「プロジェクト内のテーブルとビューを一覧表示する」をご参照ください。--プロジェクト内のすべての標準ビューを一覧表示します。 SHOW VIEWS; -- chart パターンに一致する名前のビューをプロジェクトに一覧表示します。 SHOW VIEWS LIKE '<chart>';
例
SHOW VIEWS LIKE 'sale*';
返された結果:
ALIYUN$account_name:sale_detail_view ...... --ALIYUN はシステムプロンプトで、テーブルが Alibaba Cloud アカウントを使用して作成されたことを示します。RAM ユーザーの場合は、システムプロンプトは RAM です。
ビューのクエリ
定義情報、作成時刻、ビューが属するプロジェクト、およびその他のメタデータ情報を表示します。
構文
DESC <view_name>;
パラメータ
view_name:必須。クエリを実行するビューの名前。
例
DESC sale_detail_view;
返された結果:
+------------------------------------------------------------------------------------+ | Owner: ALIYUN$san****@aliyunid.com | | Project: aning**** | | Schema: default | | TableComment: | +------------------------------------------------------------------------------------+ | CreateTime: 2025-03-19 13:22:48 | | LastDDLTime: 2025-03-19 13:22:48 | | LastModifiedTime: 2025-03-19 13:22:48 | +------------------------------------------------------------------------------------+ | VirtualView : YES | | ViewText: SELECT shop_name, customer_id, total_price FROM sale_detail | +------------------------------------------------------------------------------------+ | Native Columns: | +------------------------------------------------------------------------------------+ | Field | Type | Label | Comment | +------------------------------------------------------------------------------------+ | shop_name | string | | | | customer_id | string | | | | total_price | double | | | +------------------------------------------------------------------------------------+
ビューの削除
このコマンドは、既存のビューをデータベースから削除します。
構文
DROP VIEW [IF EXISTS] <view_name>;
パラメータ
パラメータ
必須
説明
IF EXISTS
いいえ
ビューが存在せず、IF EXISTS が指定されていない場合は、エラーが返されます。
view_name
はい
削除するビューの名前。
例
-- sale_detail_view ビューを削除します。 DROP VIEW IF EXISTS sale_detail_view;