Czy w definicjach tabel MySQL jest coś pomiędzy INT(5)
i SMALLINT(5)
? A może oba reprezentują ten sam rozmiar?
An int
i smallint
mają różne rozmiary, a co za tym idzie zakresy. (5)
To smallint(5)
czy int(5)
nazywa się „typ liczbowy atrybut” i oznacza „szerokość wyświetlania” w tej dziedzinie,
MySQL obsługuje rozszerzenie do opcjonalnego określania szerokości wyświetlania całkowitych typów danych w nawiasach następujących po podstawowym słowie kluczowym dla tego typu. Na przykład
INT(4)
określaINT
szerokość z czterema cyframi. Ta opcjonalna szerokość wyświetlania może być używana przez aplikacje do wyświetlania wartości całkowitych o szerokości mniejszej niż szerokość określona dla kolumny, wypełniając je spacjami. (Oznacza to, że ta szerokość jest obecna w metadanych zwróconych z zestawami wyników. To, czy zostanie użyta, czy nie, zależy od aplikacji).W połączeniu z opcjonalnym (niestandardowym) atrybutem
ZEROFILL
domyślne wypełnienie spacji jest zastępowane zerami. Na przykład dla kolumny zadeklarowanej jakoINT(4) ZEROFILL
wartość5
jest pobierana jako0005
.
Jest to „rozszerzenie” MySQL, a zerofill to „rozszerzenie” rozszerzenia.
W przypadku rozsądnej metody kontrolowania wyświetlania typu liczbowego nie używaj atrybutów typu liczbowego, a zamiast tego używaj