Gérer les vues SQL Server

Scripts pour gérer les vues SQL Server : créer, appeler, modifier ou supprimer les vues.

Les vues sont un outil puissant pour structurer et afficher les données, mais comment gérer les vues SQL Server avec des scripts ? Ici créée avec des scripts Transact-SQL, elles offrent un certain nombre d’avantages. Les vues permettent par exemple une abstraction sur les données d’une base MS SQL. En d’autres termes, créer différentes vues permet d’afficher différents ensembles de données sans modifier la structure des tables sous-jacentes.

Les vues peuvent être créées en lecture seule et mises à jour, et elles peuvent également être utilisées pour filtrer ou agréger des données dans une base de données. Les vues sont utiles pour créer des rapports à un niveau agrégés. Par exemple, pour voir le revenu total de tous les clients ou le total des commandes des clients d’une entreprise.

1. Définition des vues SQL Server

Avec le langage SQL (Structured Query Language), ou langage de requête structuré en Français, une vue est un objet qui permet de sélectionner un ensemble de données. Cet ensemble provient d’autres tables ou d’autres vues, elles-mêmes basées sur des tables. La sélection se fait sur les colonnes et les lignes. C’est à dire qu’il est possible de :

  1. Filtrer les lignes de manière verticale avec une clause WHERE.
  2. Et de choisir les colonnes horizontalement ou de les générer dans la clause SELECT.

Les vues SQL permettent de visualiser tout ou une partie des données contenues dans des tables sans accéder directement au contenu et à la structure de la table. Elles permettent aussi d’agréger les données de plusieurs tables, en sélectionnant des colonnes avec les mêmes structures. Voici des exemples de code pour créer, modifier, appeler ou encore supprimer des vues simples ou encore des vues partitionnées.

2. Créer la table source pour les vues

Tous les exemples de scripts ci-dessous sont basés sur cette table des ventes:

CREATE TABLE [dbo].[VENTES] 
(
 [MoisNom] NVARCHAR(50), -- alphanumérique
 [MoisCourant]  BIT, -- booléen, 0 ou 1 , false / true
 [NumeroMois] TINYINT, -- très petit entier, de 0 à 255
 [NumeroEmploye] SMALLINT, -- petit entier, minimum -2^15, maximum 2^15
 [NombreClients] INTEGER, -- entier, minimum -2^31, maximum 2^31
 [NombreVentes] BIGINT, -- grand entier, minimum: -2^63, maximum 2^63
 [Montant_HT] NUMERIC(15,5), -- numérique, 15 chiffres, dont 5 après la virgule
 [Montant_TTC] DECIMAL(15,5) -- décimal, 15 chiffres, dont 5 après la virgule
);

3. Créer une vue SQL Server en T-SQL

Premièrement, voici un exemple de script T-SQL pour créer une vue simple basée sur la table des ventes dont le code est disponible ci-dessus. Voici donc comment créer une vue SQL Server avec un script pour agréger et afficher les ventes mensuelles pour toutes les données des clients de la table avec les ventes effectuées.

CREATE VIEW [dbo].[V_VENTES]
AS 
  SELECT 
    [NombreClients],
    [NombreVentes],
    [Montant_HT],
    [Montant_TTC]
  FROM [dbo].[VENTES];

4. Modifier une vue avec du code T-SQL

Deuxièmement, utiliser cet exemple de code pour modifier une vue avec la commande ALTER VIEW. Voici un exemple de code T-SQL pour modifier une vue. Vérifier au préalable l’existence de la vue pour éviter les erreurs d’exécution du code SQL dans SSMS.

ALTER VIEW [dbo].[V_VENTES_E]
WITH ENCRYPTION 
AS 
  SELECT 
    [NombreVentes], -- Suppression de la colonne [NombreClients]
    [Montant_HT],
    [Montant_TTC]
  FROM [dbo].[VENTES];
Modifier une vue SQL Server (Alter View)

5. Supprimer une vue SQL Server

Cependant, pour complètement supprimer une vue utiliser alors la commande DROP VIEW. En effet, si la vue n’existe pas, alors l’erreur Impossible de trouver l’objet car il n’existe pas s’affiche dans le Système de Gestion de la Base de Données (SGBD).

DROP VIEW [dbo].[V_VENTES];

6. Tester si une vue SQL existe pour la supprimer sans erreur

En effet, il est conseillé de faire des tests pour éviter les erreurs durant la suppression d’objets. Pour tester l’existence des vues, utiliser la commande IF EXISTS puis la commande DROP.

IF EXISTS (
  SELECT 1 FROM sys.objects
  WHERE  object_id = object_id(N'[dbo].[V_VENTES]')
    AND type in (N'V') )
BEGIN 
  DROP VIEW [dbo].[V_VENTES];
END;

7. Créer une vue partitionnée avec UNION ALL

De même, pour regrouper les données de plusieurs tables dans une seule vue partitionnée, utiliser cet exemple. En principe, avec une simple requête select combinée à une union de données. Noter que les trois sélections sur les tables (ou vues) ont obligatoirement la même structure.

CREATE VIEW [dbo].[V_VENTES_P]
AS 
  SELECT [NombreClients], [NombreVentes], [Montant_HT], [Montant_TTC]
  FROM [dbo].[VENTES_01]

  UNION ALL 

  SELECT [NombreClients], [NombreVentes], [Montant_HT], [Montant_TTC]
  FROM [dbo].[VENTES_02]

  UNION ALL 

  SELECT [NombreClients], [NombreVentes], [Montant_HT], [Montant_TTC]
  FROM [dbo].[VENTES_03];

8. Créer une vue SQL avec l’option d’encryptage

Ainsi l’encryption d’une vue masque simplement le code de la vue dans la table système sys.comments. Dans ce cas, si le système utilise la réplication Microsoft SQL, il ne publie pas la vue.

L’option d’encryption ne masque pas les données.

CREATE VIEW [dbo].[V_VENTES_E]
WITH ENCRYPTION 
AS 
  SELECT 
    [NombreClients],
    [NombreVentes],
    [Montant_HT],
    [Montant_TTC]
  FROM [dbo].[VENTES];
Créer une vue SQL Server avec encryptage

Ce tutoriel SQL Server explique comment gérer les vues avec des scripts T-SQL. Les vues offrent donc de nombreuses options et une grande flexibilité. Il est donc utile de les utiliser de manière intensive mais utile dans les projets de développement SQL.