Crée une vue ou met à jour une vue existante à partir d'une instruction de requête.
Limites
Une vue peut référencer d'autres vues, mais ne peut pas se référencer elle-même. Les références circulaires ne sont pas prises en charge.
L'écriture de données dans une vue n'est pas autorisée. Par exemple, les instructions
INSERT INTOetINSERT OVERWRITEne peuvent pas être exécutées sur 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 | Obligatoire | Description |
| or replace | Non | Ce paramètre est requis pour mettre à jour une vue. |
| if not exists | Non | Si vous exécutez l'instruction CREATE VIEW pour créer une vue qui existe déjà sans spécifier IF NOT EXISTS, une exception est renvoyée. Dans ce cas, vous pouvez exécuter l'instruction CREATE OR REPLACE VIEW pour recréer la vue. Les permissions sur la vue restent inchangées après sa recréation. |
| view_name | Oui | Le nom de la vue que vous souhaitez créer ou mettre à jour. |
| col_name | Oui | Les noms des colonnes de la vue que vous souhaitez créer. |
| col_comment | Non | Les commentaires des colonnes de la vue que vous souhaitez créer. |
| view_comment | Non | Le commentaire de la vue que vous souhaitez créer. |
| select_statement | Oui | La clause SELECT qui fournit la source de données de la vue. Vous devez disposer des permissions de lecture sur la table référencée par la vue. Une vue ne peut contenir qu'une seule instruction SELECT valide. |
Après la création ou la mise à jour d'une vue, celle-ci peut devenir inaccessible si la table référencée est modifiée, par exemple si elle est supprimée. Vous devez maintenir les correspondances entre les tables référencées et les vues.
Exemples
-
Exemple 1 : Créez la vue sale_detail_view à partir de 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 à partir de 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;
Instructions associées
ALTER VIEW : Modifie le nom ou le propriétaire d'une vue existante.
DESC VIEW : Consulte les informations relatives à une vue existante.
DROP VIEW : Supprime une vue existante.