0Pricing
SQL Academy · Lekcja

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

  1. Widoki zwykłe: logiczne ponowne użycie
  2. Widoki aktualizowalne i triggery INSTEAD OF
  3. Widoki zmaterializowane i strategie REFRESH
  4. Kiedy wykonywać agregację wstępną
← Powrót do SQL Academy