Int (5) gegen smallint (5): Zahlen in Klammern nach dem numerischen Typ
Frage
In MySQL -Tabellendefinitionen gibt es eine andere dazwischen INT(5)
und SMALLINT(5)
? Oder repräsentieren beide die gleiche Größe?
Lösung
Ein int
und ein smallint
haben unterschiedliche Größen und folglich Bereiche.Das (5)
ist smallint(5)
oder int(5)
wird als a genannt "Numerisches Typattribut" und es repräsentiert die "Anzeigebreite" des Feldes,
MySQL unterstützt eine Erweiterung, um die Anzeigebreite der Ganzzahl -Datentypen in Klammern optional anzugeben, die dem Basis -Schlüsselwort für den Typ folgen. Zum Beispiel,
INT(4)
Gibt an einINT
mit einer Anzeigebreite von vier Ziffern. Diese optionale Anzeigebreite kann von Anwendungen verwendet werden, um Ganzzahlwerte mit einer Breite zu zeigen, die weniger als die für die Spalte angegebene Breite durch linke Paddierung mit Leerzeichen angezeigt wird. (Das heißt, diese Breite ist in den mit Ergebnissen zurückgegebenen Metadaten vorhanden. Ob sie verwendet wird oder nicht, liegt bei der Anwendung.)In Verbindung mit dem optionalen (nicht standardmäßigen) Attribut
ZEROFILL
, Die Standardpolsterung von Leerzeichen wird durch Nullen ersetzt. Zum Beispiel für eine Spalte, die als als deklariert als als deklariert istINT(4) ZEROFILL
, ein Wert von5
wird abgerufen wie0005
.
Dies ist eine MySQL -Erweiterung, und ZeroFill ist eine "Erweiterung" für eine Erweiterung.
Für die vernünftige Methode zur Steuerung der Anzeige eines numerischen Typs, keine numerischen Typattribute und stattdessen verwenden