Dlaczego typy danych są ważne?
Typ danych to "kontrakt" lub zestaw reguł nałożony na kolumnę, który precyzyjnie określa, jaki rodzaj danych (np. liczba całkowita, tekst, data) może być w niej legalnie przechowywany. Jest to absolutna podstawa projektowania baz danych, kluczowa z trzech powodów:
Źródło: Lekcja 2 – Podstawowe typy danych
Kluczowe powody
Integralność i walidacja danych:
Typy danych to pierwsza linia obrony przed "śmieciowymi" danymi. Baza danych fizycznie odrzuci próbę wstawienia tekstu 'Jan' do kolumny zdefiniowanej jako INT. Podobnie typ DATE odrzuci niepoprawną datę, np. 2023-02-30.
Wydajność i optymalizacja:
Przechowywanie danych we właściwym formacie oszczędza miejsce i przyspiesza przetwarzanie. Liczba 100 zapisana jako INT zajmuje mniej miejsca i jest szybsza w obliczeniach niż zapisana jako tekst '100'.
Poprawność obliczeń:
Typ danych determinuje, jakie operacje można wykonać. Można obliczyć średnią z kolumny liczbowej, ale nie z tekstowej.
Główne kategorie
- Tekst (np. VARCHAR, CHAR)
- Liczby (np. INT, DECIMAL/NUMERIC)
- Daty (np. DATE, TIMESTAMP)
Typy tekstowe (ciągi znaków)
VARCHAR(n) — Variable-Length Character
Przechowuje tekst o zmiennej długości, maksymalnie do n znaków. Przykład: słowo 'Jan' w kolumnie VARCHAR(100) zajmie tylko 3 znaki na dysku (plus niewielki narzut).
CHAR(n) — Fixed-Length Character
Przechowuje tekst o stałej długości n znaków. Wstawienie 'Jan' do CHAR(10) spowoduje dopełnienie do 10 znaków (np. spacjami).
Typy liczbowe
INT (INTEGER)
Służy do przechowywania liczb całkowitych (bez części ułamkowej). Idealny dla identyfikatorów (ID), liczników, wieku.
DECIMAL(p, s) / NUMERIC
Przechowuje liczby o stałej precyzji — kluczowe dla wartości finansowych. p (precision) to łączna liczba cyfr, s (scale) to liczba cyfr po przecinku.
Przykład: DECIMAL(10, 2) -- przechowa kwoty do 99,999,999.99Do przechowywania pieniędzy powinno się używać DECIMAL/NUMERIC, ponieważ typy zmiennoprzecinkowe (FLOAT, REAL) są nieprecyzyjne i podatne na błędy zaokrągleń.
Typy daty i czasu
DATE
Przechowuje tylko datę (rok, miesiąc, dzień), np. 2024-10-25. Idealny dla daty urodzenia, daty zatrudnienia.
TIMESTAMP / DATETIME
Przechowuje datę oraz czas (często z precyzją do milisekund), np. 2024-10-25 14:30:15.123. Idealny do logowania zdarzeń (data utworzenia rekordu, data zakupu).
Pojęcie wartości NULL (brak wartości)
NULL to specjalny znacznik oznaczający „brak wartości”, „wartość nieznaną” lub „wartość niedotyczącą”. NULL nie jest wartością samą w sobie.
- NULL ≠ 0 — zero to konkretna, znana liczba.
- NULL ≠ '' — pusty ciąg to konkretny tekst o długości 0.
- Przykład praktyczny: jeśli uczeń nie przystąpił jeszcze do egzaminu, wynik w kolumnie WynikEgzaminu powinien być NULL, a nie 0 (0 oznaczałoby, że uzyskał 0 punktów).
Zrozumienie NULL jest kluczowe dla poprawnego filtrowania, agregacji i łączenia tabel.