Egzamin zawodowyPortal części pisemnej

INF.04 · pytanie 676

Zastosowanie typu DECIMAL języka MySQL wymaga wcześniejszego zdefiniowania długości (liczby cyfr) przed przecinkiem oraz liczby cyfr po przecinku. Jest to zapis

  1. Alogiczny
  2. Bzmiennoprzecinkowy
  3. Cłańcuchowy
  4. DstałoprzecinkowyPoprawna

Wyjaśnienie

Typ DECIMAL w MySQL jest typem stałoprzecinkowym, czyli przechowuje liczby z ustaloną precyzją i ustaloną liczbą miejsc po przecinku. W praktyce zapisuje się go najczęściej jako DECIMAL(M,D), na przykład DECIMAL(10,2). Formalnie M oznacza łączną liczbę cyfr, a D liczbę cyfr po przecinku, więc dla DECIMAL(10,2) można zapisać maksymalnie 8 cyfr przed przecinkiem i 2 po przecinku. To ważny szczegół, bo czasem mówi się skrótowo, że definiujemy cyfry przed i po przecinku, ale w składni MySQL podaje się precyzję całkowitą oraz skalę. Ten typ jest bardzo przydatny przy pieniądzach, cenach, podatkach, rabatach czy stanach magazynowych, gdzie błąd zaokrąglenia byłby problemem. Moim zdaniem to jedna z tych rzeczy w SQL, które naprawdę warto kojarzyć praktycznie: do kwot używamy DECIMAL, a nie FLOAT. Dobre praktyki bazodanowe zalecają stosowanie typów dokładnych dla danych finansowych, bo silnik bazy nie powinien losowo zmieniać końcówek groszy przez reprezentację binarną liczby.