SQL - Utilisation des vues

Une vue n'est rien de plus qu'une instruction SQL qui est stockée dans la base de données avec un nom associé. Une vue est en fait une composition d'une table sous la forme d'une requête SQL prédéfinie.

Une vue peut contenir toutes les lignes d'une table ou sélectionner des lignes d'une table. Une vue peut être créée à partir d'une ou de plusieurs tables qui dépendent de la requête SQL écrite pour créer une vue.

Les vues, qui sont un type de tables virtuelles, permettent aux utilisateurs d'effectuer les opérations suivantes:

  • Structurez les données d'une manière que les utilisateurs ou les classes d'utilisateurs trouvent naturelle ou intuitive.

  • Restreignez l'accès aux données de manière à ce qu'un utilisateur puisse voir et (parfois) modifier exactement ce dont il a besoin et pas plus.

  • Résumez les données de diverses tables qui peuvent être utilisées pour générer des rapports.

Créer des vues

Les vues de base de données sont créées à l'aide du CREATE VIEWdéclaration. Les vues peuvent être créées à partir d'une seule table, de plusieurs tables ou d'une autre vue.

Pour créer une vue, un utilisateur doit disposer du privilège système approprié en fonction de l'implémentation spécifique.

Les bases CREATE VIEW la syntaxe est la suivante -

CREATE VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE [condition];

Vous pouvez inclure plusieurs tables dans votre instruction SELECT de la même manière que vous les utilisez dans une requête SQL SELECT normale.

Exemple

Considérez la table CUSTOMERS ayant les enregistrements suivants -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Voici un exemple pour créer une vue à partir de la table CUSTOMERS. Cette vue serait utilisée pour avoir le nom et l'âge du client de la table CUSTOMERS.

SQL > CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM  CUSTOMERS;

Vous pouvez maintenant interroger CUSTOMERS_VIEW de la même manière que vous interrogez une table réelle. Voici un exemple pour le même.

SQL > SELECT * FROM CUSTOMERS_VIEW;

Cela produirait le résultat suivant.

+----------+-----+
| name     | age |
+----------+-----+
| Ramesh   |  32 |
| Khilan   |  25 |
| kaushik  |  23 |
| Chaitali |  25 |
| Hardik   |  27 |
| Komal    |  22 |
| Muffy    |  24 |
+----------+-----+

L'OPTION AVEC CHECK

L'OPTION WITH CHECK est une option d'instruction CREATE VIEW. L'objectif de l'option WITH CHECK OPTION est de garantir que toutes les mises à jour et les insertions satisfont aux conditions de la définition de vue.

S'ils ne satisfont pas aux conditions, UPDATE ou INSERT renvoie une erreur.

Le bloc de code suivant présente un exemple de création de la même vue CUSTOMERS_VIEW avec l'option WITH CHECK OPTION.

CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM  CUSTOMERS
WHERE age IS NOT NULL
WITH CHECK OPTION;

L'OPTION WITH CHECK dans ce cas doit refuser l'entrée de toute valeur NULL dans la colonne AGE de la vue, car la vue est définie par des données qui n'ont pas de valeur NULL dans la colonne AGE.

Mettre à jour une vue

Une vue peut être mise à jour sous certaines conditions qui sont données ci-dessous -

  • La clause SELECT ne peut pas contenir le mot clé DISTINCT.

  • La clause SELECT ne peut pas contenir de fonctions récapitulatives.

  • La clause SELECT ne peut pas contenir de fonctions d'ensemble.

  • La clause SELECT ne peut pas contenir d'opérateurs d'ensemble.

  • La clause SELECT ne peut pas contenir de clause ORDER BY.

  • La clause FROM ne peut pas contenir plusieurs tables.

  • La clause WHERE ne peut pas contenir de sous-requêtes.

  • La requête ne peut pas contenir GROUP BY ou HAVING.

  • Les colonnes calculées peuvent ne pas être mises à jour.

  • Toutes les colonnes NOT NULL de la table de base doivent être incluses dans la vue pour que la requête INSERT fonctionne.

Ainsi, si une vue satisfait toutes les règles mentionnées ci-dessus, vous pouvez la mettre à jour. Le bloc de code suivant a un exemple pour mettre à jour l'âge de Ramesh.

SQL > UPDATE CUSTOMERS_VIEW
   SET AGE = 35
   WHERE name = 'Ramesh';

Cela mettrait finalement à jour la table de base CLIENTS et la même chose se refléterait dans la vue elle-même. Maintenant, essayez d'interroger la table de base et l'instruction SELECT produirait le résultat suivant.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  35 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Insertion de lignes dans une vue

Des lignes de données peuvent être insérées dans une vue. Les mêmes règles qui s'appliquent à la commande UPDATE s'appliquent également à la commande INSERT.

Ici, nous ne pouvons pas insérer de lignes dans CUSTOMERS_VIEW car nous n'avons pas inclus toutes les colonnes NOT NULL dans cette vue, sinon vous pouvez insérer des lignes dans une vue de la même manière que vous les insérez dans un tableau.

Suppression de lignes dans une vue

Des lignes de données peuvent être supprimées d'une vue. Les mêmes règles qui s'appliquent aux commandes UPDATE et INSERT s'appliquent à la commande DELETE.

Voici un exemple pour supprimer un enregistrement ayant AGE = 22.

SQL > DELETE FROM CUSTOMERS_VIEW
   WHERE age = 22;

Cela supprimerait finalement une ligne de la table de base CUSTOMERS et la même chose se refléterait dans la vue elle-même. Maintenant, essayez d'interroger la table de base et l'instruction SELECT produirait le résultat suivant.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  35 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Suppression de vues

De toute évidence, là où vous avez une vue, vous avez besoin d'un moyen de supprimer la vue si elle n'est plus nécessaire. La syntaxe est très simple et est donnée ci-dessous -

DROP VIEW view_name;

Voici un exemple pour supprimer CUSTOMERS_VIEW de la table CUSTOMERS.

DROP VIEW CUSTOMERS_VIEW;