Une vue est une table virtuelle définie par une requête basée sur une ou plusieurs tables. Vous pouvez utiliser une vue pour enregistrer la logique de requête (instructions SQL) sans créer de table physique qui consomme de l'espace de stockage. Cette rubrique décrit les commandes permettant de gérer les vues et fournit des exemples d'utilisation.
Le tableau suivant décrit les commandes utilisées pour gérer les vues.
Opération | Description | Autorisation requise | Plateforme |
Crée une vue basée sur une requête ou met à jour une vue existante. | L'autorisation | Vous pouvez exécuter ces commandes sur les plateformes suivantes : | |
Modifie le nom d'une vue existante. | L'autorisation | ||
Modifie le propriétaire d'une vue existante. | Le propriétaire du projet. | ||
Répertorie toutes les vues standard d'un projet. | L'autorisation | ||
Affiche l'instruction DDL d'une vue standard. | L'autorisation | ||
Affiche les métadonnées d'une vue existante. | L'autorisation | ||
Supprime une vue existante. | L'autorisation |
Créer ou mettre à jour une vue
Crée une vue basée sur une requête ou met à jour une vue existante.
-
Limites
Une vue peut référencer d'autres vues, mais elle ne peut pas se référencer elle-même ni créer de références circulaires.
Vous ne pouvez pas écrire de données dans une vue. Par exemple, vous ne pouvez pas utiliser
INSERT INTOouINSERT OVERWRITEsur une vue.
-
Syntaxe
CREATE [OR REPLACE] VIEW [IF NOT EXISTS] <view_name> [(<col_name> [comment <col_comment>], ...)] [comment <view_comment>] AS <select_statement>; -
Paramètres
|
**Paramètre**
|
**Requis**
|
**Description**
| | --- | --- | --- | |
OR REPLACE
|
Non
|
Incluez cette clause pour mettre à jour une vue.
| |
IF NOT EXISTS
|
Non
|
Si vous ne spécifiez pas IF NOT EXISTS, une erreur est renvoyée lorsque vous utilisez `CREATE VIEW` sur une vue existante. Dans ce cas, vous pouvez utiliser `CREATE OR REPLACE VIEW` pour recréer la vue. Les autorisations de la vue restent inchangées après la recréation.
| |
view_name
|
Oui
|
Le nom de la vue que vous souhaitez créer ou mettre à jour.
| |
col_name
|
Oui
|
Le nom d'une colonne dans la vue à créer.
| |
col_comment
|
Non
|
Le commentaire pour une colonne dans la vue.
| |
view_comment
|
Non
|
Le commentaire pour la vue.
| |
select_statement
|
Oui
|
La requête SELECT qui définit la vue. Vous devez disposer des autorisations de lecture sur les tables référencées par la vue. Une vue ne peut contenir qu'une seule instruction `SELECT` valide.
|RemarqueUne vue peut devenir inaccessible si une table référencée est modifiée, par exemple si la table est supprimée. Vous devez maintenir les correspondances entre les vues et leurs tables référencées.
-
Exemples
-
Exemple 1 : Créez une vue nommée sale_detail_view basée sur la table sale_detail.
CREATE VIEW IF NOT EXISTS sale_detail_view (store_name, customer_id, price, sale_date, region) comment 'a view for table sale_detail' AS SELECT * FROM sale_detail; -
Exemple 2 : Mettez à jour la vue sale_detail_view basée sur la table sale_detail.
CREATE OR REPLACE VIEW IF NOT EXISTS sale_detail_view (store_name, customer_id, price) comment 'a view for table sale_detail' AS SELECT shop_name, customer_id, total_price FROM sale_detail;
-
Renommer une vue
Modifie le nom d'une vue existante.
-
Syntaxe
ALTER VIEW <view_name> RENAME TO <new_view_name>; -
Paramètres
|
**Paramètre**
|
**Requis**
|
**Description**
| | --- | --- | --- | |
view_name
|
Oui
|
Le nom de la vue que vous souhaitez renommer.
| |
new_view_name
|
Oui
|
Le nouveau nom de la vue. Une erreur se produit si une vue portant le même nom existe déjà.
| -
Exemple
-- Rename the view 'sale_detail_view' to 'market'. ALTER VIEW sale_detail_view RENAME TO market;
Modifier le propriétaire d'une vue
Modifie le propriétaire d'une vue existante.
-
Syntaxe
ALTER VIEW <view_name> CHANGEOWNER TO <new_owner>; -
Paramètres
|
**Paramètre**
|
**Requis**
|
**Description**
| | --- | --- | --- | |
view_name
|
Oui
|
Le nom de la vue.
| |
new_owner
|
Oui
|
Le compte du nouveau propriétaire.
| -
Exemple
-- Change the owner of the view 'sale_detail_view' to 'ALIYUN$xxx@aliyun.com'. ALTER VIEW sale_detail_view CHANGEOWNER TO 'ALIYUN$xxx@aliyun.com';
Lister les vues standard
La commande SHOW VIEWS; nécessite MaxCompute client (odpscmd) version 0.43.0 ou ultérieure.
-
Syntaxe
Exécutez
SHOW VIEWS;pour lister uniquement les vues d'un projet. Vous pouvez également exécuterSHOW TABLES;pour lister toutes les tables et vues d'un projet. Pour plus d'informations, consultez Lister les tables et les vues d'un projet.-- List all standard views in a project. SHOW VIEWS; -- List views in a project whose names match a specified pattern. SHOW VIEWS LIKE '<chart>'; -
Exemple
SHOW VIEWS LIKE 'sale*';Le résultat suivant est renvoyé :
ALIYUN$account_name:sale_detail_view ...... -- The ALIYUN prompt indicates that you are using an Alibaba Cloud account. If you are using a RAM user, the prompt is RAM.
Afficher l'instruction DDL
Affiche l'instruction DDL d'une vue standard.
-
Syntaxe
SHOW CREATE VIEW <view_name>; -
Paramètres
view_name : Requis. Le nom de la vue standard.
-
Exemple
-- View the creation statement for 'sale_detail_view'. SHOW CREATE VIEW sale_detail_view; -- The following result is returned: CREATE VIEW IF NOT EXISTS project.sale_detail_view(store_name,customer_id,price,sale_date,region) COMMENT 'a view for table 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;
Décrire une vue
Affiche les métadonnées d'une vue, telles que sa définition (ViewText), son heure de création et son projet.
-
Syntaxe
DESC <view_name>; -
Paramètres
view_name : Requis. Le nom de la vue.
-
Exemple
DESC sale_detail_view;Le résultat suivant est renvoyé :
+------------------------------------------------------------------------------------+ | 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 | | | +------------------------------------------------------------------------------------+
Supprimer une vue
Supprime une vue existante.
-
Syntaxe
DROP VIEW [IF EXISTS] <view_name>; -
Paramètres
|
**Paramètre**
|
**Requis**
|
**Description**
| | --- | --- | --- | |
IF EXISTS
|
Non
|
Si la vue n'existe pas et que vous ne spécifiez pas IF EXISTS, une erreur se produit.
| |
view_name
|
Oui
|
Le nom de la vue à supprimer.
| -
Exemple
-- Delete the view 'sale_detail_view'. DROP VIEW IF EXISTS sale_detail_view;