W SQL wartość NULL oznacza "brak wartości" (nie "zero" i nie "pusty napis"). Jeżeli w projektowanym schemacie bazy danych chcesz, aby dana kolumna była obowiązkowa i nie mogła pozostać nieuzupełniona, w poleceniu CREATE TABLE stosuje się ograniczenie NOT NULL przy definicji tej kolumny.
Dlaczego NOT NULL jest poprawne?
NOT NULL powoduje, że każda próba wstawienia wiersza (INSERT) lub zmiany wartości (UPDATE) na NULL zakończy się błędem. Dzięki temu baza wymusza kompletność danych niezależnie od tego, czy aplikacja (formularz, API) prawidłowo waliduje dane po swojej stronie.
Dlaczego pozostałe odpowiedzi są niepoprawne?
- CHECK – służy do walidacji warunku logicznego, np. zakresu liczbowego lub formatu. Można nim pośrednio wykluczać pewne przypadki, ale w typowym ujęciu pytania o "nie może być puste (NULL)" standardową i najprostszą klauzulą jest NOT NULL.
- DEFAULT – ustawia wartość domyślną, gdy w INSERT nie podasz wartości kolumny. Nie jest to równoznaczne z zakazem NULL: w wielu systemach nadal możesz jawnie wstawić NULL (jeśli kolumna nie ma NOT NULL) albo w ogóle pominąć kolumnę w inny sposób. DEFAULT nie zastępuje obowiązkowości.
- NULL – to nie klauzula wymuszająca, tylko informacja, że kolumna dopuszcza NULL (czyli może pozostać bez wartości). W kontekście pytania jest więc odpowiedzią przeciwną do wymaganej.
Wskazówka egzaminacyjna: gdy w treści widzisz "pole nie może być puste / obowiązkowe", myśl o NOT NULL. Gdy widzisz "wartość domyślna", myśl o DEFAULT. Gdy widzisz "warunek, zakres, reguła", myśl o CHECK.