| Zaleta | Opis |
|---|---|
| Uproszczenie | Ukrywa złożone JOINy — użytkownik odpytuje prosty widok |
| Bezpieczeństwo | Ukrywa wrażliwe kolumny (np. hasła, PESEL) — użytkownik widzi tylko wybrane pola |
| Hermetyzacja | Izoluje zmiany struktury — jeśli zmieni się tabela, można zaktualizować widok bez zmiany aplikacji |
| Spójność | Wiele aplikacji używa tych samych danych przez widok — zmiany logiki w jednym miejscu |
-- Prosty widok: aktywni klienci CREATE VIEW v_aktywni_klienci AS SELECT id_klienta, imie, nazwisko, email FROM klienci WHERE aktywny = TRUE; -- Używamy widoku jak tabeli SELECT * FROM v_aktywni_klienci WHERE nazwisko LIKE 'K%'; -- Widok złożony: statystyki zamówień per klient CREATE OR REPLACE VIEW v_stats_zamowien AS SELECT k.imie, k.nazwisko, COUNT(z.id_zamowienia) AS liczba_zam, COALESCE(SUM(z.kwota), 0) AS suma FROM klienci k LEFT JOIN zamowienia z USING(id_klienta) GROUP BY k.id_klienta, k.imie, k.nazwisko;
-- Tworzenie widoku CREATE VIEW nazwa_widoku AS SELECT ...; -- Tworzenie lub zastąpienie istniejącego CREATE OR REPLACE VIEW nazwa_widoku AS SELECT ...; -- Zmiana widoku (ALTER VIEW) ALTER VIEW v_aktywni_klienci AS SELECT id_klienta, imie, nazwisko, email, telefon FROM klienci WHERE aktywny = TRUE; -- Usunięcie widoku DROP VIEW v_aktywni_klienci; DROP VIEW IF EXISTS v_aktywni_klienci; -- Wyświetlenie definicji widoku SHOW CREATE VIEW v_aktywni_klienci; -- WITH CHECK OPTION — zapobiega wstawieniu rekordu poza filtr widoku CREATE VIEW v_drogie_produkty AS SELECT * FROM produkty WHERE cena > 1000 WITH CHECK OPTION; -- INSERT przez ten widok odrzuci produkty z ceną <= 1000
Czym różni się widok (VIEW) od zwykłej tabeli?
Tabela produkty(id_produktu, nazwa, cena, kategoria, ilosc). Napisz widok v_niski_stan pokazujący produkty z ilością mniejszą niż 5 sztuk:
Poniższy CREATE VIEW zawiera błąd składniowy. Wskaż go:
CREATE v_aktywni VIEW AS SELECT id_klienta, imie FROM klienci WHERE aktywny = 1;
CREATE VIEW nazwa AS SELECT ...;CREATE OR REPLACE VIEW — tworzy lub zastępuje istniejący widokWITH CHECK OPTION — zapobiega wstawieniu rekordów poza filtr widoku