KWALIFIKACJA INF3 - STYCZEŃ 2019

PYTANIE NR 25.
Aby w tworzonej w języku SQL tabeli praca dodać w kolumnie stawka warunek, że musi przyjmować rzeczywiste wartości dodatnie mniejsze od 50, należy użyć zapisu
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawny zapis używa ograniczenia CHECK z warunkami połączonymi AND: stawka > 0 i jednocześnie stawka < 50. Dzięki temu baza dopuści tylko dodatnie wartości mniejsze od 50. OR przepuszczałby zbyt wiele przypadków, BETWEEN obejmuje 0 i 50, a IN ogranicza do dwóch liczb.

Pełne wyjaśnienie:

Ograniczenie CHECK służy do pilnowania integralności danych: przy INSERT i UPDATE serwer bazy odrzuci rekord, jeśli wyrażenie logiczne w CHECK nie będzie spełnione.

Wymaganie z treści brzmi: wartości rzeczywiste, dodatnie oraz mniejsze od 50. To oznacza ścisły przedział (0, 50), czyli warunki: stawka > 0 oraz stawka < 50.

Dlatego poprawny jest zapis CHECK (stawka>0 AND stawka<50.00). Operator AND wymusza spełnienie obu nierówności jednocześnie, więc 25.5 przejdzie, a 0, 50 i 60 zostaną odrzucone.

  • CHECK (stawka>0 OR stawka<50.00) jest logicznie zbyt "luźny": wystarczy spełnić jeden warunek. Każda liczba ujemna spełnia stawka < 50, a każda liczba duża dodatnia spełnia stawka > 0, więc reguła praktycznie nie ogranicza danych.
  • CHECK (stawka IN (0, 50.00)) nie opisuje zakresu, tylko zbiór dwóch dokładnych wartości; dodatkowo zawiera 0 i 50, które są zakazane przez wymóg "dodatnie" i "mniejsze od 50".
  • CHECK (stawka BETWEEN 0 AND 50.00) bywa pułapką, bo BETWEEN jest inkluzywny: dopuszcza 0 oraz 50. To nie spełnia ścisłych nierówności (>0 i <50).

Wskazówka egzaminacyjna: zawsze sprawdź wartości brzegowe (tu: 0 i 50). To najszybciej ujawnia, czy użyty operator zakresu nie włącza końców przedziału.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
CHECK to ograniczenie integralności, które wymusza spełnienie warunku logicznego dla wartości w kolumnie lub w całym wierszu. Przy INSERT i UPDATE baza odrzuca dane, jeśli warunek w CHECK nie jest spełniony.
Użyj dwóch nierówności połączonych operatorem AND, np. CHECK (stawka > 0 AND stawka < 50). AND oznacza, że muszą być spełnione oba warunki jednocześnie, czyli wartości są z przedziału (0, 50).
OR oznacza, że wystarczy spełnić jeden z warunków. Dla ograniczenia zakresu to błąd, bo np. liczba ujemna spełnia warunek "< 50", a liczba 60 spełnia "> 0". AND wymusza spełnienie obu nierówności naraz.
Tak. BETWEEN jest zazwyczaj operatorem inkluzywnym, czyli obejmuje oba końce zakresu. Zapis BETWEEN 0 AND 50 dopuszcza 0 oraz 50, więc nie nadaje się do wymagań typu > 0 i < 50.
Najczęstsze pomyłki to: zamiana AND na OR, użycie BETWEEN mimo wymogu ścisłych nierówności, oraz traktowanie IN jako "zakresu". Warto zawsze przetestować przypadki brzegowe (np. 0 i 50), aby szybko wykryć błąd.
Idea jest wspólna (warunek ma być spełniony), ale szczegóły mogą zależeć od silnika bazy i wersji. Na egzaminie najważniejsze jest rozumienie logiki wyrażenia w CHECK oraz operatorów (>, <, AND, OR, BETWEEN) w typowych dialektach SQL.
CHECK jest dobry, gdy reguła ma obowiązywać zawsze, niezależnie od tego, kto zapisuje dane (aplikacja, import, skrypt). Dzięki temu baza sama blokuje błędne wartości. Walidacja w aplikacji nadal bywa potrzebna dla lepszych komunikatów dla użytkownika.
Taki warunek dopuszcza tylko wartości z podanego zbioru, czyli dokładnie 0 albo 50.00. Nie jest to ograniczenie "od-do", tylko wybór z listy. Dlatego nie spełnia wymogu "dodatnie mniejsze od 50" i nie pozwala na wartości pośrednie, np. 25.5.
FLOAT przechowuje liczby zmiennoprzecinkowe, ale może wprowadzać zaokrąglenia binarne. W praktyce dla kwot i stawek często stosuje się typy dziesiętne (np. DECIMAL/NUMERIC). W tym pytaniu kluczowa jest składnia CHECK i logika warunku, nie dobór typu.
Zrób szybki test myślowy na 4 wartościach: jedna poprawna (np. 25), dwie brzegowe (0 i 50) oraz jedna wyraźnie błędna (np. -1 lub 60). Jeśli warunek przepuszcza 0 albo 50 przy ścisłych nierównościach, albo przepuszcza -1/60 przez OR, to jest niepoprawny.
info

Około 46% zdających odpowiada poprawnie na to pytanie. trudne

Eksperci podkreślają: "Poprawny zapis używa ograniczenia CHECK z warunkami połączonymi AND: stawka &gt; 0 i jednocześnie stawka &lt; 50."

Źródła:

  • PostgreSQL Documentation: "CHECK Constraints" (DDL / Constraints) https://www.postgresql.org/docs/current/ddl-constraints.html (dostęp: 2026-02-27)
  • Microsoft Learn: SQL Server "CHECK Constraints" https://learn.microsoft.com/en-us/sql/relational-databases/tables/primary-and-foreign-key-constraints?view=sql-server-ver16 (sekcja o CHECK) (dostęp: 2026-02-27)
  • MySQL 8.0 Reference Manual: "CHECK Constraints" https://dev.mysql.com/doc/refman/8.0/en/create-table-check-constraints.html (dostęp: 2026-02-27)

Materiały:

  • Dokumentacja DBMS o ograniczeniach CHECK (np. PostgreSQL, MySQL, SQL Server)
  • Materiały kursowe SQL: CREATE TABLE i constraints
  • Zadania treningowe: projektowanie tabel z ograniczeniami integralności

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego