Otwórz sobie drzwi do kariery w IT     |       -30% na ścieżki kariery     |      Jeszcze przez:

1 dni 17 godzin
close
Cart icon
User menu icon
User icon
Skontaktuj się z nami:
+48 888-916-333
Lightbulb icon
Jak to działa?
FAQ icon
FAQ
Contact icon
Kontakt
Terms of service icon
Regulamin zakupów
Privacy policy icon
Polityka prywatności
jak się tworzy widoki w sqljak się tworzy widoki w sql

Widoki w bazach danych SQL

Czym jest Widok (View)

Widoki to wirtualne tabele, które są tworzone na podstawie zapytań do istniejących tabel w bazie danych. Mają trzy główne zalety:

  • Nie zajmują miejsca na dysku
  • Mogą służyć jako forma kontroli dostępu, ograniczając widoczność danych dla użytkowników.
  • Maskują złożoność zapytań. Użytkownicy bazy danych mogą korzystać z widoków, aby uniknąć trudnych operacji łączenia tabel.

Czym się różni widok od tabeli

Tabela przechowuje dane fizycznie na dysku. Na tabeli można wykonywać wszelkie operacje typu zapis, odczyt, modyfikację oraz usuwanie danych.

Widok nie przechowuje danych, tylko samo zapytanie SQL, które umożliwia odczyt danych z tabeli. Widoki zazwyczaj używane są do odczytywania danych. Są to swego rodzaju predefiniowane zapytania, które można zapisać i potem ich używać wiele razy.

Jak się tworzy widoki w SQL

Popracujemy na przykładowej tabeli employees. Tabela wygląda tak:

Chcielibyśmy utworzyć trzy widoki, osobno dla każdego działu pracowników (Department)

  • Widok dla programistów (Dział DEVELOPER),
  • Widok dla księgowości (Dział FINANCE),
  • Widok dla udziałowców (Dział BOSS).

W jaki sposób tworzymy widok?

CREATE VIEW [nazwa widoku] AS [zapytanie];

W jaki sposób możemy użyć takiego widoku?

SELECT * FROM [nazwa widoku];

Zajmijmy się teraz praktycznym przykładem. Tworzymy trzy widoki dla każdego z działów:

CREATE VIEW developer AS SELECT * FROM employees WHERE department = 'DEVELOPER';

CREATE VIEW finance AS SELECT * FROM employees WHERE department = 'FINANCE';

CREATE VIEW boss AS SELECT * FROM employees WHERE department = 'BOSS';

O teraz mamy do dyspozycji 3 widoki. Możemy ich używać tak jak zwykłe tabele i wykonywać na nich standardowe zapytania SELECT.

Możemy swobodnie odnieść się do widoku:

SELECT * FROM boss;

Efekt działania zapytania:

Możemy wybierać odpowiednie kolumny z widoku:

SELECT id, name, salary, department FROM finance;

Możemy filtrować dane:

SELECT id, surname, salary FROM developer WHERE salary > 5000;

Czyli z widoków korzystamy tak jak z tabel - przynajmniej jeśli chodzi o odczytywanie danych. Różnica polega na tym, że widok zawiera jedynie zapytanie a tabela zawiera fizyczne dane.

Usuwanie i modyfikacja widoków

Modyfikowanie widoku

Jeżeli chcesz zmienić definicję widoku, możesz użyć polecenia CREATE OR REPLACE VIEW.

Usuwanie widoku

Jeżeli widok nie jest już potrzebny, można go usunąć za pomocą polecenia DROP VIEW.

Co to jest widok zmaterializowany

Do tej pory skupiliśmy się na standardowych widokach, które nie są przechowywane fizycznie w bazie danych, lecz są generowane na podstawie zapytań do istniejących tabel.

Teraz przyjrzymy się bardziej zaawansowanej formie widoków –widokom zmaterializowanym. Te widoki, w odróżnieniu od standardowych, przechowują wyniki zapytań fizycznie na dysku, co może znacząco zwiększyć wydajność w niektórych scenariuszach. Kiedy wykonujesz zapytanie do widoku zmaterializowanego, dane są pobierane z fizycznie zapisanych wyników, a nie generowane na nowo.

Takie widoki są szczególnie przydatne w sytuacjach, gdy mamy do czynienia z bardzo czasochłonnymi zapytaniami. W takich przypadkach, wyniki mogą być przechowywane i odświeżane według ustalonego harmonogramu, co pozwala użytkownikom na szybki dostęp do danych.

Kiedy używać widoków zmaterializowanych?

Widoki zmaterializowane mogą być odświeżane np. raz dziennie w godzinach nocnych lub co godzinę, w zależności od tego, jak często zmieniają się dane źródłowe. Widoki zmaterializowane są idealnym rozwiązaniem w środowiskach hurtowni danych, gdzie operacje analityczne są priorytetem, a gdzie rzadziej aktualizuje się dane

Tworzenie widoku zmaterializowanego

Spójrz w jaki sposób możemy utworzyć widok zmaterializowany.

CREATE MATERIALIZED VIEW order_customer_view AS
SELECT 
    o.order_id,
    o.order_date,
    o.total_amount,
    c.first_name,
    c.last_name,
    c.email
FROM 
    orders o
JOIN 
    customers c ON o.customer_id = c.customer_id;

Aby odświeżyć widok zmaterializowany wystarczy wykonać następujące polecenie.

REFRESH MATERIALIZED VIEW order_customer_view;

Podsumowanie

Widoku to swego rodzaju wirtualne tabele, które przechowują samo zapytanie. Dzięki widokom możemy uprościć i lepiej kontrolować dostęp do danych przechowywanych w tabelach.