Opprette visninger
Visninger forenkler hvordan du får tilgang til og presenterer data i SQL Server. Som SQL-utvikler lager du visninger for å kapsle inn komplekse spørringer, gi sikkerhetsgrenser og presentere data i et format som matcher applikasjonens behov.
Forstå visninger i SQL Server
En visning er en virtuell tabell basert på en SELECT setning. I motsetning til fysiske tabeller, lagrer ikke visninger data i seg selv. I stedet henter de data fra underliggende tabeller hver gang du spør dem.
Med visninger kan du skjule kompleksiteten til JOIN klausuler, beregninger og filtre fra applikasjonskoden. For eksempel, hvis applikasjonen din ofte trenger kundebestillinger med produktdetaljer, kan du lage en visning som brukes JOIN på tvers av tabellene Kunder, Ordrer og Produkter. Applikasjonen din spør deretter om én enkelt visning i stedet for å skrive det samme komplekset JOIN gjentatte ganger.
Visninger gir også et sikkerhetslag. Du kan gi brukere tilgang til spesifikke kolonner gjennom en visning, samtidig som du begrenser tilgangen til de underliggende tabellene. Denne tilnærmingen lar deg kun eksponere dataene brukerne trenger uten å gi dem full tilgang til tabellen.
Lag en grunnleggende visning
Du lager en visning ved hjelp av setningen CREATE VIEW etterfulgt av en SELECT forespørsel. Visningsdefinisjonen bestemmer hvilke data som vises når du spør i visningen.
Her er en enkel visning som kombinerer kunde- og ordreinformasjon:
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;
Etter å ha opprettet denne visningen, kan du spørre den som hvilken som helst tabell:
SELECT * FROM Sales.CustomerOrders
WHERE CustomerName = 'Contoso Ltd';
Visningen utfører den underliggende SELECT-setningen og returnerer resultater som om de kom fra én enkelt tabell. Denne forenklingen gjør applikasjonskoden renere og enklere å vedlikeholde.
Du kan også lage visninger med beregnede kolonner. Følgende visning legger til en kolonne som kategoriserer ordener etter størrelse:
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;
Denne visningen håndterer kategoriseringslogikken på ett sted. Hver spørring mot OrderSummary får samme beregning uten å duplisere uttrykket CASE .
Bruk designhensyn
Når du designer visninger, bør du tenke på hvordan de skal brukes og vedlikeholdes. Velutformede utsikter balanserer enkelhet, ytelse og sikkerhet.
Spesifiser kolonnenavn eksplisitt i stedet for å bruke SELECT *. Eksplisitte kolonner gjør visninger mer vedlikeholdbare og forhindrer uventede resultater når underliggende tabeller endres. Hvis noen legger til en kolonne i en grunntabell, forblir visningsdefinisjonen din konsistent:
CREATE VIEW Sales.ActiveCustomers
AS
SELECT
CustomerID,
CustomerName,
Email,
Phone
FROM Sales.Customers
WHERE IsActive = 1;
Bruk klausulen WITH CHECK OPTION når visninger håndterer dataendringer. Dette alternativet sikrer at INSERT og UPDATE utsagn gjennom visningen kun påvirker rader som er synlige i visningen:
CREATE VIEW Sales.HighValueOrders
AS
SELECT
OrderID,
CustomerID,
OrderDate,
TotalAmount
FROM Sales.Orders
WHERE TotalAmount > 1000
WITH CHECK OPTION;
Med dette alternativet kan du ikke sette inn en ordre med TotalAmount på 500 gjennom ViewValueOrders. Databasen avviser operasjonen fordi den nye raden ikke oppfyller visningens WHERE betingelse.
Hold oversikt over definisjoner fokusert på et spesifikt formål. Et syn som prøver å tjene flere formål blir ofte vanskelig å optimalisere og forstå. Lag separate visninger for ulike brukstilfeller i stedet for å bygge én kompleks visning.
Bestem når du skal bruke visninger
Views utmerker seg i spesifikke situasjoner der deres egenskaper gir klare fordeler. Å forstå disse situasjonene hjelper deg å velge riktig verktøy for hver situasjon.
Bruk visninger for å forenkle komplekse spørringer som flere applikasjoner eller brukere må kjøre. I stedet for å kreve at alle forstår kompleksiteten ved å koble sammen fem tabeller med spesifikke betingelser, lag en visning én gang. Denne sentraliseringen betyr også at du kan optimalisere eller endre logikken på ett sted.
Vurder visninger når du trenger å begrense datatilgang på kolonne- eller radnivå. En visning kan kun vise de kolonnene som er passende for en rolle, samtidig som sensitiv informasjon skjules. Kombinert med passende tillatelser lar visninger deg gi tilgang til spesifikke data uten å eksponere hele tabeller.
Visninger fungerer godt for å presentere data i ulike formater for ulike formål. Du kan ha en produkttabell med tekniske detaljer, men rapporteringsteamet ditt trenger en forenklet versjon med beregnede felt. Lag en visning som transformerer og aggregerer dataene på riktig måte.
Samtidig bør du gjenkjenne når andre objekter tjener bedre. For ytelseskritiske spørringer som alltid gir de samme resultatene, lagrer indekserte visninger (materialiserte visninger) resultatsettet fysisk. For komplekse beregninger som aksepterer parametere, gir brukerdefinerte funksjoner mer fleksibilitet. For dataendringslogikk gir lagrede prosedyrer bedre kontroll.
Når du trenger å kapsle inn gjenbrukbar spørringslogikk uten parametere, og du ønsker å presentere data på en forenklet måte, er visninger løsningen din. De bygger bro mellom den fysiske databasestrukturen og den logiske visningen av dataene applikasjonene dine trenger.