Nous utilisons le langage SQL (Structured Query Language) pour communiquer avec une base de données relationnelle et créer des vues SQL.

Qu’est-ce qu’une vue SQL ? Il s’agit de tables virtuelles qui combinent et stockent des données provenant de tables de base de données réelles que vous créez. Vous bénéficiez ainsi d’un accès sécurisé et simplifié à votre ensemble de données, tout en masquant les structures et les implémentations des tables sous-jacentes.

Comment cela fonctionne-t-il ? Vous savez déjà que les requêtes SQL sont utilisées pour créer des vues SQL. Lorsque la vue SQL est créée, la requête SQL sous-jacente est stockée. Lorsque vous utilisez une requête SQL pour rechercher des données dans plusieurs tables, la requête est exécutée et permet de récupérer des données dans les tables correspondantes de la base de données. De même, lorsque vous interrogez une vue SQL créée, la requête stockée est d’abord récupérée, puis exécutée.

En quoi la création de vues SQL est-elle utile ?

SQL

Les vues SQL étant soutenues par des requêtes SQL stockées, elles contribuent à sécuriser votre base de données. Elles simplifient également les requêtes complexes et augmentent les performances de vos requêtes, entre autres avantages. Voyons comment la création de vues SQL peut être bénéfique pour votre base de données et vos applications :

#1. Sécurité de la base de données

Les vues SQL agissent comme des tables virtuelles et cachent les structures des tables réelles de la base de données. Ainsi, en regardant simplement une vue, il n’est pas possible de savoir combien il y a de tables et quelles sont les différentes colonnes de la table. En outre, vous pouvez ajouter des restrictions de contrôle d’accès à votre base de données de sorte qu’un utilisateur ne puisse interroger que la vue et non les tables réelles.

#2. Simplifier les requêtes complexes

Souvent, vos requêtes SQL s’étendent sur plusieurs tables avec des conditions de jointure complexes. Si vous utilisez fréquemment des requêtes complexes de ce type, vous pouvez tirer parti de la puissance de la création de vues SQL. Vous pouvez stocker votre requête complexe dans votre vue SQL. Ainsi, vous pouvez simplement interroger la vue plutôt que d’avoir à exécuter l’intégralité de la requête complexe.

#3. Atténuation des changements de schéma

Si les structures de vos tables sous-jacentes sont modifiées, par exemple par l’ajout ou la suppression de colonnes, vos vues ne sont pas affectées. Si vous comptez sur vos vues SQL pour toutes vos requêtes, vous n’avez pas à vous soucier du changement de schéma. En tant que tables virtuelles, les vues SQL que vous avez créées continueront à fonctionner de manière transparente.

#4. Amélioration des performances des requêtes

Lorsque vous créez des vues SQL, le moteur de base de données optimise la requête sous-jacente avant de la stocker. Une requête stockée s’exécute plus rapidement que la même requête exécutée directement. Ainsi, l’utilisation des vues SQL pour interroger vos données vous permet d’obtenir de meilleures performances et des résultats plus rapides.

Comment créer des vues SQL ?

Pour créer des vues SQL, vous pouvez utiliser la commande CREATE VIEW. Une vue contient une instruction SELECT. Celle-ci indique la requête qui sera stockée dans la vue. La syntaxe est la suivante :

CREATE VIEW nom_de_la_vue AS 
SELECT 
  colonne_1, 
  colonne_2, 
  colonne_3...
FROM 
  nom_de_table_1, nom_de_table_2
WHERE 
  clause_condition

Comprenons cela à l’aide d’un exemple. Considérons que vous avez créé deux tables, département et employé. La table département contient le nom du département et son identifiant. De même, la table employé contient le nom et l’ID de l’employé, ainsi que l’ID du département auquel il appartient. Vous utiliserez ces deux tables pour créer votre vue SQL.

Créez vos tables de base de données

département_idnom_du_département
1Finance
2Technologie
3Entreprises
Tableau 1 : département

Si vous utilisez MySQL, vous pouvez créer cette table à l’aide de la requête suivante :

CREATE TABLE `department` (
  `department_id` int,
  `nom_du_département` varchar(255),
  PRIMARY KEY (`department_id`)
) ;

Insérez des données dans la table que vous avez créée à l’aide du code SQL ci-dessous :

INSERT INTO département VALUES (1, 'Finance') ;
INSERT INTO department VALUES (2, 'Technology') ; INSERT INTO department VALUES (2, 'Technology') ;
INSERT INTO department VALUES (3, 'Business') ;
employee_idnom_employédépartement_id
100Jean3
101Marie1
102Natalya3
103Bruce2
Tableau 2 : employé

