Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server 2016 :créer une vue

Dans SQL Server, vous pouvez interroger sous forme de vues. Les vues sont avantageuses pour de nombreuses raisons, notamment la sécurité, la convivialité et la commodité.

Dans SQL Server, une vue est une table virtuelle dont le contenu est défini par une requête. Il s'agit essentiellement d'une requête pré-écrite qui est stockée dans la base de données.

Une vue consiste en un SELECT , et lorsque vous exécutez une requête sur la vue, vous en voyez les résultats comme vous le feriez lors de l'ouverture d'une table. Les vues sont appelées tables virtuelles car elles peuvent rassembler des données de plusieurs tables, ainsi que des données agrégées, et les présenter comme s'il s'agissait d'une seule table.

Avantages des vues

Une vue peut être utile lorsqu'il y a plusieurs utilisateurs avec différents niveaux d'accès, qui ont tous besoin de voir des parties des données dans la base de données (mais pas nécessairement toutes les données). Les vues peuvent effectuer les opérations suivantes :

  • Restreindre l'accès à des lignes spécifiques dans un tableau
  • Restreindre l'accès à des colonnes spécifiques dans un tableau
  • Joignez les colonnes de plusieurs tables et présentez-les comme si elles faisaient partie d'une seule table
  • Présenter des informations agrégées (telles que les résultats du COUNT() fonction)

Comment créer une vue

Vous créez une vue en utilisant le CREATE VIEW instruction, suivie de SELECT déclaration.

CREATE VIEW ViewName 
AS
SELECT ...

Nous allons maintenant créer une vue à partir de notre requête précédente.

  1. Concevoir la vue

    Prenez la requête de notre exemple précédent et préfixez-la avec CREATE VIEW RecentAlbums AS .

    Supprimez également le ORDER BY clause, car les vues ne prennent pas en charge cette clause (sauf si TOP , OFFSET ou FOR XML est également spécifié).

    Ajoutez également un point-virgule à la fin de l'instruction, en tant que terminateur d'instruction (plus d'informations à ce sujet ci-dessous).

    Exemple de code

    Ci-dessous le code de notre exemple, avec le ORDER BY clause supprimée et un point-virgule ajouté comme terminateur d'instruction.

    Je l'ai également reformaté un peu pour le rendre plus lisible).

    CREATE VIEW RecentAlbums 
    AS
    SELECT  Albums.ReleaseDate, 
            Albums.AlbumName, 
            Genres.Genre, 
            Artists.ArtistName
    FROM Albums 
    INNER JOIN
            Artists ON 
            Albums.ArtistId = Artists.ArtistId 
            INNER JOIN
                Genres ON 
                Albums.GenreId = Genres.GenreId
    WHERE   (Albums.ReleaseDate > DATEADD(year, - 10, GETDATE()));

    Dans cet exemple, j'ai ajouté un point-virgule à la fin de la vue. Le concepteur de requêtes ne l'a pas inclus, mais il est recommandé de l'inclure.

    Le point-virgule fait partie de la norme ANSI SQL-92. C'est un caractère de fin d'instruction.

    En outre, Microsoft a annoncé que les instructions Transact-SQL ne se terminant pas par un point-virgule sont obsolètes dans SQL Server 2016 et qu'elles ne seront pas prises en charge dans une future version (SQL Server a historiquement utilisé le GO mot-clé comme terminateur d'instruction au lieu du point-virgule).

  2. Exécuter la vue

    Maintenant, exécutez la vue comme vous exécuteriez n'importe quelle autre requête.

    Cliquez sur Exécuter dans la barre d'outils.

    Vous pouvez maintenant accéder à la vue dans l'Explorateur d'objets. Développez-le et vous verrez les colonnes, leurs types de données et leurs propriétés, comme s'il s'agissait d'un tableau.

  3. Interroger la vue

    Maintenant que la vue a été créée, vous pouvez interroger la vue en exécutant un SELECT déclaration à son encontre.

    Vous pouvez donc interroger notre vue nouvellement créée en utilisant SELECT * FROM RecentAlbums; .

  4. Filtrer la vue

    L'un des avantages des vues est que vous pouvez leur appliquer vos propres critères de filtrage, ce qui filtre davantage les résultats.

    Par exemple, vous pouvez ajouter WHERE Genre = 'Pop' , de sorte que la vue ne renvoie que pop albums des 10 dernières années.

Modifier une vue

Vous pouvez modifier votre vue en utilisant le ALTER VIEW au lieu de la CREATE VIEW déclaration.

  1. Concevoir la vue modifiée

    Ici, nous allons modifier notre vue pour renvoyer les albums des 20 dernières années au lieu de seulement 10.

    C'est une collection assez old school, donc tout album sorti au cours des 20 dernières années est classé comme "récent" :)

    Nous renverrons également une autre colonne :Artists.ActiveFrom

    Exemple de code

    Voici le code que nous utilisons pour l'exemple :

    ALTER VIEW RecentAlbums 
    AS
    SELECT  Albums.ReleaseDate, 
            Albums.AlbumName, 
            Genres.Genre, 
            Artists.ArtistName,
            Artists.ActiveFrom
    FROM Albums 
    INNER JOIN
            Artists ON 
            Albums.ArtistId = Artists.ArtistId 
            INNER JOIN
                Genres ON 
                Albums.GenreId = Genres.GenreId
    WHERE   (Albums.ReleaseDate > DATEADD(year, - 20, GETDATE()));
  2. Interroger la vue

    Maintenant, interroger la vue renverra 20 ans d'albums. Il affichera également la date à partir de laquelle l'artiste était actif.