Geekflare est soutenu par son public. Nous pouvons percevoir des commissions d'affiliation sur les liens d'achat présents sur ce site.
En Base de données Dernière mise à jour : 25 septembre 2023
Partager sur :
Invicti Web Application Security Scanner - la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

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_la_table_1, nom_de_la_table_2
WHERE 
 condition_clause

Comprenons cela à l'aide d'un exemple. Considérons que vous avez créé deux tableaux, département et employé. La table département contient le nom du département et son ID. La table employé contient le nom et l'identifiant de l'employé, ainsi que l'identifiant du service 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
1Finances
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,
 `department_name` 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 department VALUES (1, 'Finance') ;
INSERT INTO department VALUES (2, 'Technologie') ;
INSERT INTO department VALUES (3, 'Business') ;
id_employénom de l'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 département_id a une référence de clé étrangère avec la table department, vous ne pouvez pas insérer un département_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 département_id. Votre requête devient donc

SELECT
 employee_id,
 employee_name,
 department_name
FROM 
 employee,
 department
WHERE 
 employee.department_id = department.department_id ;
Ligne de commande MySQL montrant la sortie d'une requête SELECT.

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,
 employee_name, 
 department_name 
FROM 
 employee, 
 department 
WHERE 
 employee.department_id = department.department_id ;
Ligne de commande MySQL montrant la commande CREATE VIEW.

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 la 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 
 new_column_1, 
 new_column_2, 
 new_column_3 ...
FROM 
 new_table_name_1, 
 new_table_name_2 ...
WHERE 
 new_condition_clause

Un exemple vous permettra de mieux comprendre. 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 id_employé 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
 employee_name as name,
 department_name as department
FROM
 employee,
 department
WHERE
 employee.department_id = department.department_id ;
Ligne de commande MySQL montrant la commande CREATE OR REPLACE VIEW et la sortie de sa requête.

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).

  • Debanjan Choudhury
    Auteur
Merci à nos sponsors
D'autres lectures intéressantes sur la base de données
Alimentez votre entreprise
Quelques outils et services pour aider votre entreprise à se développer.
  • Invicti utilise le Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, search engine crawler, et tout ce dont vous avez besoin pour collecter des données web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation tout-en-un qui vous aide à gérer vos projets, vos tâches, votre travail, vos ventes, votre CRM, vos opérations, vos flux de travail et bien plus encore.
    Essayez le lundi
  • Intruder est un scanner de vulnérabilité en ligne qui détecte les faiblesses de votre infrastructure en matière de cybersécurité, afin d'éviter des violations de données coûteuses.
    Essayer l'intrus