[MySQL] Int Size?

DJ_Freeman

Well-known member
5 Juni 2006
92
3
Moin, ich hab mal ne Frage zur Eigenschaft Size bei INT(o.ä.) Feldern in Mysql, man nehmen folgende Tabelle an:

Code:
CREATE TABLE `test` (
`test1` INT( 1 ) NOT NULL
);

Das INT(1) sagt ja aus, dass das Feld test1 nur Integerwerte mit einer Zahl annimmt, richtig? Sprich die Werte von 0 bis 9

In einem Test konnte ich jedoch den kompletten Integerbereich da reinschreiben... Wo liegt jetzt der Sinn bei der Angabe? Oder habe ich das irgendwie falsch verstanden? ;)
 
Die Zahl in Klammern is nur die Anzeigebreite.

siehe Manual:
Another extension is supported by MySQL for optionally specifying the display width of integer data types in parentheses following the base keyword for the type (for example, INT(4) ). This optional display width is used to display integer values having a width less than the width specified for the column by left-padding them with spaces. The display width does not constrain the range of values that can be stored in the column, nor the number of digits that are displayed for values having a width exceeding that specified for the column.
Quelle: https://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
 
Um es mal kürzer zu sagen ;)

Die Zahl bei Integerwerten in Klammer machen nur bei "unsigned cerofill" sinn. Sonst sind die wirklich vollkommen irrelevant. Ich habe mir angewöhnt bei INT die Bitanzahl einzutragen also TINYINT(1) INT(4).
 
INT(4) ist aber keine kluge Idee :roll:
Wie theHacker nämlich auch schon schrieb, bedeutet das, dass du bei einem SELECT nur 4 Zeichen lange Integer zurückbekommst, und damit wäre ja ziemlich viel Speicherplatz in der DB sinnlos verschwendet, da es dafür weit bessere Datentypen gibt
 
@bartman
ups erwischt ^^, joar des mein ich.

@ice
Also damit hatte ich noch keine Probleme, ich habe immer meine werte bekommen, z.B. also ich noch timestamps inner db in einem int(4) gespeichert hab. Ich habe die Erfahrung gemacht das es sich nur auf unsigned cerofill auswirkt.