Opret visninger

Fuldført

Visninger forenkler, hvordan du tilgår og præsenterer data i SQL Server. Som SQL-udvikler skaber du visninger til at indkapsle komplekse forespørgsler, skabe sikkerhedsgrænser og præsentere data i et format, der matcher din applikations behov.

Forstå views i SQL Server

En visning er en virtuel tabel baseret på en SELECT sætning. I modsætning til fysiske tabeller gemmer visninger ikke data i sig selv. I stedet henter de data fra underliggende tabeller hver gang, du spørger dem.

Diagram, der viser, hvordan en visning henter data fra underliggende tabeller.

Med views kan du skjule kompleksiteten af JOIN klausuler, beregninger og filtre fra applikationskoden. For eksempel, hvis din applikation ofte har brug for kundeordrer med produktdetaljer, kan du oprette en visning, der bruger JOIN på tværs af tabellerne Kunder, Ordrer og Produkter. Din applikation forespørger derefter en enkelt visning i stedet for at skrive det samme kompleks JOIN gentagne gange.

Visninger udgør også et sikkerhedslag. Du kan give brugere adgang til specifikke kolonner gennem en visning, mens du begrænser adgangen til de underliggende tabeller. Denne tilgang lader dig kun eksponere de data, brugerne har brug for, uden at give dem fuld adgang til tabelen.

Lav en grundlæggende visning

Du opretter en visning ved hjælp af sætningen CREATE VIEW efterfulgt af en SELECT forespørgsel. Visningsdefinitionen bestemmer, hvilke data der vises, når du forespørger visningen.

Her er en simpel visning, der kombinerer kunde- og ordreinformation:

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;

Efter at have oprettet denne visning, kan du forespørge den som enhver anden tabel:

SELECT * FROM Sales.CustomerOrders
WHERE CustomerName = 'Contoso Ltd';

Visningen udfører den underliggende SELECT-sætning og returnerer resultater, som om de kom fra en enkelt tabel. Denne forenkling gør din applikationskode renere og lettere at vedligeholde.

Du kan også oprette visninger med beregnede kolonner. Følgende visning tilføjer en kolonne, der kategoriserer ordrer efter 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;

Dette synspunkt håndterer kategoriseringslogikken ét sted. Hver forespørgsel mod OrderSummary får den samme beregning uden at duplikere udtrykket CASE .

Anvend designovervejelser

Når du designer udsigter, så overvej, hvordan de vil blive brugt og vedligeholdt. Veludformede udsigter balancerer enkelhed, ydeevne og sikkerhed.

Angiv kolonnenavne eksplicit i stedet for at bruge SELECT *. Eksplicitte kolonner gør visninger mere vedligeholdelsesvenlige og forhindrer uventede resultater, når underliggende tabeller ændres. Hvis nogen tilføjer en kolonne til en basistabel, forbliver din visningsdefinition konsistent:

CREATE VIEW Sales.ActiveCustomers
AS
SELECT 
    CustomerID,
    CustomerName,
    Email,
    Phone
FROM Sales.Customers
WHERE IsActive = 1;

Brug klausulen, WITH CHECK OPTION når views håndterer dataændringer. Denne mulighed sikrer, at INSERT og UPDATE udsagn gennem visningen kun påvirker rækker, der er synlige i visningen:

CREATE VIEW Sales.HighValueOrders
AS
SELECT 
    OrderID,
    CustomerID,
    OrderDate,
    TotalAmount
FROM Sales.Orders
WHERE TotalAmount > 1000
WITH CHECK OPTION;

Med denne mulighed kan du ikke indsætte en ordre med TotalAmount på 500 via ViewValueOrders. Databasen afviser operationen, fordi den nye række ikke opfylder visningens WHERE betingelse.

Hold definitionerne fokuseret på et specifikt formål. Et synspunkt, der forsøger at tjene flere formål, bliver ofte svært at optimere og forstå. Skab separate visninger til forskellige anvendelsestilfælde i stedet for at bygge én kompleks visning.

Bestem hvornår du skal bruge visninger

Visninger udmærker sig i specifikke situationer, hvor deres karakteristika giver klare fordele. At forstå disse scenarier hjælper dig med at vælge det rigtige værktøj til hver situation.

Brug visninger til at forenkle komplekse forespørgsler, som flere applikationer eller brugere skal udføre. I stedet for at kræve, at alle forstår kompleksiteten ved at forbinde fem tabeller med specifikke betingelser, så lav en visning én gang. Denne centralisering betyder også, at du kan optimere eller ændre logikken ét sted.

Overvej visninger, når du har brug for at begrænse dataadgang på kolonne- eller rækkeniveau. En visning kan kun vise de kolonner, der er relevante for en rolle, samtidig med at følsomme oplysninger skjules. Kombineret med passende tilladelser giver visninger dig adgang til specifikke data uden at eksponere hele tabeller.

Views fungerer godt til at præsentere data i forskellige formater til forskellige formål. Du kan have en produkttabel med tekniske detaljer, men dit rapporteringsteam har brug for en forenklet version med beregnede felter. Skab en visning, der transformerer og aggregerer dataene passende.

Samtidig skal du genkende, når andre objekter tjener bedre. For performancekritiske forespørgsler, der altid returnerer de samme resultater, gemmer indekserede visninger (materialiserede visninger) resultatsættet fysisk. For komplekse beregninger, der accepterer parametre, giver brugerdefinerede funktioner mere fleksibilitet. For dataændringslogik tilbyder lagrede procedurer bedre kontrol.

Når du har brug for at indkapsle genanvendelig forespørgselslogik uden parametre, og du vil præsentere data på en forenklet måde, er views din løsning. De bygger bro mellem den fysiske databasestruktur og det logiske syn på data, som dine applikationer har brug for.