INT (5) vs SMALLINT (5): liczby w nawiasie po typie numerycznym

29

Czy w definicjach tabel MySQL jest coś pomiędzy INT(5)i SMALLINT(5)? A może oba reprezentują ten sam rozmiar?

BenV
źródło

Odpowiedzi:

41

An inti smallintmają 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śla INTszerokość 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 ZEROFILLdomyślne wypełnienie spacji jest zastępowane zerami. Na przykład dla kolumny zadeklarowanej jako INT(4) ZEROFILLwartość 5jest pobierana jako 0005.

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

Derek Downey
źródło