La table département étant prête et remplie de données, créez la table employé à l’aide de la requête MySQL ci-dessous :

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

Ensuite, insérez les enregistrements des employés dans votre table. N’oubliez pas qu’étant donné que la colonne department_id a une référence de clé étrangère avec la table department, vous ne pouvez pas insérer un department_id qui n’est pas présent dans l’autre 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) ;

Interroger les tables de votre base de données

Utilisons les tables dans une requête de base de données. Prenons le cas où vous devez demander le numéro d’identification de l’employé, le nom de l’employé et le nom du service pour tous les employés. Dans ce cas, vous devez utiliser les deux tables et les joindre à l’aide de la colonne commune, à savoir department_id. Votre requête devient donc

SELECT
  employee_id,
  nom_employé,
  nom_du_département
FROM 
  employé,
  département
WHERE 
  employee.department_id = department.department_id ;
MySQL command line showing the query output of a SELECT statement.

Créez votre vue SQL

Il se peut que vous recherchiez fréquemment ces données ou que vous y fassiez référence. De plus, au fil du temps, avec plus d’enregistrements dans vos tables, votre temps de requête commencera à augmenter. Dans un tel scénario, vous pouvez créer la vue SQL correspondant à cette requête.

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

CREATE VIEW employee_info AS 
SELECT
  employee_id,
  nom_employé, 
  nom_du_service 
FROM 
  employé, 
  département 
WHERE 
  employee.department_id = department.department_id ;
MySQL command line showing the CREATE VIEW command.

Une fois cette vue en place, vous pouvez l’interroger directement. Votre requête est donc simplifiée :

SELECT 
  * 
FROM 
  employee_info ;

L’interrogation de la vue SQL donne le même résultat que l’exécution de votre requête originale. Cependant, votre requête est désormais facile à maintenir. La vue dissimule les complexités de votre requête sans compromettre le résultat ou les performances.

Comment remplacer les vues SQL ?

Si vous disposez d’une vue portant un nom particulier et que vous souhaitez la modifier ou la remplacer, utilisez la commande CREATE OR REPLACE VIEW. Vous pouvez ainsi modifier l’instruction SELECT utilisée pour créer la vue. Ainsi, la sortie de votre vue est remplacée tout en conservant le nom de la vue intact. En outre, vous créez une nouvelle vue SQL si elle n’existe pas.

Vous pouvez remplacer des vues SQL en utilisant la syntaxe suivante :

CREATE OR REPLACE VIEW view_name AS 
SELECT 
  nouvelle_colonne_1, 
  nouvelle_colonne_2, 
  nouvelle_colonne_3 ...
FROM 
  nouveau_nom_de_table_1, 
  nouveau_nom_table_2 ...
WHERE 
  nouvelle_clause_condition

Un exemple vous permettra de mieux comprendre ce principe. Considérons les tables département et employé. Une vue SQL employee_info est créée à partir de ces tables, qui contient les colonnes employee_id, employee_name et department_name.

Pour des raisons de sécurité, vous souhaiterez peut-être supprimer la colonne employee_id de cette vue. En outre, vous souhaiterez également modifier les noms des colonnes afin de masquer les colonnes réelles de la base de données. Vous pouvez apporter ces modifications à la vue existante à l’aide de la requête SQL suivante :

CREATE OR REPLACE VIEW employee_info AS
SELECT
  nom_employé comme nom,
  nom_du_département comme département
FROM
  employé,
  département
WHERE
  employee.department_id = department.department_id ;
MySQL command line showing the CREATE OR REPLACE VIEW command and the output of its query.

Une fois la vue remplacée, vous obtiendrez des résultats différents lorsque vous utiliserez la même requête qu’auparavant. Par exemple, dans le résultat de la requête, vous constaterez que l’une des colonnes a été supprimée. En outre, les noms des colonnes ont été modifiés, passant de nom_employé et nom_département à nom et département, respectivement.

Tirez parti de la puissance de la création de vues SQL

La création de vues SQL vous permettra non seulement de simplifier les requêtes et d’accélérer la recherche de données, mais aussi d’assurer la sécurité et la protection contre les modifications du schéma. La création de vues SQL est assez simple. Vous pouvez prendre n’importe quelle requête existante et la transformer en vue SQL.

Utilisez le guide étape par étape ci-dessus pour créer des vues SQL et utiliser leurs avantages. Grâce aux vues SQL, vous pouvez simplifier et sécuriser vos applications de base de données tout en augmentant leurs performances.

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