widoki w MySQL
1. Czym są widoki?
Widok (VIEW) to wirtualna tabela, która:
- nie przechowuje danych fizycznie,
- przechowuje definicję zapytania SQL,
- prezentuje dane pochodzące z jednej lub wielu tabel.
Widok zachowuje się jak tabela – można go odpytywać za pomocą SELECT.
2. Po co stosuje się widoki?
Widoki są używane do:
- uproszczenia skomplikowanych zapytań (
JOIN, agregacje), - zwiększenia czytelności kodu,
- bezpieczeństwa danych (ograniczenie dostępu do kolumn),
- ponownego użycia zapytań,
- logicznej prezentacji danych.
3. Tworzenie widoku – CREATE VIEW
Składnia:
Przykład: widok listy uczniów z klasami
Od tej pory:
4. Widoki a JOIN
Widoki często ukrywają złożone JOIN-y.
Bez widoku:
Z widokiem:
5. Widoki z agregacją
Przykład: średnia ocen każdego ucznia
Widoki mogą zawierać:
GROUP BY- funkcje agregujące
HAVING
6. Widoki a bezpieczeństwo danych
Widoki pozwalają ukryć wrażliwe kolumny.
Przykład: widok nauczycieli bez zarobków
➡ Użytkownik widzi dane nauczycieli, ale nie ma dostępu do kolumny zarobki.
7. Modyfikowanie widoku – CREATE OR REPLACE VIEW
Nadpisuje istniejący widok.
8. Usuwanie widoku – DROP VIEW
9. Widoki aktualizowalne (updatable views)
Niektóre widoki pozwalają na:
INSERTUPDATEDELETE
Warunki:
✔ Widok oparty na jednej tabeli
✔ Brak GROUP BY, DISTINCT, agregacji
✔ Brak podzapytań w SELECT
Przykład:
➡ Zmiana dotyczy tabeli Uczniowie.
10. Widoki nieaktualizowalne
❌ Widoki zawierające:
GROUP BYAVG,SUMJOINwielu tabelUNION
➡ Służą tylko do odczytu.
11. Widoki a wydajność
📌 Widoki:
- nie przyspieszają zapytań (nie przechowują danych),
- każde użycie widoku = wykonanie zapytania w tle,
- wyjątek: widoki materializowane (nieobsługiwane natywnie w MySQL).
12. Widoki z WITH CHECK OPTION
Zapewnia, że dane modyfikowane przez widok spełniają warunki widoku.
Przykład:
➡ Nie można dodać oceny mniejszej niż 4.5 przez ten widok.