Vues

Une vue est une table virtuelle, c'est-à-dire dont les données ne sont pas stockées dans une table de la base de données, et dans laquelle il est possible de rassembler des informations provenant de plusieurs tables. On parle de « vue » car il s'agit simplement d'une représentation des données dans le but d'une exploitation visuelle. Les données présentes dans une vue sont définies grâce à une clause SELECT.

Une vue est une définition dynamique dans le sens suivant : si on modifie, ou si on ajoute ou si on supprime des enregistrements, chaque exécution de la vue comprendra ces modifications.

La norme SQL propose un ensemble important de restrictions pour la modification ou l'insertion ou la modification des données dans les vues. Les systèmes de gestion de base de données ont aussi chacun leur implantation de ce concept et chacun leurs contraintes et restrictions. En particulier, peu d'opérations sont autorisées dès qu'une vue porte sur plusieurs tables ; aucune n'est possible si la vue comporte des opérateurs d'agrégation.

En PostgreSQL les vues ne sont que consultables par des instructions SELECT. Aucune autre opération n'est possible. Par contre, c'est la notion propre à PostgreSQL de règles qui assure cette fonctionnalité. Cette notion s'avère plus souple et puissante que les restrictions communément appliquées aux SGBD classiques.

La commande CREATE VIEW permet de créer une vue relative à une ou plusieurs tables de la base. Elle est suivie de AS puis d'une requête qui la définit.

  1. Créer une vue relative au numéro, nom et titre des employés des départements supérieurs à 40 et utiliser la vue pour interroger. Mettre à jour EMP et utiliser la vue pour interroger.

Dans la version actuelle de PostgreSQL une vue ne peut pas servir à mettre à jour une table.

  1. Essayez de mettre à jour la table EMP en utilisant la vue DEPT4.

  2. Créer une vue relative au nom, numéro de service des employés et au nom du service. Utiliser la vue.

  3. Créer une vue relative au nom, salaire et salaire annuel des employés.