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:

  • INSERT
  • UPDATE
  • DELETE

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 BY
  • AVG, SUM
  • JOIN wielu tabel
  • UNION

➡ 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.


13. Sprawdzanie definicji widoku