Typy danych

Zanim przejdziemy do szerszego omówienia tworzenia tabel, omówimy najpierw typy danych, z których może być zbudowana tabela. Postaram się w jak najprostszy sposób wyjaśnić najbardziej używane typy – po więcej szczegółów zapraszam do oficjalnej dokumentacji MySQL.

Sprawdź więcej – dokumentacja MySQL o typach danych

Typy liczbowe

Typy całkowite

Typy te określają dane jako format liczbowy (warunki także są zapisane w tym formacie np. boolean to tinyint). W nawiasach podałem wielkość danych. Wyróżniamy:

  • TINYINT = 1 bajt (8 bit)
  • SMALLINT = 2 bajty (16 bit)
  • MEDIUMINT = 3 bajty (24 bit)
  • INT = 4 bajty (32 bit)
  • BIGINT = 8 bajtów (64 bit)

Co do ostatniego typu BIGINT – warto uważać na używanie na nim działań arytmetycznych – więcej znajdziesz w dokumentacji.

Przykład użycia: int(10) – liczba 10 określa ile cyfr ma się wyświetlać, w bazie przechowywana jest jednak oryginalna wartość JEDNAK ma to znaczenie tylko w przypadku użycia dodatkowego atrybutu ZEROFILL.

Typy zmiennoprzecinkowe

Jak sama nazwa wskazuje typy zmiennoprzecinkowe przechowują liczbę z wartością po przecinku. Zaliczamy do nich typy:

  • DECIMAL (precyzja, liczba miejsc po przecinku) – np. przy decimal(10,5) nasza liczba może mieć maksymalnie 10 cyfr, łącznie z tymi co znajdują się po przecinku. Maksymalnie po przecinku możemy mieć 5 cyfr, w przypadku większej ilości 5 liczba po przecinku będzie zaokrąglana. Maksymalna precyzja (ilość cyfr) to 65, a liczba cyfr po przecinku to 30.
  • DEC (to inaczej DECIMAL)

istnieją również FLOAT oraz DOUBLE, jednak zostaną one usunięte z MySQL 8.0.17 więc nie zamierzam dodawać ich tutaj do listy.

Typ bitowy

BIT = wielkość do 64-bit. Do zapisania liczby w takiej postaci musimy użyć litery b a następnie w apostrofach dodać reprezentację bitową takiej liczby.

np. b’111′ to dziesiętnie 7

W przypadku przypisania kolumnie wartość mniejszą niż ona określa, liczba zostanie wypełniona zerami po lewej stronie.

liczba bit(6) -> dodajemy wartość b’101′ -> otrzymamy b’000101′

Typy daty i czasu

  • DATE
  • TIME
  • DATETIME (dokładny czas, który się nie zmieni)
  • TIMESTAMP (czas może się zmienić w zależności od strefy czasowej)
  • YEAR

Używając typów daty i czasu, umieszczając wartości podajemy je w apostrofach z wyjątkiem typu YEAR. Warto zaznaczyć, że typ DATETIME nie zmienia danych w przypadku użycia innej strefy czasowej, natomiast typ TIMESTAMP tak.

Typy znakowe

Więcej informacji o typach znakowych znajdziesz tutaj.

Rodzaje:

  • CHAR (zawsze zajmuje tyle miejsca ile ustalono; długość od 0 do 255)
  • VARCHAR (zajmuje miejsce dynamicznie; długość od 0 do 65535)
  • BINARY (to samo co CHAR tylko dane są zapisywane binarnie)
  • VARBINARY (to samo co VARCHAR tylko dane są zapisywane binarnie)
  • BLOB (do dużych danych zapisywanych binarnie np. zdjęcia)
  • TEXT (do dużych danych zapisywanych tekstowo np. ten wpis na blogu)
  • ENUM (może wybrać jedno z określonego zestawu danych)
  • SET (możemy wybrać wiele z określonego zestawu danych)

CHAR używamy gdy dane zawsze będą miały tyle samo miejsca, natomiast VARCHAR gdy dane będą miały różną długość. Maksymalna długość CHAR to od 0 do 255 znaków – VARCHAR od 0 do 65535 znaków. BLOB oraz TEXT mają swoje rodzaje: TINYBLOB, BLOB, MEDIUMBLOB i LONGBLOB oraz TINYTEXT, TEXT, MEDIUMTEXT i LONGTEXT (ich wymiary zostały podane na zdjęciu poniżej)

Rozmiary z dokumentacji:

Różnica między polami ENUM a SET polega na tym, że ENUM to takie pola radio, możemy wybrać tylko jedną opcję z listy, natomiast SET to taki checkbox, możemy wybrać wiele opcji.

Pozostałe typy danych

Nie umieściłem tutaj wszystkich typów danych, ponieważ ten kurs ma nauczyć ciebie MySQL w stopniu podstawowym a nie zaawansowanym. Więcej informacji o typach danych znajdziesz tutaj.