2023-07-31 10:00 Temps de lecture : 11 min

Création de VUES SQL : Explication étape par étape

Le SQL, ou Structured Query Language, est notre outil de choix pour interagir avec une base de données relationnelle et pour la création de vues SQL.

Mais que sont précisément les vues SQL ? Imaginez-les comme des tables virtuelles, des constructions qui regroupent et stockent les données provenant des tables réelles que vous avez définies dans votre base de données. Elles offrent ainsi un accès sécurisé et simplifié à vos données, tout en dissimulant les complexités des structures et des implémentations de tables sous-jacentes.

Comment cela fonctionne-t-il ? Vous savez que des requêtes SQL servent à créer des vues SQL. Lors de la création d’une vue, la requête SQL qui la définit est enregistrée. Lorsque vous sollicitez des données à travers plusieurs tables à l’aide d’une requête SQL, celle-ci est exécutée pour extraire les données des tables concernées. De même, lorsque vous interrogez une vue SQL, la requête enregistrée est récupérée puis exécutée.

Pourquoi créer des vues SQL est-il avantageux ?

Les vues SQL, reposant sur des requêtes SQL stockées, renforcent la sécurité de votre base de données. Elles permettent aussi de simplifier les requêtes complexes et d’améliorer leurs performances, parmi d'autres bénéfices. Examinons de plus près comment les vues SQL peuvent dynamiser votre base de données et vos applications :

#1. Renforce la sécurité de la base de données

Les vues SQL, en tant que tables virtuelles, protègent les structures des tables réelles. En observant une vue, il est impossible de déterminer le nombre de tables impliquées ni les colonnes qui les composent. Vous pouvez de plus mettre en place des contrôles d'accès pour que les utilisateurs interrogent uniquement les vues, et non les tables sous-jacentes.

#2. Simplifie les requêtes complexes

Vos requêtes SQL peuvent parfois s'étendre sur plusieurs tables, nécessitant des jointures complexes. Si vous utilisez régulièrement ce type de requêtes, les vues SQL sont vos alliées. Vous pouvez enregistrer ces requêtes complexes dans des vues SQL et interroger la vue au lieu de réécrire à chaque fois la requête entière.

#3. Limite l'impact des changements de schéma

Si la structure de vos tables est modifiée (ajout ou suppression de colonnes), vos vues n'en subissent pas l'impact. Si toutes vos requêtes sont basées sur des vues, vous n'avez pas à vous soucier des changements de schéma. Vos vues SQL continueront de fonctionner, car il s'agit de tables virtuelles.

#4. Améliore les performances des requêtes

Lors de la création d'une vue SQL, le moteur de base de données optimise la requête sous-jacente avant de l'enregistrer. Une requête optimisée s'exécute plus rapidement qu'une exécution directe. L'utilisation de vues SQL pour interroger vos données permet ainsi d’obtenir des résultats plus rapides et de meilleures performances.

Comment créer des vues SQL ?

La commande CREATE VIEW est utilisée pour créer des vues SQL. Une vue contient une instruction SELECT, qui définit la requête enregistrée dans la vue. Voici la syntaxe :

CREATE VIEW nom_de_la_vue AS
SELECT
  colonne_1,
  colonne_2,
  colonne_3...
FROM
  nom_de_la_table_1, nom_de_la_table_2
WHERE
  clause_de_condition

Illustrons cela avec un exemple. Imaginons deux tables : department et employee. La table department contient l'identifiant et le nom du département, tandis que la table employee contient l'identifiant, le nom de l'employé, ainsi que l'identifiant du département auquel il appartient. Ces deux tables serviront de base pour notre vue SQL.

Création des tables de base de données

department_iddepartment_name
1Finance
2Technologie
3Commercial
Table 1 : département

Si vous utilisez MySQL, vous pouvez créer cette table avec la requête suivante :

CREATE TABLE `department` (
  `department_id` int,
  `department_name` varchar(255),
  PRIMARY KEY (`department_id`)
);

Insérez ensuite des données dans la table :

INSERT INTO department VALUES (1, 'Finance');
INSERT INTO department VALUES (2, 'Technologie');
INSERT INTO department VALUES (3, 'Commercial');

employee_idemployee_namedepartment_id
100John3
101Mary1
102Natalya3
103Bruce2
Table 2 : employé

