Lekcja 27: Widoki - CREATE VIEW

Preview Mode

You're viewing this material in preview mode. Sign up to track your progress and access all features.

Lekcja 27: Widoki - CREATE VIEW
Required In Progress

Czym jest widok?

Widok (View) nie jest fizyczną tabelą — w swojej standardowej formie nie przechowuje danych. Widok to obiekt bazodanowy, który przechowuje zapisane zapytanie SELECT. Kiedy użytkownik odpytuje widok (np. SELECT * FROM MojWidok), baza danych w tle wykonuje zapytanie SELECT zdefiniowane w tym widoku i zwraca jego wyniki; dla użytkownika końcowego widok wygląda i zachowuje się jak zwykła tabela.

Składnia CREATE VIEW ... AS ...

Składnia: CREATE VIEW [nazwa_widoku] AS [zapytanie_select];

Przykład — stwórzmy widok, który zawsze pokazuje tylko uczniów z klasy '3A' wraz z nazwą klasy, ukrywając skomplikowane łączenie (JOIN):

CREATE VIEW V_Uczniowie_3A AS
  SELECT
    U.Imie,
    U.Nazwisko,
    U.Srednia,
    K.NazwaKlasy
  FROM Uczniowie U
  INNER JOIN Klasy K ON U.ID_Klasy = K.ID_Klasy
  WHERE K.NazwaKlasy = '3A';

Od teraz, zamiast pisać całe to skomplikowane zapytanie, użytkownik (np. analityk lub aplikacja) może po prostu wykonać:

SELECT * FROM V_Uczniowie_3A;

Korzyści

  • Upraszczanie (abstrakcja): widok może ukryć bardzo skomplikowaną logikę (wiele JOIN, GROUP BY, obliczenia) za prostą, przyjazną nazwą. Analityk biznesowy nie musi znać szczegółów modelu danych — odpytuje po prostu widok, np. V_SprzedazMiesieczna.
  • Bezpieczeństwo (kontrola dostępu): widok może filtrować kolumny i wiersze. Na przykład zamiast udostępniać tabelę Pracownicy z wrażliwymi danymi (PESEL, Zarobki, AdresZamieszkania), można stworzyć widok V_Pracownicy_Publiczny, który zawiera tylko Imie, Nazwisko, Dzial, i nadać uprawnienia tylko do odczytu z tego widoku, a odebrać dostęp do tabeli bazowej. Widok działa wtedy jak fasada lub filtr, ukrywając wrażliwe kolumny i/lub wiersze.