sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server 2016:Opret en visning

I SQL Server kan du forespørge som visninger. Visninger er gavnlige af mange årsager, herunder sikkerhed, brugervenlighed og bekvemmelighed.

I SQL Server, en visning er en virtuel tabel, hvis indhold er defineret af en forespørgsel. Det er dybest set en forudskrevet forespørgsel, der er gemt i databasen.

En visning består af en SELECT sætning, og når du kører en forespørgsel mod visningen, ser du resultaterne af den, som du ville, når du åbner en tabel. Visninger omtales som virtuelle tabeller, fordi de kan samle data fra flere tabeller såvel som aggregerede data og præsentere det, som om det er en enkelt tabel.

Fordele ved visninger

En visning kan være nyttig, når der er flere brugere med forskellige adgangsniveauer, som alle har brug for at se dele af dataene i databasen (men ikke nødvendigvis alle dataene). Visninger kan gøre følgende:

  • Begræns adgangen til bestemte rækker i en tabel
  • Begræns adgangen til specifikke kolonner i en tabel
  • Slå sammen kolonner fra flere tabeller og præsentere dem, som om de er en del af en enkelt tabel
  • Vis aggregerede oplysninger (såsom resultaterne af COUNT() funktion)

Sådan opretter du en visning

Du opretter en visning ved at bruge CREATE VIEW sætning efterfulgt af SELECT erklæring.

CREATE VIEW ViewName 
AS
SELECT ...

Vi vil nu oprette en visning fra vores tidligere forespørgsel.

  1. Design visningen

    Tag forespørgslen fra vores tidligere eksempel, og præfiks den med CREATE VIEW RecentAlbums AS .

    Fjern også ORDER BY klausul, fordi visninger ikke understøtter denne klausul (medmindre TOP , OFFSET eller FOR XML er også angivet).

    Tilføj også et semikolon til slutningen af ​​sætningen som en erklæringsafslutning (mere om det nedenfor).

    Eksempelkode

    Nedenfor er koden fra vores eksempel med ORDER BY klausul fjernet, og et semikolon tilføjet som en sætningsafslutning.

    Jeg har også omformateret den lidt for at gøre den mere læsbar).

    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()));

    I dette eksempel tilføjede jeg et semikolon til slutningen af ​​visningen. Forespørgselsdesigneren inkluderede ikke dette, men det er god praksis at inkludere det.

    Semikolon er en del af ANSI SQL-92 standarden. Det er et udsagnsterminatortegn.

    Microsoft har også annonceret, at Transact-SQL-sætninger uden semikolon er forældet i SQL Server 2016, og de vil ikke blive understøttet i en fremtidig version (SQL Server har historisk brugt GO søgeord som en sætningsterminator i stedet for semikolon).

  2. Udfør visningen

    Udfør nu visningen, ligesom du ville udføre enhver anden forespørgsel.

    Klik på Udfør på værktøjslinjen.

    Du kan nu navigere til visningen i Objekt Explorer. Udvid den, og du vil se kolonnerne og deres datatyper og egenskaber - som om det var en tabel.

  3. Forespørg på visningen

    Nu hvor visningen er blevet oprettet, kan du forespørge visningen ved at køre en SELECT udtalelse imod det.

    Så du kan forespørge på vores nyoprettede visning ved at bruge SELECT * FROM RecentAlbums; .

  4. Filtrer visningen

    En af de gode ting ved visninger er, at du kan anvende dine egne filtreringskriterier mod dem - yderligere filtrering af resultaterne.

    For eksempel kan du tilføje WHERE Genre = 'Pop' , så visningen kun returnerer pop album fra de sidste 10 år.

Rediger en visning

Du kan ændre din visning ved at bruge ALTER VIEW sætning i stedet for CREATE VIEW erklæring.

  1. Design den ændrede visning

    Her vil vi ændre vores syn for at returnere albums gennem de sidste 20 år i stedet for kun 10.

    Det er en ret old school-samling, så ethvert album udgivet inden for de sidste 20 år er klassificeret som "nylige" :)

    Vi returnerer også en anden kolonne:Artists.ActiveFrom

    Eksempelkode

    Her er koden, vi bruger til eksemplet:

    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. Forespørg på visningen

    Nu vil en forespørgsel om udsigten returnere 20 års albums. Det vil også vise den dato, kunstneren var aktiv fra.


  1. En oversigt over MariaDB Xpand (tidligere ClustrixDB)

  2. PL/pgSQL-funktioner:Sådan returneres en normal tabel med flere kolonner ved hjælp af en execute-sætning

  3. Sådan importeres XML-fil i Oracle SQL Developer?

  4. Funktionelle enheder