KWALIFIKACJA INF3 - STYCZEŃ 2020

PYTANIE NR 21.
Podane poniżej polecenie SQL ma za zadanie

UPDATE Uczen SET id_klasy = id_klasy + 1;

A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
UPDATE modyfikuje istniejące wiersze tabeli. Zapis id_klasy = id_klasy + 1 przypisuje każdemu rekordowi nową wartość równą poprzedniej powiększonej o 1. Brak klauzuli WHERE oznacza, że zmiana dotyczy wszystkich rekordów tabeli Uczen.

Pełne wyjaśnienie:

Instrukcja UPDATE służy do zmiany danych w istniejących rekordach tabeli. W zapytaniu:

UPDATE Uczen SET id_klasy = id_klasy + 1;

część SET określa, jak ma zostać zmieniona kolumna id_klasy. Po prawej stronie przypisania występuje wyrażenie id_klasy + 1, czyli wartość aktualna danej kolumny w danym wierszu powiększona o 1. W efekcie każdy rekord dostaje nową wartość, która jest o jeden większa od poprzedniej.

Kluczowy jest też brak klauzuli WHERE. Gdy nie podamy warunku, silnik bazy danych zastosuje aktualizację do wszystkich wierszy tabeli Uczen (czyli do wszystkich rekordów).

Dlatego poprawna interpretacja brzmi: zwiększyć o jeden wartość kolumny id_klasy dla wszystkich rekordów tabeli Uczen.

Dlaczego pozostałe odpowiedzi są niepoprawne?

  • "zwiększyć o jeden wartość pola Uczen" – "Uczen" to nazwa tabeli, nie pojedynczego pola/kolumny. Aktualizowana jest konkretna kolumna id_klasy.
  • "ustawić wartość kolumny id_klasy na 1 ..." – zapytanie nie ustawia stałej wartości 1. Ustawienie na 1 wyglądałoby jak SET id_klasy = 1, bez odwołania do bieżącej wartości.
  • "ustawić na 1 wartość pola Uczen" – dodatkowo myli pojęcia (tabela vs pole) i błędnie interpretuje działanie "+ 1" jako ustawienie na 1.

Wskazówka egzaminacyjna: gdy w SET po prawej stronie widzisz tę samą nazwę kolumny (np. x = x + 1), zwykle oznacza to inkrementację, a nie przypisanie stałej.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
UPDATE bez WHERE modyfikuje wszystkie rekordy w tabeli. Oznacza to masową zmianę danych, więc przed wykonaniem warto upewnić się, że właśnie taki był cel (np. w skryptach administracyjnych lub na kopii bazy).
To przykład inkrementacji kolumny: nowa wartość jest liczona na podstawie starej. Dla każdego wiersza silnik bierze bieżące id_klasy i dodaje 1, po czym zapisuje wynik z powrotem do tej samej kolumny.
Ponieważ nie ma warunku WHERE, który ograniczałby aktualizację do wybranych wierszy. W takim przypadku aktualizacja dotyczy całej tabeli, a wyrażenie w SET jest stosowane osobno dla każdego rekordu.
Nie. SET id_klasy = 1 ustawia stałą wartość 1 w każdym wierszu. Natomiast id_klasy = id_klasy + 1 zachowuje dotychczasową wartość jako punkt startu i zwiększa ją o 1, więc wynik zależy od danych w rekordzie.
Trzeba dodać klauzulę WHERE, np. warunek po identyfikatorze ucznia, klasie lub roczniku. Wtedy zmiana obejmie tylko te rekordy, które spełniają warunek. To podstawowy mechanizm bezpiecznego wykonywania aktualizacji.
Rekord (wiersz) to pojedynczy wpis w tabeli, np. jeden uczeń. Kolumna to atrybut rekordu, np. id_klasy. UPDATE zmienia wartości w kolumnach, ale zawsze w ramach konkretnych rekordów.
Najczęstszy błąd to przeoczenie braku WHERE i założenie, że aktualizowany jest jeden rekord. Drugi błąd to mylenie inkrementacji (x = x + 1) z ustawieniem stałej wartości. Warto zawsze sprawdzić, czy jest warunek.
W wielu silnikach SQL wyrażenie NULL + 1 daje wynik NULL, więc wiersze z brakiem wartości mogą się "nie zmienić" w oczekiwany sposób. To zależy od zasad obsługi NULL w danym DBMS. Na egzaminie warto pamiętać o konsekwencjach NULL.
Praktycznie: najpierw wykonuje się SELECT z takim samym warunkiem (WHERE), aby zobaczyć, które rekordy będą zmieniane. Dodatkowo w środowiskach uczących można użyć transakcji i wycofania (rollback), jeśli DBMS to wspiera.
Ćwicz rozpoznawanie, co zmienia SET i jaki zasięg ma aktualizacja (czy jest WHERE). Rób krótkie zadania na: ustawienie stałej, inkrementację, aktualizację na podstawie innej kolumny oraz aktualizację wybranych rekordów. To typowe schematy egzaminacyjne.
info

Około 72% zdających odpowiada poprawnie na to pytanie. średnio łatwe

Eksperci podkreślają: "UPDATE modyfikuje istniejące wiersze tabeli."

Źródła:

  • PostgreSQL Documentation: SQL Command UPDATE (opis składni i działania), https://www.postgresql.org/docs/current/sql-update.html - accessed 2026-02-18
  • MySQL 8.0 Reference Manual: UPDATE Statement (Single-Table Syntax), https://dev.mysql.com/doc/refman/8.0/en/update.html - accessed 2026-02-18
  • Microsoft Learn: UPDATE (Transact-SQL) (opis działania UPDATE i SET), https://learn.microsoft.com/en-us/sql/t-sql/queries/update-transact-sql - accessed 2026-02-18

Materiały:

  • Dokumentacja SQL dla używanego silnika (MySQL/PostgreSQL/SQL Server): sekcja UPDATE
  • Ćwiczenia z zapytań modyfikujących dane (INSERT/UPDATE/DELETE) na przykładowej bazie szkolnej
  • Materiały do INF.3 z części "Bazy danych – język SQL (DML)"

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego