KWALIFIKACJA INF3 - STYCZEŃ 2024 (test 2)

PYTANIE NR 20.
W tabeli zadania istnieje pole tekstowe status. Aby usunąć te zadania, których statusem jest ‘zamknięte’ należy zastosować kwerendę
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawne jest polecenie
DELETE FROM zadania WHERE status = 'zamknięte';

Usuwa ono tylko te rekordy z tabeli zadania, dla których kolumna status ma wartość 'zamknięte'. Wariant bez klauzuli WHERE skasowałby wszystkie rekordy, a TRUNCATE opróżnia tabelę w całości i nie działa z warunkiem.

Pełne wyjaśnienie:

W tabeli relacyjnej usuwanie danych realizuje się najczęściej poleceniem DELETE. Gdy trzeba skasować tylko część rekordów, kluczowa jest klauzula WHERE, która filtruje wiersze objęte operacją.

Polecenie DELETE FROM zadania WHERE status = 'zamknięte'; usuwa wyłącznie te wiersze, w których wartość w kolumnie status jest równa 'zamknięte'. Dzięki temu pozostałe zadania (np. 'otwarte', 'w trakcie') pozostają w bazie.

Odpowiedź DELETE FROM zadania; jest niepoprawna w tym kontekście, ponieważ brak warunku oznacza usunięcie wszystkich rekordów z tabeli. To typowy błąd na egzaminie: pominięcie WHERE skutkuje masowym skasowaniem danych.

Polecenia z TRUNCATE TABLE służą do szybkiego opróżnienia tabeli z danych, ale nie wybierają rekordów warunkiem. Dlatego TRUNCATE TABLE zadania; opróżniłoby całą tabelę, a forma TRUNCATE TABLE zadania WHERE status = 'zamknięte'; jest składniowo błędna w typowych dialektach SQL.

Wskazówka praktyczna: przed wykonaniem DELETE z warunkiem warto najpierw uruchomić zapytanie SELECT z tym samym WHERE, aby sprawdzić, które rekordy zostaną usunięte. Zmniejsza to ryzyko przypadkowej utraty danych.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Klauzula WHERE ogranicza usuwanie tylko do tych rekordów, które spełniają warunek. Bez WHERE polecenie DELETE usuwa wszystkie wiersze z tabeli, co zwykle jest niepożądane w zadaniach egzaminacyjnych i w praktyce administracyjnej.
Stosuje się DELETE z filtrem: DELETE FROM zadania WHERE status = 'zamknięte';. Warunek porównuje wartość w kolumnie status i usuwa wyłącznie rekordy pasujące do wskazanego tekstu.
Bo brak klauzuli WHERE oznacza usunięcie wszystkich rekordów z tabeli. Na egzaminie to częsty błąd wynikający z pominięcia filtru; w realnym systemie może to spowodować utratę całej listy zadań.
TRUNCATE TABLE opróżnia tabelę z danych w całości (bez wybierania rekordów warunkiem). DELETE może usuwać selektywnie, gdy użyjesz WHERE. W zadaniach o usuwaniu części danych zwykle właściwe jest DELETE.
W typowych systemach SQL nie: TRUNCATE dotyczy całej tabeli i nie obsługuje warunku WHERE. Jeśli potrzebujesz usunąć tylko część rekordów (np. konkretny status), użyj DELETE z odpowiednim filtrem.
Najpierw uruchom SELECT z identycznym warunkiem, np. SELECT * FROM zadania WHERE status = 'zamknięte';. To pozwala zobaczyć listę rekordów przed skasowaniem i zmniejsza ryzyko pomyłki.
Najczęstsze to: pominięcie WHERE (kasuje wszystko), użycie TRUNCATE zamiast DELETE przy warunku, literówka w wartości tekstowej oraz mylenie nazwy kolumny z nazwą tabeli. Warto czytać uważnie, czy pytanie dotyczy części danych.
Nie. DELETE usuwa rekordy (wiersze) z tabeli, ale nie usuwa samej tabeli ani jej struktury. Usunięcie tabeli wykonuje się innymi poleceniami (np. DROP), których nie należy mylić z DELETE.
Np. w systemach zarządzania zadaniami po archiwizacji, gdy utrzymuje się bazę w porządku i ogranicza liczbę starych rekordów. Często wykonuje się to cyklicznie jako operację utrzymaniową, zwykle po wcześniejszym eksporcie danych.
Ćwicz na przykładowej tabeli: dodawaj rekordy i wykonuj DELETE z różnymi warunkami WHERE. Naucz się rozpoznawać skutki braku WHERE oraz różnice między DELETE i TRUNCATE. Pomaga też nawyk: "najpierw SELECT, potem DELETE".
info

To pytanie poprawnie rozwiązuje 68% zdających egzamin. średnie

Eksperci podkreślają: "Poprawne jest polecenie DELETE FROM zadania WHERE status = 'zamknięte'; Usuwa ono tylko te rekordy z tabeli zadania, dla których kolumna status ma wartość 'zamknięte'."

Źródła:

  • PostgreSQL Documentation: DELETE — https://www.postgresql.org/docs/current/sql-delete.html (dostęp: 2026-02-27)
  • MySQL 8.0 Reference Manual: DELETE Statement — https://dev.mysql.com/doc/refman/8.0/en/delete.html (dostęp: 2026-02-27)
  • Microsoft Learn: DELETE (Transact-SQL) — https://learn.microsoft.com/en-us/sql/t-sql/statements/delete-transact-sql (dostęp: 2026-02-27)

Materiały:

  • Dokumentacja SQL wybranego silnika (sekcja o DELETE i WHERE)
  • Ćwiczenia praktyczne: tworzenie tabeli, wstawianie danych, usuwanie wierszy z warunkiem
  • Materiały o różnicach DELETE vs TRUNCATE (skutki, transakcje, możliwość cofnięcia)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego