Widoki zwykłe: logiczne ponowne użycie
Tworzyć widoki hermetyzujące złożone zapytania, upraszczające raporty i zapewniające dostęp do odczytu podzbioru kolumn
Widoki zwykłe: logiczne ponowne użycie to bezpłatna lekcja SQL Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej SQL Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Academy zawiera 4 lekcji w sumie.
Czym jest widok?
Widok to zapisane zapytanie SELECT. Za każdym razem, gdy wykonywane jest zapytanie na widoku, uruchamiane jest bazowe zapytanie SELECT. Jest podobny do nazwanego zapytania, które można łączyć za pomocą JOIN, filtrować i agregować.
CREATE VIEW active_users AS
SELECT id, email, full_name
FROM users
WHERE deleted_at IS NULL;Używanie widoku
Wykonuj zapytania tak jak na dowolnej tabeli:
SELECT COUNT(*) FROM active_users;
SELECT * FROM active_users WHERE email LIKE '%@gmail.com';Widoki nie przechowują danych
Przechowywana jest definicja widoku, a nie wynik. Każde zapytanie rozwija widok i uruchamia bazowe zapytanie SELECT. Obowiązują te same zasady dotyczące planu zapytania.
Dlaczego widoki?
- Ponowne użycie — zdefiniuj złożone zapytanie raz
- Abstrakcja — ukryj implementację (połącz 3 tabele → „active_users”)
- Bezpieczeństwo — przyznaj SELECT do widoku bez ujawniania tabel bazowych
- Zgodność — zachowaj dotychczasowy kształt zapytań po zmianach schematu
CREATE OR REPLACE
Zaktualizuj widok w miejscu — ale tylko wtedy, gdy typy kolumn i ich kolejność są zgodne:
CREATE OR REPLACE VIEW active_users AS
SELECT id, email, full_name, last_login
FROM users
WHERE deleted_at IS NULL;
-- ERROR if columns conflict; DROP VIEW + CREATE VIEW instead.Widoki z JOIN i agregacjami
Typowy przypadek: agregacja danych dla każdego użytkownika:
CREATE VIEW user_stats AS
SELECT u.id, u.email,
COUNT(o.id) AS order_count,
COALESCE(SUM(o.total), 0) AS revenue
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id, u.email;Widoki aktualizowalne
Proste widoki (jedna tabela, bez agregacji i DISTINCT) są aktualizowalne — można za ich pośrednictwem wykonywać INSERT/UPDATE/DELETE. PostgreSQL automatycznie obsługuje ich aktualizowanie, gdy jest to możliwe.
Widoki z kwalifikacją schematu
Umieść widoki pomocnicze w dedykowanym schemacie:
CREATE SCHEMA api;
CREATE VIEW api.users_public AS
SELECT id, email, full_name FROM users WHERE deleted_at IS NULL;
GRANT SELECT ON api.users_public TO app_reader;Widoki i uprawnienia
Domyślnie widok działa z uprawnieniami użytkownika wykonującego zapytanie — użytkownik nadal potrzebuje uprawnień do tabel bazowych. Aby umożliwić użytkownikowi o niskich uprawnieniach wykonywanie zapytań na wrażliwej tabeli, należy zamiast tego użyć funkcji SECURITY DEFINER.
Kwestie wydajności
Planista rozwija widoki i stosuje swoje standardowe optymalizacje. Czasami GROUP BY widoku uniemożliwia przepychanie predykatów — należy rozbić zapytanie na części lub przepisać je, jeśli EXPLAIN wskaże problem.
Zależności widoków
Usunięcie tabeli bazowej jest blokowane, jeśli zależy od niej widok. Używaj DROP TABLE ... CASCADE tylko wtedy, gdy jest to zamierzone. Wyświetl obiekty zależne:
SELECT * FROM pg_depend
WHERE refobjid = 'users'::REGCLASS;Podsumowanie
Widoki to zapytania SELECT wielokrotnego użytku.
- Zdefiniuj raz, wykonuj zapytania wielokrotnie
- Abstrakcja + bezpieczeństwo
- Aktualizowalne, gdy są proste
- Wykonywane ponownie przy każdym zapytaniu — bez wbudowanego buforowania
Szybki sprawdzian
Czy wykonanie zapytania na widoku zapisuje jego wynik?
Często zadawane pytania
Czy lekcja „Widoki zwykłe: logiczne ponowne użycie” jest bezpłatna?
Tak — pełny tekst „Widoki zwykłe: logiczne ponowne użycie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu SQL Academy, przejdź na CoddyKit PRO. Kurs SQL Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Widoki zwykłe: logiczne ponowne użycie”?
Tworzyć widoki hermetyzujące złożone zapytania, upraszczające raporty i zapewniające dostęp do odczytu podzbioru kolumn Ćwiczysz SQL Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć SQL Academy?
Nie wymagamy żadnego doświadczenia. SQL Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Widoki zwykłe: logiczne ponowne użycie”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji SQL Academy?
Tak. Każda lekcja SQL Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Widoki zwykłe: logiczne ponowne użycie
- Widoki aktualizowalne i triggery INSTEAD OF
- Widoki zmaterializowane i strategie REFRESH
- Kiedy wykonywać agregację wstępną