Créer et interroger des vues

Effectué

Les vues sont des requêtes enregistrées que vous pouvez créer dans vos bases de données. Une vue unique peut référencer une ou plusieurs tables. Et, comme une table, une vue se compose de lignes et de colonnes de données. Vous pouvez utiliser des vues comme source pour vos requêtes de la même façon que les tables. Toutefois, les vues ne stockent pas de données de manière permanente ; la définition de votre vue est décompressée au moment de l’exécution et les objets sources sont interrogés.

La similarité apparente entre une table et une vue constitue un avantage important. Vos applications peuvent être écrites pour utiliser des vues au lieu des tables sous-jacentes, ce qui empêche l’application d’apporter des modifications aux tables. Cela vous offre une couche de sécurité supplémentaire pour vos données.

Tant que la vue continue de présenter la même structure à l’application appelante, l’application reçoit également des résultats cohérents. De cette façon, les vues peuvent être considérées comme une interface de programmation d’application (API) vers une base de données à des fins de récupération de données.

Remarque

Les vues doivent être créées par un développeur de base de données ou un administrateur disposant d’une autorisation appropriée dans la base de données.

Créer une vue

Pour créer une vue, vous utilisez l’instruction CREATE VIEW pour nommer et stocker une seule instruction SELECT. Vous allez créer une vue à l’aide de la syntaxe suivante :

CREATE VIEW <schema_name.view_name> [<column_alias_list>] 
[WITH <view_options>]
AS select_statement;

Remarque

La clause ORDER BY n’est pas autorisée dans une définition d’affichage, sauf si la vue utilise un élément TOP, OFFSET/FETCH ou FOR XML.

Par exemple, pour créer une vue nommée Sales.CustOrders basée sur une instruction SELECT personnalisée qui englobe plusieurs tables, vous pouvez écrire la requête suivante :

CREATE VIEW Sales.CustOrders
AS
SELECT
  O.custid, 
  DATEADD(month, DATEDIFF(month, 0, O.orderdate), 0) AS ordermonth,
  SUM(OD.qty) AS qty
FROM Sales.Orders AS O
  JOIN Sales.OrderDetails AS OD
    ON OD.orderid = O.orderid
GROUP BY custid, DATEADD(month, DATEDIFF(month, 0, O.orderdate), 0);

Notez que la plupart du code dans l’exemple se compose de votre instruction SELECT. Les instructions SELECT à l’intérieur des définitions d’affichage peuvent être aussi complexes ou simples que vous le souhaitez.

Interroger une vue

Pour interroger une vue et récupérer des résultats, reportez-vous à celle-ci dans la clause FROM d’une instruction SELECT, comme vous le feriez pour une table. Par exemple, pour renvoyer l’ID client, le mois de commande et la quantité d’éléments de chaque commande dans votre vue Sales.CustOrders , vous pouvez exécuter la requête suivante :

SELECT custid, ordermonth, qty
FROM Sales.CustOrders;