Wskaż polecenie SQL dodające do istniejącej tabeli rosliny pole miesiacSiewu typu całkowitego z wartością domyślną 4
A.
ALTER TABLE rosliny ADD miesiacSiewu int DEFAULT 4;
B.
UPDATE rosliny SET miesiacSiewu = 4;
C.
ALTER TABLE rosliny ADD miesiacSiewu int VALUE 4;
D.
INSERT INTO rosliny (miesiacSiewu) VALUES (4);
Polecenie ALTER TABLE rosliny ADD miesiacSiewu int DEFAULT 4; jest właściwe, bo wykonuje dokładnie zmianę struktury istniejącej tabeli. ALTER TABLE służy do modyfikowania definicji tabeli, a ADD dodaje nową kolumnę. Nazwa miesiacSiewu określa nowe pole, typ int oznacza liczbę całkowitą, a DEFAULT 4 ustawia wartość domyślną, która będzie wpisywana automatycznie przy dodawaniu nowych rekordów, jeśli użytkownik nie poda innej wartości. W praktyce to bardzo przydatne, np. gdy większość roślin w bazie ma domyślnie miesiąc siewu równy 4, czyli kwiecień. Z mojego doświadczenia warto pamiętać, że DEFAULT nie jest tym samym co jednorazowe wpisanie danych do tabeli. To reguła zapisana w schemacie tabeli. W dobrych praktykach bazodanowych taka zmiana powinna być przemyślana, szczególnie gdy tabela ma już dane. W niektórych systemach SQL warto też dopisać ograniczenie NOT NULL, jeśli pole zawsze ma mieć wartość, ale w tym zadaniu wymagane było tylko dodanie kolumny typu całkowitego z wartością domyślną 4.
W tym pytaniu kluczowe jest rozróżnienie między zmianą struktury tabeli a operacjami na danych. Jeżeli trzeba dodać nowe pole do istniejącej tabeli, używa się instrukcji ALTER TABLE z klauzulą ADD. Samo ustawienie wartości w rekordach albo dopisanie nowego wiersza nie tworzy kolumny, i to jest dość częsta pułapka na sprawdzianach z SQL. Składnia z VALUE 4 wygląda trochę podobnie do VALUES z instrukcji INSERT, ale w definicji kolumny nie służy do ustawiania wartości domyślnej. Do tego stosuje się DEFAULT, bo jest to element definicji kolumny w schemacie bazy danych. UPDATE rosliny SET miesiacSiewu = 4; mogłoby zadziałać tylko wtedy, gdy kolumna miesiacSiewu już istnieje. Ta instrukcja modyfikuje wartości w istniejących rekordach, ale nie dodaje nowego pola do tabeli. INSERT INTO rosliny (miesiacSiewu) VALUES (4); też nie zmienia struktury tabeli, tylko próbuje dodać nowy rekord z podaną wartością w kolumnie miesiacSiewu. Jeśli takiej kolumny nie ma, pojawi się błąd. Moim zdaniem najprościej zapamiętać to tak: ALTER zmienia budowę tabeli, UPDATE zmienia istniejące dane, a INSERT dodaje nowe wiersze. W pracy z bazami danych to rozróżnienie jest naprawdę ważne, bo pomylenie tych instrukcji może skończyć się błędami w aplikacji albo przypadkową zmianą wielu rekordów.