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 ?
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_id | nom_du_département |
---|---|
1 | Finance |
2 | Technologie |
3 | Entreprises |
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_id | nom_employé | département_id |
---|---|---|
100 | Jean | 3 |
101 | Marie | 1 |
102 | Natalya | 3 |
103 | Bruce | 2 |
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 ;
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 ;
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 ;
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).