
Aby móc samodzielnie tworzyć tabele, należy znać typy i zakresy danych, które będą przechowywane w poszczególnych kolumnach. Poniżej przedstawiono tabelę i wyjaśniono pewne rzeczy, które bywają istotne podczas projektowania tabeli w MySQL (różnice pomiędzy typami CHAR i VARCHAR oraz funkcja NOW() - obecny czas i data)...
Poniższa tabela prezentuje najpopularniejsze typy danych stosowane w MySQL:
| Typ | Rozmiar | Opis i zakres |
| CHAR(dł.) | Określony w nawiasie (bajty) | Pole tekstowe o stałej długości znaków, może przechowywać od 0 do 255 znaków. |
| VARCHAR(dł.) | Długość łańcucha +1 bajt | Pole tekstowe o zmiennej długości, od 0 do 255znaków. |
| TINYTEXT | Długość łańcucha +1 bajt | Łańcuch od 0 do 255 znaków. |
| TEXT | Długość łańcucha +2 bajty | Tekst o maksymalnej długości 65 535 znaków. |
| MEDIUMTEXT | Długość łancucha +3 bajty | Tekst o maksymalnej długości 16 777 215 znaków |
| LONGTEXT | Długość łańcucha +4 bajty | Tekst o maksymalnej długości 4 294 967 295 znaków |
| TINYINT(dł.) | 1 bajt | Liczby typu całkowitego (ang. integer). Zakres wynosi od -128 do 127 lub w przypadku unsigned od 0 do 255. |
| SMALLINT(dł.) | 2 bajty | Typ całkowity, liczby od -32 768 do 32 767 lub dodatnie od 0 do 65 535. |
| MEDIUMINT(dł.) | 3 bajty | Typ całkowity, liczby od -8 388 608 do 8 388 607, dodatnie od 0 do 16 777 215. |
| INT(dł.) | 4 bajty | Typ całkowity, liczby od -2 147 483 648 do 2 147 483 647, dodatnie od 0 do 4 294 967 295 |
| BIGINT(dł.) | 8 bajtów | Zakres od -9 223 372 036 854 775 808 do 9 223 372 036 854 775 807, dodatnie 0 do 18 446 744 073 709 551 615 |
| FLOAT | 4 bajty | Mała liczba rzeczywisty, zmiennoprzecinkowa |
| DOUBLE(dług , miejsc) | 8 bajtów | Duża liczba rzeczywista, zmiennoprzecinkowa |
| DECIMAL(dług, miejsca) | Długość +1 lub +2 bajty | Liczba typu DOUBLE przechowywana jako łańcuch (możliwość określenia stałej liczby miejsc po przecinku) |
| DATE | 3 bajty | Data: RRRR-MM-DD |
| DATETIME | 8 bajtów | Data: RRRR-MM-DD HH:MM:SS |
| TIMESTAMP | 4 bajty | Data: RRRRMMDDHHMMSS, zakres kończy się w roku 2037 (epoka Uniksa) |
| TIME | 3 bajty | Czas: HH:MM:SS |
| ENUM | 1 lub 2 bajty | Wyliczanie. Każdy rekord ENUM musi być unikatowy w danej kolumnie... |
| SET | 1, 2, 3, 4 lub 8 bajtów | Podobnie jak ENUM, ale bez dodatkowej rejstrykcji. |
Przykład utworzenia tabeli:
Oba typy określają tekst (ciąg znaków) o długości określonej w nawiasie. Maksymalna długość ciągu wynosi 255 znaków (łącznie ze spacjami) - jeżeli zostanie podany większy łańcuch, tekst zostanie obcięty.
Jest jednak istotna różnica pomiędzy tymi dwoma typami. Otóż posługując się typem CHAR trzeba mieć na uwadze, że kolumna będzie przechowywała dokładnie taką ilość znaków, jaka została określona w nawiasie - nawet jeśli zostanie podany ciąg krótszy (pozostałe miejsca zostaną zastąpione spacjami). W przypadku typu VARCHAR przechowywana jest długość podanego łańcucha + 1 bajt.
Dodatkowo przy odczytywaniu danych z kolumny typu CHAR niepotrzebne spacje są obcinane, natomiast w przypadku typu VARCHAR zbędne spacje są obcinane przy wstawianiu danych do kolumny.
Typ CHAR powinien być stosowany do przechowywania danych o stałej szerokości, mogą to być hasła (ciąg znaków + spacje na końcu), kody pocztowe, numery kont bankowych (26 cyfr) czy inne podobne. Typ VARCHAR powinien być stosowany tam, gdzie przechowywane dane mogą być dowolnej długości do 255 znaków - czyli odwrotnie do typu CHAR.
Należy też pamiętać, że typ VARCHAR będzie charakteryzował się mniejszym rozmiarem na dysku niż typ CHAR.
Jeżeli zaistnieje potrzeba wstawienia czasu i/lub daty chwili obecnej, można posłużyć się funkcją NOW(). Jest to jedna ze standardowych funkcji MySQL.
Format daty i czasu określamy typem danych kolumny - w zależności jaki format daty wybierzemy (patrz tabela), taki będzie zapisany za pomocą funkcji NOW() (więc nie musimy dbać o ustawienie dodatkowych parametrów tej funkcji).
Obecny czas i data mogą okazać się bardzo przydatne w wielu projektach dynamicznych stron WWW. Przykładem zastosowania mogą być daty:
A oto przykład zapisania obecnej daty i czasu:
Zauważ, że funkcja NOW() nie została objęta apostrofami.
Można także użyć polecenia UPDATE, np. do zaznaczenia daty modyfikacji.
Z innej beczki:
Chcesz być bogaty i szczęśliwy?