sql >> Database >  >> RDS >> Sqlserver

SQL Server 2016:een weergave maken

In SQL Server kunt u query's als views uitvoeren. Weergaven zijn om vele redenen nuttig, waaronder veiligheid, bruikbaarheid en gemak.

In SQL Server, een weergave is een virtuele tabel waarvan de inhoud wordt gedefinieerd door een query. Het is in feite een vooraf geschreven zoekopdracht die in de database wordt opgeslagen.

Een weergave bestaat uit een SELECT statement, en wanneer u een query uitvoert op de view, ziet u de resultaten ervan zoals u zou doen bij het openen van een tabel. Weergaven worden virtuele tabellen genoemd omdat ze gegevens uit meerdere tabellen kunnen samenvoegen, evenals gegevens kunnen aggregeren, en deze kunnen presenteren alsof het een enkele tabel is.

Voordelen van weergaven

Een weergave kan handig zijn als er meerdere gebruikers zijn met verschillende toegangsniveaus, die allemaal delen van de gegevens in de database moeten zien (maar niet noodzakelijk alle gegevens). Weergaven kunnen het volgende doen:

  • Beperk de toegang tot specifieke rijen in een tabel
  • Beperk de toegang tot specifieke kolommen in een tabel
  • Kolommen uit meerdere tabellen samenvoegen en ze presenteren alsof ze deel uitmaken van een enkele tabel
  • Gezamenlijke informatie presenteren (zoals de resultaten van de COUNT() functie)

Een weergave maken

U maakt een weergave met behulp van de CREATE VIEW statement, gevolgd door de SELECT verklaring.

CREATE VIEW ViewName 
AS
SELECT ...

We gaan nu een weergave maken op basis van onze vorige zoekopdracht.

  1. Ontwerp de weergave

    Neem de query uit ons vorige voorbeeld en voeg het voorvoegsel toe met CREATE VIEW RecentAlbums AS .

    Verwijder ook de ORDER BY clausule, omdat views deze clausule niet ondersteunen (tenzij TOP , OFFSET of FOR XML wordt ook gespecificeerd).

    Voeg ook een puntkomma toe aan het einde van de verklaring, als een verklaring terminator (meer daarover hieronder).

    Voorbeeldcode

    Hieronder staat de code uit ons voorbeeld, met de ORDER BY clausule verwijderd, en een puntkomma toegevoegd als een verklaring terminator.

    Ik heb het ook een beetje opnieuw geformatteerd om het leesbaarder te maken).

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

    In dit voorbeeld heb ik een puntkomma aan het einde van de weergave toegevoegd. De Query Designer heeft dit niet opgenomen, maar het is een goede gewoonte om het op te nemen.

    De puntkomma maakt deel uit van de ANSI SQL-92-standaard. Het is een terminator-teken voor een statement.

    Microsoft heeft ook aangekondigd dat Transact-SQL-instructies zonder puntkomma's zijn verouderd in SQL Server 2016 en niet worden ondersteund in een toekomstige versie (SQL Server heeft in het verleden de GO gebruikt zoekwoord als een verklaring terminator in plaats van de puntkomma).

  2. Voer de weergave uit

    Voer nu de weergave uit zoals u elke andere zoekopdracht zou uitvoeren.

    Klik op Uitvoeren op de werkbalk.

    U kunt nu navigeren naar de weergave in de Objectverkenner. Vouw het uit en je ziet de kolommen en hun gegevenstypen en eigenschappen — alsof het een tabel is.

  3. Bezoek de weergave

    Nu de weergave is gemaakt, kunt u de weergave opvragen door een SELECT . uit te voeren verklaring ertegen.

    U kunt dus onze nieuw gemaakte weergave opvragen met SELECT * FROM RecentAlbums; .

  4. De weergave filteren

    Een van de goede dingen van weergaven is dat je er je eigen filtercriteria op kunt toepassen — de resultaten verder filteren.

    U kunt bijvoorbeeld WHERE Genre = 'Pop' . toevoegen , zodat de weergave alleen pop teruggeeft albums van de afgelopen 10 jaar.

Een weergave wijzigen

U kunt uw weergave wijzigen met behulp van de ALTER VIEW statement in plaats van de CREATE VIEW verklaring.

  1. Ontwerp de gewijzigde weergave

    Hier zullen we onze visie aanpassen om albums van de afgelopen 20 jaar terug te geven in plaats van slechts 10.

    Het is een behoorlijk oude schoolcollectie, dus elk album dat in de afgelopen 20 jaar is uitgebracht, wordt geclassificeerd als "recent" :)

    We retourneren ook een andere kolom:Artists.ActiveFrom

    Voorbeeldcode

    Dit is de code die we voor het voorbeeld gebruiken:

    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. Bezoek de weergave

    Als je nu naar de weergave opvraagt, krijg je 20 jaar aan albums terug. Het toont ook de datum waarop de artiest actief was.


  1. Bereken de leeftijd in jaren in PostgreSQL

  2. Haal het meeste uit uw PostgreSQL-indexen

  3. MySQL relationele databases gebruiken op Arch Linux

  4. Is het mogelijk om een ​​boomstructuurtabel in MySQL in één enkele query te doorzoeken, tot op elke diepte?