Créer des vues
Les vues simplifient l’accès et la présentation des données dans SQL Server. En tant que développeur SQL, vous créez des vues pour encapsuler des requêtes complexes, fournir des limites de sécurité et présenter des données dans un format qui correspond aux besoins de votre application.
Comprendre les vues dans SQL Server
Une vue est une table virtuelle basée sur une SELECT instruction. Contrairement aux tables physiques, les vues ne stockent pas elles-mêmes les données. Au lieu de cela, ils récupèrent des données à partir de tables sous-jacentes chaque fois que vous les interrogez.
Avec les vues, vous pouvez masquer la complexité des JOIN clauses, des calculs et des filtres du code d’application. Par exemple, si votre application a fréquemment besoin de commandes client avec des détails de produit, vous pouvez créer une vue qui s’utilise JOIN dans les tables Clients, Commandes et Produits. Votre application interroge ensuite une vue unique au lieu d’écrire le même complexe JOIN à plusieurs reprises.
Les vues fournissent également une couche de sécurité. Vous pouvez accorder aux utilisateurs l’accès à des colonnes spécifiques via une vue tout en limitant l’accès aux tables sous-jacentes. Cette approche vous permet d’exposer uniquement les données dont les utilisateurs ont besoin sans leur accorder un accès de table complet.
Créer une vue de base
Vous créez une vue à l’aide de l’instruction CREATE VIEW suivie d’une SELECT requête. La définition de la vue détermine les données qui s’affichent lorsque vous interrogez la vue.
Voici une vue simple qui combine les informations de client et de commande :
CREATE VIEW Sales.CustomerOrders
AS
SELECT
c.CustomerID,
c.CustomerName,
c.Email,
o.OrderID,
o.OrderDate,
o.TotalAmount
FROM Sales.Customers c
INNER JOIN Sales.Orders o ON c.CustomerID = o.CustomerID;
Après avoir créé cette vue, vous pouvez l’interroger comme n’importe quelle table :
SELECT * FROM Sales.CustomerOrders
WHERE CustomerName = 'Contoso Ltd';
La vue exécute l’instruction SELECT sous-jacente et retourne les résultats comme s’ils provenaient d’une seule table. Cette simplification rend votre code d’application plus propre et plus facile à gérer.
Vous pouvez également créer des vues avec des colonnes calculées. La vue suivante ajoute une colonne qui classe les commandes par taille :
CREATE VIEW Sales.OrderSummary
AS
SELECT
OrderID,
CustomerID,
OrderDate,
TotalAmount,
CASE
WHEN TotalAmount < 100 THEN 'Small'
WHEN TotalAmount < 1000 THEN 'Medium'
ELSE 'Large'
END AS OrderSize
FROM Sales.Orders;
Cette vue gère la logique de catégorisation à un seul endroit. Chaque requête sur OrderSummary obtient le même calcul sans dupliquer l’expression CASE .
Appliquer des considérations relatives à la conception
Lors de la conception d’affichages, tenez compte de la façon dont ils seront utilisés et gérés. Les vues bien conçues équilibrent la simplicité, les performances et la sécurité.
Spécifiez explicitement les noms de colonnes au lieu d’utiliser SELECT *. Les colonnes explicites rendent les vues plus gérables et empêchent les résultats inattendus lorsque les tables sous-jacentes changent. Si quelqu’un ajoute une colonne à une table de base, votre définition de vue reste cohérente :
CREATE VIEW Sales.ActiveCustomers
AS
SELECT
CustomerID,
CustomerName,
Email,
Phone
FROM Sales.Customers
WHERE IsActive = 1;
Utilisez la WITH CHECK OPTION clause lorsque les vues gèrent les modifications de données. Cette option garantit que les instructions INSERT et UPDATE dans la vue affectent uniquement les lignes visibles dans la vue :
CREATE VIEW Sales.HighValueOrders
AS
SELECT
OrderID,
CustomerID,
OrderDate,
TotalAmount
FROM Sales.Orders
WHERE TotalAmount > 1000
WITH CHECK OPTION;
Avec cette option, vous ne pouvez pas insérer de commande avec TotalAmount de 500 via la vue HighValueOrders. La base de données rejette l'opération car la nouvelle ligne ne satisfait pas la condition WHERE de la vue.
Conservez les définitions d’affichage axées sur un objectif spécifique. Une vue qui tente de servir plusieurs objectifs devient souvent difficile à optimiser et à comprendre. Créez des vues distinctes pour différents cas d’usage plutôt que de créer une vue complexe.
Déterminer quand utiliser des vues
Affiche Excel dans des scénarios spécifiques où leurs caractéristiques offrent des avantages clairs. La compréhension de ces scénarios vous aide à choisir l’outil approprié pour chaque situation.
Utilisez des vues pour simplifier les requêtes complexes que plusieurs applications ou utilisateurs doivent exécuter. Au lieu de demander à tout le monde de comprendre la complexité de joindre cinq tables avec des conditions spécifiques, créez une vue une seule fois. Cette centralisation signifie également que vous pouvez optimiser ou modifier la logique à un seul endroit.
Tenez compte des vues lorsque vous devez restreindre l’accès aux données au niveau de la colonne ou de la ligne. Une vue ne peut exposer que les colonnes appropriées pour un rôle tout en masquant des informations sensibles. Combinées avec les autorisations appropriées, les vues vous permettent d’accorder l’accès à des données spécifiques sans exposer des tables entières.
Les vues fonctionnent bien pour présenter des données dans différents formats à des fins différentes. Vous pouvez avoir une table Products avec des détails techniques, mais votre équipe de création de rapports a besoin d’une version simplifiée avec des champs calculés. Créez une vue qui transforme et agrège les données de manière appropriée.
En même temps, reconnaissez quand d’autres objets servent mieux. Pour les requêtes critiques de performance qui retournent toujours les mêmes résultats, les vues indexées (vues matérialisées) stockent physiquement le jeu de résultats. Pour les calculs complexes qui acceptent des paramètres, les fonctions définies par l’utilisateur offrent une plus grande flexibilité. Pour la logique de modification des données, les procédures stockées offrent un meilleur contrôle.
Lorsque vous devez encapsuler une logique de requête réutilisable sans paramètres et que vous souhaitez présenter des données de manière simplifiée, les vues sont votre solution. Ils permettent de combler l’écart entre la structure de base de données physique et la vue logique des données dont vos applications ont besoin.