🎯 Cele lekcji

🔢

1. Typy liczbowe

TypOpisZakres / rozmiarPrzykład użycia
TINYINTBardzo mała liczba całkowita–128 do 127status (0/1)
SMALLINTMała liczba całkowita–32 768 do 32 767rok_produkcji
INTStandardowa liczba całkowita–2 mld do 2 mldid, wiek, ilość
BIGINTDuża liczba całkowita–9,2×10¹⁸numer_pesel, transakcje
FLOATLiczba zmiennoprzecinkowa7 cyfr znaczącychtemperatura, współrzędne
DOUBLEPodwójna precyzja15 cyfr znaczącychobliczenia naukowe
DECIMAL(p,s)Liczba dziesiętna dokładnazdefiniowana przez p,scena (10,2), VAT
Do cen i kwot finansowych zawsze używaj DECIMAL, nie FLOAT! Float może wprowadzać błędy zaokrąglenia.
📝

2. Typy tekstowe

TypOpisMaks. długośćPrzykład użycia
CHAR(n)Tekst o stałej długości n255 znakówkod_pocztowy CHAR(6)
VARCHAR(n)Tekst o zmiennej długości (do n)65 535 znakówimie VARCHAR(50)
TEXTDługi tekst65 535 znakówopis, treść artykułu
MEDIUMTEXTBardzo długi tekst16 MBtreść książki
LONGTEXTEkstremalnie długi tekst4 GBkod źródłowy, logi
ENUMLista dozwolonych wartości65 535 opcjiplec ENUM('M','K')
CHAR zajmuje zawsze n bajtów (uzupełnia spacjami), VARCHAR — tylko tyle, ile potrzeba + 1–2 bajty na długość. Używaj VARCHAR dla nazw, CHAR dla kodów o stałej długości.
📅

3. Typy dat i czasu

TypFormatZakresPrzykład użycia
DATERRRR-MM-DD1000-01-01 do 9999-12-31data_urodzenia
TIMEGG:MM:SS-838:59:59 do 838:59:59czas_trwania
DATETIMERRRR-MM-DD GG:MM:SS1000-01-01 do 9999data_zamowienia
TIMESTAMPRRRR-MM-DD GG:MM:SS1970 do 2038data_modyfikacji
YEARRRRR1901 do 2155rok_wydania
TIMESTAMP jest zależny od strefy czasowej serwera i ma ograniczony zakres (do 2038). Dla dat historycznych używaj DATETIME.
🎛️

4. Pozostałe typy i atrybuty kolumn

TypOpis
BOOLEAN / TINYINT(1)Wartość logiczna: TRUE (1) lub FALSE (0)
BLOBDane binarne (zdjęcia, pliki)
JSONDane w formacie JSON (MySQL 5.7+)

Ważne atrybuty kolumn

AtrybutZnaczenie
NOT NULLKolumna musi mieć wartość (nie może być pusta)
NULLKolumna może być pusta (domyślnie)
DEFAULT wartośćWartość domyślna gdy nie podano innej
AUTO_INCREMENTAutomatyczne zwiększanie wartości (dla PK)
UNIQUEWartości muszą być unikalne w kolumnie
UNSIGNEDTylko wartości nieujemne (dla liczb)

Przykład definicji tabeli

CREATE TABLE pracownicy (
  id_pracownika  INT           AUTO_INCREMENT PRIMARY KEY,
  imie           VARCHAR(50)   NOT NULL,
  nazwisko       VARCHAR(80)   NOT NULL,
  email          VARCHAR(120)  UNIQUE NOT NULL,
  data_urodzenia DATE          NULL,
  wynagrodzenie  DECIMAL(10,2) NOT NULL DEFAULT 0.00,
  aktywny        BOOLEAN       DEFAULT TRUE,
  data_zatrud    TIMESTAMP     DEFAULT CURRENT_TIMESTAMP
);
✏️

Zadania interaktywne

Zadanie 1Dobierz typ danych

Dla każdego atrybutu wybierz najlepszy typ danych:

Cena produktu (np. 29.99)
Data urodzenia
Opis produktu (długi tekst)
Liczba sztuk w magazynie
Czy użytkownik jest aktywny
Zadanie 2Quiz — atrybuty kolumn

Pytanie: Które stwierdzenie dotyczące AUTO_INCREMENT jest PRAWDZIWE?

  • Można go użyć na dowolnej kolumnie tekstowej
  • Automatycznie zwiększa wartość przy każdym nowym rekordzie; używany zazwyczaj z PRIMARY KEY
  • Działa tylko z typem DECIMAL
  • Uniemożliwia wstawienie rekordów ręcznie
Zadanie 3Uzupełnij definicję tabeli

Uzupełnij brakujące typy danych (wpisz w kratki):

CREATE TABLE ksiazki (
  id_ksiazki   AUTO_INCREMENT PRIMARY KEY,
  tytul        NOT NULL,
  rok_wydania ,
  cena         NOT NULL,
  dostepna     DEFAULT TRUE
);

📌 Zapamiętaj