KWALIFIKACJA INF3 - STYCZEŃ 2023

PYTANIE NR 23.
Tabela Pracownicy zawiera dane pracowników z różnych działów, co określa pole liczbowe dzial. Ponieważ zazwyczaj są wykonywane kwerendy tylko na dziale równym 2, to można uprościć zapytania do tabeli, tworząc wirtualną tabelę o nazwie Prac_dzial2 za pomocą zapytania
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
CREATE VIEW nazwa AS SELECT ...

Widok jest "wirtualną tabelą" zdefiniowaną przez zapytanie SELECT. Aby otrzymać widok tylko dla pracowników z działu 2, definicja musi zawierać AS SELECT oraz warunek WHERE dzial=2. Pozostałe propozycje nie mają poprawnej składni CREATE VIEW.

Pełne wyjaśnienie:

Widok (VIEW) w SQL to obiekt bazy danych, który przechowuje definicję zapytania, a nie osobną kopię danych. Dlatego często mówi się o nim jako o "wirtualnej tabeli": można z niego korzystać podobnie jak z tabeli w instrukcji SELECT, ale jego zawartość wynika z zapytania, które go definiuje.

Poprawna składnia tworzenia widoku ma kluczowy schemat:

CREATE VIEW nazwa AS SELECT ...

W tym zadaniu celem jest uproszczenie typowych kwerend do tabeli Pracownicy, które niemal zawsze filtrują rekordy do tych, gdzie dzial = 2. Taki filtr realizuje się warunkiem WHERE, więc definicja widoku musi zawierać fragment:

SELECT * FROM Pracownicy WHERE dzial=2

Odpowiedź zawierająca CREATE VIEW Prac_dzial2 AS SELECT * FROM Pracownicy WHERE dzial=2; spełnia oba wymagania: ma słowa kluczowe CREATE VIEW, następnie nazwę widoku, dalej AS i pełne zapytanie SELECT z filtrem.

Dlaczego pozostałe propozycje są błędne:

  • Wariant z konstrukcją typu CREATE VIEW ... FROM ... pomija obowiązkowe AS SELECT i myli kolejność elementów składni.
  • Warianty zaczynające się od samego VIEW ... nie tworzą widoku w standardowym ujęciu polecenia DDL, bo brakuje kluczowego czasownika CREATE oraz poprawnego miejsca na definicję zapytania.
  • Wariant ... SELECT FROM ... jest również niepoprawny, ponieważ po SELECT musi wystąpić lista kolumn (np. * albo konkretne kolumny), a dopiero potem FROM.

W praktyce widoki pomagają uporządkować dostęp do danych w aplikacjach internetowych: kod aplikacji odwołuje się do widoku (np. Prac_dzial2), a nie powtarza w wielu miejscach ten sam warunek filtrujący.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Widok to obiekt bazy danych, który przechowuje definicję zapytania SELECT i udostępnia wynik tego zapytania jak "wirtualną tabelę". Zwykle nie duplikuje danych, tylko prezentuje je w ustalony sposób (np. z filtrem WHERE lub wybranymi kolumnami).
Najczęściej stosowany wzorzec to: CREATE VIEW nazwa AS SELECT .... Po słowie AS musi być pełne zapytanie SELECT, które definiuje, jakie dane będą widoczne w widoku. Potem można wykonywać SELECT z widoku jak z tabeli.
AS oddziela nazwę widoku od zapytania, które go definiuje. Dzięki temu baza "wie", że dalsza część to definicja widoku w postaci SELECT. Pominięcie AS zwykle powoduje błąd składni, bo polecenie nie ma kompletnej struktury.
Taki widok automatycznie ogranicza dane do pracowników z działu 2. W praktyce skraca i ujednolica zapytania w aplikacji: zamiast wielokrotnie pisać ... WHERE dzial=2, można odpytywać widok (np. SELECT * FROM Prac_dzial2).
Najczęściej nie. Widok przechowuje definicję zapytania, a dane są pobierane z tabel źródłowych w momencie odczytu. Wyjątkiem w niektórych systemach mogą być widoki materializowane, ale to osobny mechanizm i zwykle wymaga jawnego tworzenia/odświeżania.
Najczęstsze pomyłki to: brak słowa CREATE, brak AS, niepoprawne ułożenie słów kluczowych lub błędny SELECT (np. SELECT FROM bez listy kolumn). Warto zapamiętać stały szkielet: CREATE VIEW ... AS SELECT ....
Tak, zwykle można użyć SELECT *, co oznacza wszystkie kolumny z tabel źródłowych. W praktyce projektowej często lepiej wymieniać kolumny jawnie, aby zmiana tabeli (np. dodanie kolumny) nie wpływała nieoczekiwanie na widok i aplikację.
Gdy ten sam filtr (np. dział=2) lub ten sam zestaw kolumn jest używany wielokrotnie w różnych miejscach aplikacji. Widok zmniejsza powtarzalność, poprawia czytelność i ułatwia zmiany: modyfikujesz definicję widoku, a nie dziesiątki zapytań w kodzie.
Najprościej wykonać zapytanie SELECT na widoku, np. SELECT * FROM Prac_dzial2; i porównać wynik z zapytaniem źródłowym na tabeli. Jeśli wyniki są zgodne, definicja widoku jest poprawna. W razie błędu DBMS zwróci komunikat składni lub uprawnień.
Może. Widok bywa używany do ograniczenia dostępu do części danych (np. tylko wybrane kolumny lub wiersze). Jednak samo utworzenie widoku nie gwarantuje bezpieczeństwa bez poprawnej konfiguracji uprawnień w DBMS. Na egzaminie ważne jest rozumienie idei: widok może "ukrywać" dane.
info

Około 56% zdających odpowiada poprawnie na to pytanie. średnie

Specjaliści zwracają uwagę: "CREATE VIEW nazwa AS SELECT ...Widok jest "wirtualną tabelą" zdefiniowaną przez zapytanie SELECT."

Źródła:

  • PostgreSQL Documentation: CREATE VIEW, https://www.postgresql.org/docs/current/sql-createview.html - dostęp 2026-03-01
  • MySQL 8.0 Reference Manual: CREATE VIEW Statement, https://dev.mysql.com/doc/refman/8.0/en/create-view.html - dostęp 2026-03-01
  • SQLite Documentation: CREATE VIEW, https://www.sqlite.org/lang_createview.html - dostęp 2026-03-01

Materiały:

  • Dokumentacja DBMS używanego w nauce (sekcja CREATE VIEW)
  • Ćwiczenia z DDL i DML: tworzenie widoków, testowanie SELECT z widoków
  • Zadania egzaminacyjne z SQL dotyczące widoków, filtrów WHERE i normalizacji zapytań

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego