KWALIFIKACJA INF3 - CZERWIEC 2017

PYTANIE NR 19.
Tabela o nazwie naprawy zawiera pola klient, czyNaprawione. Aby usunąć te rekordy, których pole czyNaprawione jest prawdą, należy posłużyć się poleceniem
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawne jest polecenie DELETE FROM naprawy WHERE czyNaprawione = TRUE;, bo usuwa wiersze z tabeli naprawy tylko wtedy, gdy warunek w klauzuli WHERE jest spełniony. Pozostałe propozycje mają błędną składnię (brak FROM lub wskazanie kolumny) albo usuwają wszystkie rekordy (brak WHERE).

Pełne wyjaśnienie:

Instrukcja DELETE służy do usuwania rekordów (wierszy) z tabeli. Aby usunąć tylko część danych, konieczna jest klauzula WHERE, która zawęża zbiór wierszy do tych spełniających warunek.

Polecenie DELETE FROM naprawy WHERE czyNaprawione = TRUE; jest poprawne, ponieważ:

  • używa wymaganej składni DELETE FROM nazwa_tabeli,
  • zawiera warunek WHERE, więc nie usuwa całej tabeli,
  • warunek odwołuje się do pola logicznego czyNaprawione i wybiera tylko rekordy oznaczone jako "prawda".

Dlaczego pozostałe polecenia są niepoprawne lub niebezpieczne:

  • DELETE naprawy WHERE czyNaprawione = TRUE; – w standardowej składni SQL brakuje słowa FROM, więc zapytanie jest niepoprawne składniowo w typowych DBMS.
  • DELETE FROM naprawy; – brak klauzuli WHERE oznacza usunięcie wszystkich rekordów z tabeli, co nie spełnia warunku zadania i jest częstym źródłem poważnych błędów w administracji bazą.
  • DELETE klient FROM naprawy WHERE czyNaprawione = TRUE;DELETE usuwa wiersze, a nie pojedynczą kolumnę. W SQL nie usuwa się "pola klient" z rekordów przez wskazanie nazwy kolumny w DELETE.

W praktyce przed wykonaniem DELETE warto:

  • najpierw wykonać SELECT z tym samym warunkiem, aby sprawdzić, które rekordy zostaną usunięte,
  • stosować transakcje (jeśli DBMS wspiera) i kopie zapasowe,
  • pamiętać, że zapis wartości logicznych (TRUE/FALSE, 1/0) może zależeć od silnika bazy danych.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
DELETE FROM usuwa rekordy (wiersze) z tabeli w bazie danych. Bez klauzuli WHERE usuwa wszystkie wiersze z tabeli, a z WHERE usuwa tylko te, które spełniają wskazany warunek.
Brak WHERE powoduje, że baza usuwa wszystkie rekordy z tabeli. To typowy błąd na egzaminach i w praktyce administracyjnej. Dobrą metodą jest sprawdzenie warunku przez SELECT przed wykonaniem DELETE.
Użyj składni: DELETE FROM tabela WHERE warunek. Przykładowo, aby usuwać tylko naprawy zakończone, filtrujesz po polu statusu/boolean, zamiast usuwać całą zawartość tabeli.
TRUE oznacza wartość logiczną "prawda". W warunku WHERE wybiera rekordy, w których pole typu BOOLEAN jest ustawione na prawdę. Uwaga: zapis wartości logicznych może się różnić między DBMS (czasem spotyka się 1/0).
Nie. DELETE usuwa całe rekordy (wiersze), a nie pojedyncze kolumny. Jeśli chcesz "wyczyścić" wartość w kolumnie, zwykle używa się UPDATE i ustawia np. NULL lub inną wartość, zależnie od wymagań.
Najpierw wykonaj SELECT z identycznym warunkiem WHERE, np. wybierz wiersze, które planujesz skasować. Dzięki temu widzisz zakres zmian. W praktyce to podstawowy nawyk bezpieczeństwa w pracy z bazą.
Nie zawsze. Wiele DBMS obsługuje TRUE/FALSE, ale szczegóły zależą od dialektu SQL i typu kolumny. Czasem spotyka się wartości 1/0 lub inny zapis. Na egzaminie warto rozpoznawać poprawną składnię w danym kontekście.
Najczęstsze pomyłki to: pominięcie słowa FROM, brak WHERE (kasowanie wszystkiego), oraz próba wskazania kolumny do usunięcia (DELETE usuwa wiersze). Warto zapamiętać szablon: DELETE FROM tabela WHERE ...
Gdy nie chcesz tracić historii. Zamiast usuwać naprawy, często oznacza się je statusem (np. zakończona) przez UPDATE. Usuwanie bywa użyteczne przy danych testowych, duplikatach lub gdy polityka retencji pozwala na kasowanie.
Stosuj parametryzowane zapytania, kontrolę uprawnień użytkowników, transakcje oraz kopie zapasowe. Dodatkowo w UI warto mieć potwierdzenie operacji i możliwość "miękkiego usunięcia" (soft delete) zamiast trwałego DELETE.
info

Statystycznie 64% uczniów zna prawidłową odpowiedź. średnie

Według specjalistów z branży: "Poprawne jest polecenie DELETE FROM naprawy WHERE czyNaprawione = TRUE;, bo usuwa wiersze z tabeli naprawy tylko wtedy, gdy warunek w klauzuli WHERE jest spełniony."

Źródła:

  • PostgreSQL Documentation: SQL Command DELETE, https://www.postgresql.org/docs/current/sql-delete.html - accessed 2026-02-28
  • MySQL 8.0 Reference Manual: DELETE Statement, https://dev.mysql.com/doc/refman/8.0/en/delete.html - accessed 2026-02-28
  • SQLite Documentation: DELETE, https://www.sqlite.org/lang_delete.html - accessed 2026-02-28

Materiały:

  • Dokumentacja SQL wybranego silnika bazy danych (sekcja DELETE)
  • Ćwiczenia z CRUD (Create/Read/Update/Delete) na przykładowej bazie serwisowej
  • Materiały o typach danych i wartościach logicznych (BOOLEAN) w danym DBMS

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego