KWALIFIKACJA INF3 - CZERWIEC 2018

PYTANIE NR 16.
Tworząc tabelę w języku SQL, zdefiniowano dla kolumny klucz główny. Aby zabezpieczyć ją przed wstawieniem wartości pustej, należy zastosować atrybut
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Atrybut NOT NULL wymusza, aby w danej kolumnie nie dało się zapisać wartości NULL ("pustej" w sensie bazodanowym). Dzięki temu podczas INSERT lub UPDATE trzeba podać rzeczywistą wartość. UNIQUE dotyczy unikalności, a DEFAULT tylko wartości domyślnej.

Pełne wyjaśnienie:

W SQL "wartość pusta" w rozumieniu baz danych oznacza zwykle wartość NULL, czyli "brak danych", a nie pusty napis. Jeśli kolumna ma być obowiązkowa, należy nałożyć ograniczenie NOT NULL. To ograniczenie powoduje, że próba wstawienia rekordu bez wartości w tej kolumnie (albo jawnie z NULL) zostanie odrzucona przez system bazy danych.

Dlaczego poprawne jest NOT NULL?

  • NOT NULL wprost definiuje, że kolumna nie może przyjmować NULL, więc skutecznie "zabezpiecza" przed brakiem wartości.
  • Jest to typowy mechanizm integralności encji i spójności danych w tabelach (np. dla identyfikatorów, pól wymaganych w formularzach).

Dlaczego pozostałe odpowiedzi są niepoprawne?

  • UNIQUE pilnuje, aby wartości w kolumnie (lub zestawie kolumn) się nie powtarzały. Nie jest to równoznaczne z zakazem NULL; w zależności od DBMS unikalność może dopuszczać wartości NULL (często traktowane specjalnie).
  • DEFAULT ustawia wartość domyślną, gdy wstawiając rekord nie podasz wartości. Samo DEFAULT nie jest "blokadą" przed NULL: jeśli ktoś jawnie wstawi NULL (i kolumna na to pozwala), rekord może zostać przyjęty.
  • NULL nie jest zabezpieczeniem, tylko informacją, że kolumna dopuszcza brak wartości.

W praktyce, projektując tabelę, często łączy się różne ograniczenia: PRIMARY KEY (identyfikacja wiersza), NOT NULL (wymagalność danych) oraz ewentualnie UNIQUE (unikalność innych atrybutów, np. e-mail). Na egzaminie warto pamiętać: unikalność ≠ obowiązkowość.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
NOT NULL to ograniczenie kolumny, które zakazuje zapisu wartości NULL (braku danych). Dzięki temu każda operacja INSERT lub UPDATE musi podać realną wartość dla tej kolumny, inaczej DBMS zgłosi błąd.
Klucz główny ma jednoznacznie identyfikować rekord. Wartość NULL oznacza "brak wartości", więc nie może identyfikować wiersza. W wielu systemach DBMS PRIMARY KEY implikuje zakaz NULL, ale na egzaminie i w praktyce rozróżnia się pojęcia: klucz i ograniczenie NOT NULL.
Nie. UNIQUE pilnuje braku duplikatów, ale nie zawsze oznacza zakaz NULL. W wielu DBMS wartości NULL są traktowane specjalnie i mogą wystąpić wielokrotnie. Jeśli kolumna ma być obowiązkowa, stosuje się NOT NULL.
NULL oznacza brak danych/nieznaną wartość, a nie "zero" ani pusty napis. To stan logiczny "nie mam informacji". Dlatego porównania typu = NULL nie działają jak zwykłe porównania; używa się IS NULL oraz IS NOT NULL.
DEFAULT ustawia wartość domyślną, gdy w INSERT pominięto kolumnę. Nie jest to jednak blokada przed NULL: jeśli ktoś jawnie poda NULL (i kolumna na to pozwala), domyślna wartość może nie zostać użyta. Do wymagalności służy NOT NULL.
W definicji kolumny dopisuje się ograniczenie, np. kolumna INT NOT NULL. Składnia może się różnić szczegółami między DBMS, ale idea jest taka sama: po typie danych umieszcza się NOT NULL, aby wymusić podanie wartości.
NOT NULL stosuje się, gdy pole jest obowiązkowe biznesowo, np. identyfikator, data utworzenia, status zamówienia. Dzięki temu spójność danych jest pilnowana przez bazę, a nie tylko przez aplikację. To ogranicza liczbę błędów i wyjątków w kodzie.
Używa się narzędzi administracyjnych DBMS albo zapytań do metadanych (np. widoków systemowych). Konkretny sposób zależy od silnika (PostgreSQL/MySQL/SQLite). Na egzaminie ważniejsze jest rozumienie, że NOT NULL jest częścią definicji schematu tabeli.
Bo w aplikacjach często "pustka" wygląda tak samo (np. puste pole formularza). W bazie NULL ma semantykę "brak wartości", a pusty napis to nadal wartość typu tekstowego. To wpływa na walidację, sortowanie i warunki w zapytaniach, więc warto rozróżniać te pojęcia.
Najczęstsza pułapka to wybór UNIQUE zamiast NOT NULL (unikalność to nie obowiązkowość). Druga to przekonanie, że DEFAULT zawsze "wypełni" pole, nawet gdy ktoś poda NULL. Warto zapamiętać: zakaz NULL = NOT NULL.
info

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

W praktyce zawodowej kluczowe jest to, że atrybut NOT NULL wymusza, aby w danej kolumnie nie dało się zapisać wartości NULL ("pustej" w sensie bazodanowym).

Źródła:

  • PostgreSQL Documentation: "CREATE TABLE" (Constraints, NOT NULL) https://www.postgresql.org/docs/current/sql-createtable.html - accessed 2026-03-01
  • MySQL 8.0 Reference Manual: "CREATE TABLE Statement" (Column constraints, NOT NULL) https://dev.mysql.com/doc/refman/8.0/en/create-table.html - accessed 2026-03-01
  • SQLite Documentation: "CREATE TABLE" (NOT NULL constraint) https://www.sqlite.org/lang_createtable.html - accessed 2026-03-01

Materiały:

  • Dokumentacja używanego systemu DBMS (np. PostgreSQL/MySQL) – rozdział o CREATE TABLE i constraints
  • Materiały kursowe z podstaw projektowania relacyjnych baz danych
  • Zadania praktyczne: tworzenie tabel z różnymi ograniczeniami i testowanie INSERT

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego