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

Słowa kluczowe: ALTER TABLE w SQL DDL w SQL VARCHAR w SQL

Aby zmienić maksymalną długość pola imie w tabeli klienci na 30 znaków, należy użyć w języku SQL następującego kodu

A. CHANGE TABLE klienci TO COLUMN imie SET CHAR(30);
B. CHANGE TABLE klienci MODIFY imie CHAR(30);
C. ALTER TABLE klienci CHANGE imie TEXT;
D. ALTER TABLE klienci MODIFY COLUMN imie VARCHAR(30);

Pytanie z egzaminu CKE, czerwiec 2020 (arkusz E.14-SG-20.06).

Instrukcja ALTER TABLE klienci MODIFY COLUMN imie VARCHAR(30); jest właściwa, bo używa polecenia ALTER TABLE, czyli standardowego mechanizmu do zmiany struktury istniejącej tabeli. W tym przypadku tabela to klienci, kolumna to imie, a nowy typ danych to VARCHAR(30), czyli tekst o zmiennej długości maksymalnie do 30 znaków. To bardzo typowa składnia w MySQL i MariaDB. Słowo MODIFY COLUMN mówi bazie: zostaw tę samą kolumnę, ale zmień jej definicję. Moim zdaniem to jedna z tych komend SQL, które naprawdę warto znać praktycznie, bo w projektach często okazuje się, że pole na imię, nazwę firmy albo kod produktu jest za krótkie. Dobra praktyka jest taka, żeby przed taką zmianą sprawdzić istniejące dane, np. SELECT MAX(CHAR_LENGTH(imie)) FROM klienci;, szczególnie gdy zmniejszamy długość pola. Warto też uważać na NULL, DEFAULT, indeksy i kodowanie znaków, bo pełna definicja kolumny czasem powinna je zachować. VARCHAR jest tu lepszym wyborem niż CHAR, bo imiona mają różną długość, więc baza nie musi trzymać stałej liczby znaków dla każdego rekordu.
W niepoprawnych propozycjach miesza się kilka pojęć z SQL, które na pierwszy rzut oka wyglądają podobnie, ale w praktyce znaczą co innego albo w ogóle nie są poprawną składnią. Do zmiany struktury istniejącej tabeli używa się ALTER TABLE, a nie konstrukcji typu CHANGE TABLE. Takie zapisanie polecenia sugeruje, jakby istniała osobna komenda do zmiany tabeli, ale w popularnych systemach baz danych, takich jak MySQL czy MariaDB, to właśnie ALTER TABLE jest podstawą modyfikacji schematu. Słowo CHANGE też istnieje w MySQL, ale działa inaczej: stosuje się je jako część ALTER TABLE i zwykle podaje się starą nazwę kolumny, nową nazwę kolumny oraz pełną definicję typu. Samo CHANGE TABLE klienci MODIFY imie CHAR(30) nie tworzy sensownej instrukcji SQL. Drugi częsty błąd to mylenie CHAR(30) z VARCHAR(30). CHAR ma stałą długość, więc lepiej pasuje do danych zawsze jednakowej długości, na przykład kodów o ustalonym formacie. Imię klienta zwykle ma długość zmienną, więc VARCHAR jest bardziej naturalny i oszczędniejszy. Użycie TEXT też nie spełnia warunku, bo typ TEXT przechowuje dłuższy tekst i nie oznacza maksymalnej długości 30 znaków w taki prosty sposób. Poza tym zapis ALTER TABLE klienci CHANGE imie TEXT jest niepełny dla typowej składni MySQL, bo przy CHANGE trzeba podać również nazwę kolumny po zmianie. Typowy błąd myślowy polega tu na kojarzeniu pojedynczych słów kluczowych z języka SQL bez znajomości ich dokładnej kolejności i kontekstu. W SQL niestety kolejność ma spore znaczenie, baza nie domyśli się intencji tak jak człowiek.

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.