KWALIFIKACJA INF3 - STYCZEŃ 2016

PYTANIE NR 22.
W bazie danych sklepu istnieje tabela artykuły zawierająca pole o nazwie nowy. Aby pole to wypełnić wartościami TRUE dla każdego rekordu, należy zastosować kwerendę
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Aby ustawić wartość pola dla każdego rekordu, stosuje się instrukcję UPDATE na tabeli i klauzulę SET dla kolumny.
Brak WHERE oznacza, że zmiana obejmie wszystkie wiersze. Polecenia z INSERT dodają nowe rekordy, a nie aktualizują istniejące.

Pełne wyjaśnienie:

W relacyjnych bazach danych modyfikacje danych realizuje się poleceniami DML. Gdy celem jest zmiana istniejących rekordów, właściwą instrukcją jest UPDATE. Składnia (w typowym ujęciu) ma postać:

UPDATE nazwa_tabeli SET kolumna = wartość [WHERE warunek];

W tym zadaniu trzeba wypełnić pole nowy wartością logiczną TRUE dla każdego rekordu w tabeli artykuły. Dlatego poprawne jest zapytanie:

UPDATE artykuły SET nowy=TRUE;

Kluczowe jest to, że brak klauzuli WHERE oznacza wykonanie aktualizacji na wszystkich wierszach tabeli. To dokładnie odpowiada wymaganiu "dla każdego rekordu".

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

  • Zapytania zaczynające się od INSERT służą do dodawania nowych rekordów, a nie do hurtowej zmiany już istniejących. Dodatkowo przedstawiona składnia z "VALUE nowy=TRUE" nie jest poprawnym zapisem INSERT.
  • Konstrukcje typu "UPDATE nowy FROM artykuły ..." przypominają składnię SELECT, ale nie są prawidłowym sposobem aktualizacji kolumny w tej formie. W UPDATE najpierw wskazuje się tabelę, potem SET, a dopiero opcjonalnie warunek WHERE.
  • "INSERT INTO nowy FROM artykuły SET TRUE" miesza pojęcia: nowy jest kolumną, nie tabelą docelową, a składnia łączy elementy INSERT i UPDATE w niepoprawny sposób.

W praktyce warto pamiętać: UPDATE + SET zmienia dane, INSERT dopisuje wiersze. Jeśli chcesz zmienić tylko część rekordów (np. tylko nowe dostawy), wtedy dopiero dodajesz WHERE.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
UPDATE służy do zmiany danych w istniejących rekordach tabeli. Wskazujesz tabelę i przypisujesz nowe wartości kolumnom w klauzuli SET. Opcjonalnie dodajesz WHERE, aby ograniczyć aktualizację tylko do wybranych wierszy.
Gdy nie podasz WHERE, aktualizacja obejmuje wszystkie wiersze tabeli. To jest poprawne, jeśli świadomie chcesz masowo ustawić wartość (np. wypełnić nową kolumnę po zmianie struktury tabeli). Brak WHERE bywa ryzykowny, więc zwykle wymaga ostrożności.
TRUE to literał logiczny oznaczający wartość "prawda". W kolumnie typu boolean/logicznego zapisujesz nim stan włączony/aktywny/oznaczony. W zależności od silnika bazy TRUE może być przechowywane jako wartość logiczna lub mapowane na liczbę, ale znaczenie pozostaje takie samo.
To zależy od silnika i typu kolumny. W wielu systemach spotyka się mapowanie wartości logicznych na 1/0, ale nie jest to identyczne w każdym DBMS. Na egzaminie najbezpieczniej trzymać się zapisu logicznego (TRUE/FALSE), o ile w zadaniu wyraźnie użyto takich wartości.
INSERT dodaje nowe rekordy do tabeli, czyli zwiększa liczbę wierszy. UPDATE zmienia wartości w już istniejących rekordach. W zadaniach o "wypełnieniu pola dla każdego rekordu" zwykle chodzi o UPDATE bez WHERE.
Trzeba użyć klauzuli WHERE, która filtruje wiersze do zmiany, np. aktualizacja tylko rekordów spełniających warunek (status, data, kategoria). Bez WHERE zmieniasz wszystko, więc na egzaminie zwracaj uwagę na słowa typu "dla wybranych" vs "dla każdego".
Może, jeśli w danym silniku lub konfiguracji jest traktowana jako słowo zastrzeżone albo koliduje z funkcjami. Wtedy stosuje się odpowiednie cudzysłowy/escape (zależne od DBMS). W zadaniach egzaminacyjnych zwykle przyjmuje się, że nazwy są poprawne i nie wymagają cytowania.
Praktycznie robi się to przez wykonanie najpierw zapytania SELECT z tym samym warunkiem WHERE (jeśli jest używany), aby zobaczyć, które wiersze zostaną objęte zmianą. Dodatkowo w środowiskach produkcyjnych stosuje się transakcje i kopie zapasowe, by móc wycofać zmianę.
Najczęściej do oznaczania produktów jako nowych w UI (np. etykieta "Nowość"), filtrowania list produktów lub sterowania promocjami. Taka flaga jest wygodna w panelu admina: można masowo ustawić wartości, a potem w kodzie aplikacji wyświetlać oznaczenia zależnie od stanu pola.
Typowe pomyłki to: użycie INSERT zamiast UPDATE, pominięcie słowa SET, błędna kolejność składni oraz nieuważne użycie WHERE (albo jego brak, gdy zadanie wymaga tylko części rekordów). Pomaga zapamiętanie schematu: UPDATE tabela SET kolumna=wartość WHERE warunek.
info

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

Według specjalistów z branży: "Aby ustawić wartość pola dla każdego rekordu, stosuje się instrukcję UPDATE na tabeli i klauzulę SET dla kolumny.Brak WHERE oznacza, że zmiana obejmie wszystkie wiersze."

Źródła:

  • PostgreSQL Documentation: SQL Command UPDATE, https://www.postgresql.org/docs/current/sql-update.html - accessed 2026-03-01
  • MySQL 8.0 Reference Manual: UPDATE Statement, https://dev.mysql.com/doc/refman/8.0/en/update.html - accessed 2026-03-01
  • SQLite Documentation: UPDATE, https://www.sqlite.org/lang_update.html - accessed 2026-03-01

Materiały:

  • Dokumentacja SQL dla używanego silnika (sekcja UPDATE)
  • Ćwiczenia: modyfikacje danych DML na przykładowej bazie sklepu
  • Materiały do INF.3 o podstawach baz danych i zapytaniach modyfikujących

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego