Philipp Hasenfratz: Mysql Zahlenlänge?

Beitrag lesen

Halihallo Simon

ich verstehe nicht ganz die Angabe der Länge bei Feldern vom zb. Typ TINYINT. Laut Mysqldoku können Zahlen von 0-255 bzw. -128-127, was bringt dann die Länge?

Nun, eigentlich nicht viel, zumindest nicht bei INTEGER-Werten.
Über ZEROFILL kann man MySQL anweisen, die Zahlen mit fixer
Zeichenlänge auszugeben, was dazu führt, dass bei kleinen Zahlen
vorne alles mit 0 aufgefüllt wird, bis die angegebene Länge erreicht
wurde.

Bei DECIMAL-Typen ist die Angabe nötig, da diese intern als CHAR
gespeichert werden und somit die Angabe der Zeichen zwingend
erforderlich ist.

Bei FLOAT-Typen bringt die Angabe IMHO nicht viel...

Bei STRING-Typen ist sie natürlich deshalb zentral, um die maximale
Grösse des Strings festzulegen. Bei VARCHAR ist die Angabe wiederum
eher nebensächlich (obwohl bei Indexes wiederum wichtig ist, denn
dort muss VARCHAR wiederum als "CHAR" gespeichert sein). Bei CHAR
ist es natürlich sehr wichtig, da MySQL genau wissen muss, vieviel
Daten dafür reserviert werden müssen.

Wenn ich also TINYINT (1) nehme, dann kann ich Zahlen von 0-9 eingeben? Wozu gibt es dann mehrere INT Typen? (TINYINT, MEDIUMINT, etc.)

Jeder INT-Typ braucht unterschiedlich viel Speicherplatz. Wer weniger
Werte aufnehmen kann, braucht weniger Speicher. Es liegt also im
Interesse des Datenbank-Designers, den richtigen, passenden Typ zu
setzen. Es sollen alle Werte gespeichert werden, dennoch soll nicht
zu viel Speicher verschwendet werden.

http://dev.mysql.com/doc/mysql/en/Numberic_type_overview.html
http://dev.mysql.com/doc/mysql/en/Storage_requirements.html
http://dev.mysql.com/doc/mysql/en/Choosing_types.html

Wenn man eh bei jedem die Länge dazuschreiben muss/kann?

depends, siehe oben.

Viele Grüsse

Philipp

--
The only program that runs perfectly every time, is a virus.