Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Bazy danych

Wskaż różnicę pomiędzy poleceniami DROP TABLE i TRUNCATE TABLE.

A. DROP TABLE usuwa tabelę, a TRUNCATE TABLE usuwa wszystkie dane, pozostawiając pustą tabelę.
Dobrze. DROP usuwa tabelę ze strukturą, a TRUNCATE tylko wszystkie wiersze.
B. Obydwa polecenia usuwają tabelę wraz zawartością, ale tylko polecenie TRUNCATE TABLE może być cofnięte.
Źle. Po TRUNCATE tabela istnieje dalej, a dane przywraca się tylko z kopii zapasowej.
C. DROP TABLE usuwa tabelę, a TRUNCATE TABLE modyfikuje w niej dane spełniające warunek.
Źle. TRUNCATE nie przyjmuje warunku; zmianę wybranych danych robi UPDATE.
D. Obydwa polecenia usuwają jedynie zawartość tabeli, ale tylko polecenie DROP TABLE może być cofnięte.
Źle. DROP TABLE usuwa też strukturę, a w MySQL żadnego z poleceń nie cofa ROLLBACK.

Pytanie z egzaminu CKE, czerwiec 2020 (arkusz EE.09-SG-20.06).

DROP TABLE usuwa całą tabelę: jej dane i strukturę, czyli definicję kolumn, indeksy i klucze. Po nim tabela przestaje istnieć i odwołanie do niej kończy się błędem. TRUNCATE TABLE usuwa wszystkie wiersze, ale zostawia pustą tabelę z niezmienioną strukturą, gotową na nowe dane.

W MySQL TRUNCATE TABLE dodatkowo zeruje licznik AUTO_INCREMENT, więc nowe rekordy znów dostaną numery od 1. Różni się tym od DELETE FROM tabela;, które też kasuje wszystkie wiersze, ale robi to wiersz po wierszu i licznika nie zeruje. Do zapamiętania: DROP - nie ma tabeli, TRUNCATE - jest pusta tabela.

Kluczem jest odróżnienie usunięcia tabeli od jej opróżnienia. Opis, w którym TRUNCATE TABLE zmienia dane spełniające warunek, pasuje do UPDATE z klauzulą WHERE. TRUNCATE nie przyjmuje żadnego warunku i zawsze usuwa wszystkie wiersze.

Twierdzenie, że oba polecenia usuwają tylko zawartość, jest błędne w połowie: DROP TABLE kasuje także strukturę. Ponadto w MySQL żadnego z nich nie cofa się poleceniem ROLLBACK, bo oba należą do poleceń DDL, które same zatwierdzają transakcję.

Z tego samego powodu odpada opis, w którym oba polecenia usuwają tabelę, a cofnąć da się TRUNCATE TABLE. Po TRUNCATE tabela nadal istnieje, tylko jest pusta, a przywrócenie danych wymaga kopii zapasowej. Prawidłowa różnica: DROP TABLE usuwa tabelę, a TRUNCATE TABLE usuwa wszystkie dane, pozostawiając pustą tabelę.

Dlatego przed każdym z tych poleceń robi się kopię bazy.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.