Widoki - View - wprowadzenie

1. Co to jest widok?

Widok (VIEW) to zapamiętane zapytanie SELECT, które zachowuje się jak tabela.

Można o tym myśleć tak:

Widok = tabela wirtualna, której zawartość nie jest zapisana na stałe w bazie,
tylko wyświetla dane na podstawie zapisanego zapytania.

Widok nie przechowuje danych — dane są pobierane z prawdziwych tabel za każdym razem, gdy widok jest używany.

2. Po co stosuje się widoki?

Widoki są bardzo przydatne, bo pozwalają:

– uprościć skomplikowane zapytania

Jeśli jakieś SELECT jest długie albo często używane — zapisujemy je jako widok.

– ukryć trudną logikę przed użytkownikami

Np. w firmie użytkownicy mogą mieć dostęp tylko do widoku, a nie do prawdziwych tabel.

– tworzyć raporty

Widoki często zawierają już policzone sumy, średnie, złączenia tabel itp.

– zmniejszyć ilość powtarzanego kodu

Zamiast pisać długiego SELECT za każdym razem → używamy widoku jak tabeli.

3. Jak wygląda widok w praktyce?

Bez widoku:

SELECT p.nazwa, t.ilosc, t.data_sprzedazy
FROM transakcje t
JOIN produkty p ON t.produkt_id = p.id;

Z widokiem:

Tworzymy widok:

CREATE VIEW sprzedaz_szczegoly AS

SELECT
p.nazwa AS produkt,
t.ilosc,
t.data_sprzedazy,
t.sprzedawca
FROM transakcje t
JOIN produkty p ON t.produkt_id = p.id;

Teraz możemy używać widoku jak tabeli:

SELECT * FROM sprzedaz_szczegoly;

4. Widok = tabela tylko do odczytu?

– Widok może pozwalać na INSERT/UPDATE/DELETE, ale:

– tylko jeśli widok jest prosty (bez GROUP BY, bez agregacji, bez DISTINCT),

– musi mieć jasne powiązanie z jedną tabelą.

W naszej nauce na tym etapie:

– Najważniejsze: widoku używa się głównie do odczytu.

5. Usuwanie widoku

DROP VIEW sprzedaz_szczegoly;

6. Nadpisywanie widoku (zmiana definicji)

CREATE OR REPLACE VIEW sprzedaz_szczegoly AS
SELECT …

Typowe błędy i problemy:

– Widok nie może mieć parametrów

– Nie używamy widoków jak funkcji — zawsze zwracają jeden „ustalony” zestaw danych.

– Widoku nie można stworzyć bez SELECT

– Widoki opierają się tylko na SELECT.

– Widok może wyświetlać dane, których użytkownik nie powinien widzieć

Dlatego w firmach często daje się użytkownikowi dostęp tylko do widoków, a nie do tabel.

Zadanie przykładowe:

Stwórz tabele:

– produkty(id, nazwa, kategoria, cena)
– transakcje(id, produkt_id, ilosc, sprzedawca, data_sprzedazy)
– uzupełnij tabele przykładowymi danymi

Stwórz widok, który wyświetla transakcje z nazwą produktu zamiast produkt_id.

Przykład:
CREATE VIEW transakcje_z_nazwa AS
SELECT
t.id,
p.nazwa AS produkt,
t.ilosc,
t.sprzedawca,
t.data_sprzedazy
FROM transakcje t
JOIN produkty p ON t.produkt_id = p.id;

Używamy widoku:
SELECT * FROM transakcje_z_nazwa;

Kontakt: mgzsp22@gmail.com

© 2025. Wszystkie prawa zastrzeżone.

error: Content is protected !!