Une fois la table department créée et remplie, créez la table employee avec cette requête MySQL :

CREATE TABLE `employee` (
  `employee_id` INT,
  `employee_name` VARCHAR(255),
  `department_id` INT,
  FOREIGN KEY (`department_id`) REFERENCES department(department_id)
);

Ajoutez les enregistrements des employés à la table. La colonne department_id étant une clé étrangère référençant la table department, vous ne pouvez y insérer que des valeurs présentes dans cette dernière table.

INSERT INTO employee VALUES (100, 'John', 3);
INSERT INTO employee VALUES (101, 'Mary', 1);
INSERT INTO employee VALUES (102, 'Natalya', 3);
INSERT INTO employee VALUES (103, 'Bruce', 1);

Interrogation des tables

Utilisons ces tables dans une requête. Imaginons que vous deviez obtenir l'identifiant, le nom de l'employé et le nom du département pour chaque employé. Vous devrez alors joindre les deux tables en utilisant la colonne department_id. La requête sera donc :

SELECT
  employee_id,
  employee_name,
  department_name
FROM
  employee,
  department
WHERE
  employee.department_id = department.department_id;

Création de la vue SQL

Vous pourriez fréquemment avoir besoin de ces informations. De plus, à mesure que le nombre d'enregistrements augmente, le temps d'exécution de la requête s'allonge. Il est alors judicieux de créer une vue SQL correspondant à cette requête.

Voici la requête pour créer une vue nommée employee_info :

CREATE VIEW employee_info AS
SELECT
  employee_id,
  employee_name,
  department_name
FROM
  employee,
  department
WHERE
  employee.department_id = department.department_id;

Grâce à cette vue, vous pouvez interroger les mêmes données directement. La requête devient :

SELECT
  *
FROM
  employee_info;

Interroger la vue SQL donne le même résultat que l'exécution de la requête initiale, mais elle est désormais plus facile à manipuler. La vue masque la complexité de la requête sans altérer ni le résultat, ni les performances.

Comment remplacer des vues SQL ?

Pour modifier ou remplacer une vue, vous pouvez utiliser la commande CREATE OR REPLACE VIEW. Vous modifiez ainsi l'instruction SELECT qui a servi à créer la vue. Le résultat de la vue est modifié, mais le nom reste inchangé. Cette commande crée une nouvelle vue si elle n'existe pas déjà.

La syntaxe pour remplacer une vue SQL est :

CREATE OR REPLACE VIEW nom_de_la_vue AS
SELECT
  nouvelle_colonne_1,
  nouvelle_colonne_2,
  nouvelle_colonne_3 ...
FROM
  nouvelle_table_1,
  nouvelle_table_2 ...
WHERE
  nouvelle_clause_de_condition

Prenons un exemple. La vue SQL employee_info a été créée à partir des tables department et employee et contient les colonnes employee_id, employee_name et department_name.

Pour des raisons de sécurité, vous souhaitez supprimer la colonne employee_id et renommer les colonnes pour masquer les noms réels des tables de la base de données. Vous pouvez effectuer ces changements avec la requête SQL suivante :

CREATE OR REPLACE VIEW employee_info AS
SELECT
  employee_name as name,
  department_name as department
FROM
  employee,
  department
WHERE
  employee.department_id = department.department_id;

Après le remplacement de la vue, vous obtiendrez des résultats différents avec la même requête. Vous remarquerez qu'une colonne a été supprimée, et que les noms de colonnes sont passés de employee_name et department_name à name et department.

Tirer parti de la puissance des vues SQL

Les vues SQL ne se contentent pas de simplifier vos requêtes et d'accélérer la recherche de données. Elles renforcent aussi la sécurité de votre base de données et la protègent des changements de schéma. Leur création est assez simple : toute requête existante peut être transformée en vue SQL.

Suivez les instructions ci-dessus pour créer des vues SQL et profiter de leurs nombreux avantages. Les vues SQL peuvent rendre vos applications de base de données simples, sécurisées et plus performantes.

Si vous souhaitez gérer votre propre serveur SQL, pensez à SQL Server Management Studio (SSMS).

Auteur
France

Rédacteur tech, guides pratiques et astuces numériques.