KWALIFIKACJA INF3 - PAŹDZIERNIK 2016

PYTANIE NR 15.
Którą klauzulę powinno się zastosować w poleceniu CREATE TABLE języka SQL, aby dane pole rekordu nie było puste?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Klauzula NOT NULL w definicji kolumny w CREATE TABLE wymusza, aby wiersz zawsze zawierał w tej kolumnie jakąś wartość (nie może być NULL). DEFAULT jedynie podaje wartość domyślną, CHECK ustala warunek, a NULL oznacza dopuszczenie braku wartości.

Pełne wyjaśnienie:

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.

Dodatkowe pytania

Dodatkowe pytania (FAQ):

NOT NULL to ograniczenie (constraint) kolumny, które zabrania zapisu wartości NULL w tej kolumnie.

Dzięki temu dane "obowiązkowe" (np. login) muszą być uzupełnione przy INSERT/UPDATE.

NULL oznacza brak wartości (nieznane/niepodane), a pusty napis to konkretna wartość tekstowa: "".

NOT NULL blokuje tylko NULL, ale nie blokuje pustego napisu — to wymaga dodatkowej walidacji, np. CHECK.

Dodajesz NOT NULL w definicji kolumny, np. kolumna_typ NOT NULL.

W praktyce stosuje się to dla pól wymaganych przez logikę aplikacji, aby baza wymuszała kompletność danych.

Nie. DEFAULT tylko podaje wartość domyślną, gdy nie przekażesz wartości w INSERT.

Bez NOT NULL kolumna nadal może dopuszczać NULL (zależnie od DBMS i sposobu wstawienia danych), więc obowiązkowość nie jest gwarantowana.

CHECK wymusza spełnienie warunku logicznego dla wartości w kolumnie (lub wielu kolumn).

Przykładowo może sprawdzać zakres liczby lub format. Nie jest jednak podstawową klauzulą do samego zakazu NULL — od tego jest NOT NULL.

Gdy pole jest wymagane biznesowo: np. identyfikator, nazwa użytkownika, data utworzenia, klucz obcy.

NOT NULL chroni dane nawet wtedy, gdy walidacja po stronie frontendu lub API zawiedzie.

W praktyce nie: klucz główny identyfikuje jednoznacznie rekord, więc musi mieć wartość.

W wielu systemach DBMS definicja klucza głównego wiąże się z wymuszeniem niepustości, ale na egzaminie warto kojarzyć to z zasadą "klucze są obowiązkowe".

Najczęściej mylą NULL z pustym napisem lub zerem, albo wybierają DEFAULT, bo "coś ustawia".

Pomaga prosta reguła: NOT NULL = zakaz braku wartości, DEFAULT = wartość domyślna, CHECK = warunek.

Tak, zwykle wykonuje się to przez zmianę definicji kolumny (ALTER TABLE), ale warunkiem jest brak istniejących wartości NULL w tej kolumnie.

W praktyce często najpierw uzupełnia się dane, a dopiero potem wprowadza ograniczenie.

Najpewniej przez metadane/systemowe widoki danego DBMS (np. informacje o kolumnach w katalogu systemowym) lub narzędzia administracyjne.

W praktyce administrator i programista weryfikują schemat, zanim połączą go z formularzami w aplikacji.

info

To pytanie poprawnie rozwiązuje 80% zdających egzamin. średnio łatwe

Według specjalistów z branży: "Klauzula NOT NULL w definicji kolumny w CREATE TABLE wymusza, aby wiersz zawsze zawierał w tej kolumnie jakąś wartość (nie może być NULL)."

Źródła:

  • PostgreSQL Documentation: CREATE TABLE — Column Constraints (NOT NULL), https://www.postgresql.org/docs/current/sql-createtable.html - accessed 2026-02-18
  • MySQL 8.0 Reference Manual: CREATE TABLE Statement — NOT NULL and DEFAULT, https://dev.mysql.com/doc/refman/8.0/en/create-table.html - accessed 2026-02-18
  • SQLite Documentation: CREATE TABLE — NOT NULL and DEFAULT clause, https://www.sqlite.org/lang_createtable.html - accessed 2026-02-18

Materiały:

  • Dokumentacja SQL wybranego systemu (np. PostgreSQL/MySQL) – sekcja CREATE TABLE i constraints
  • Notatki/ściąga: różnice NULL vs '' vs 0 oraz kiedy stosować NOT NULL
  • Ćwiczenia praktyczne: tworzenie tabel z NOT NULL, DEFAULT i CHECK oraz wstawianie danych testowych

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego