MySQL Wert in Klammern bei Datentyp

ThiKool

Erfahrenes Mitglied
Hallo zusammen,

ich habe mich jetzt mal mit den Datentypen bei MySQL befasst und habe eine Frage, die ich nicht klären konnte bzw. einige Erkenntnisse - korrigiert mich bitte wenn ich falsch liege:

- Der Speicherbedarf richtet sich nach den Datentyp, tinyint, smallint, int und nicht nach der tatsächlich eingetragenen Zahl?!

Wofür steht die Zahl in Klammern hinter dem Datentyp? z.B. INT(11)
 
Du kannst maximal 11 Stellen speichern (10 für die Zahl, 1 fürs Vorzeichen). Richtet sich also nach der Darstellung und nicht nach der Speichergröße.
Dennoch stimmt natürlich, dass ein INT immer eine gewisse feste Größe an Speicher braucht, egal ob du 0, 1000 oder -52178652 speicherst.
 
Hmm und das verstehe ich gerade nicht. Ich hab eine INT(2) Spalte angelegt, kann aber 123456789 speichern?!
 
Hallo ThiKool,

die genannte "11" im INT-Typ hat keinerlei Bedeutung, solang Du nicht zusätzlich "ZEROFILL" auswählst.
Ein INT-Typ hat immer eine maximale Range von bis zu 2147483647.

Als Beispiel:

INT(11) ZEROFILL

Trägst Du in das Feld eine 8 ein, werden die fehlenden Stellen mit 0en aufgefüllt => 00000008


Zusatz - EDIT:
Es ist also durchaus möglich in ein INT(1) ein Zahl wie 58353 zu speichern.


Liebe Grüße
 
Zuletzt bearbeitet:
Ok, also ist es vollkommen egal was ich in die Klammern eingebe? Mit ZEROFILL habe ich noch nie gearbeitet, wofür könnte man das gebrauchen?
 
Hallo ThiKool,

ja, es spielt keine Rolle.

Ein Anwendungsbeispiel wären Postleitzahlen, welche in Deutschland immer 5-Zeichen lang sind.

Wird zum Beispiel 1067 an die Datenbank gesendet, wird automatisch eine 0 ergänzt => 01067 (Berlin).

ES gibt sicher noch viele andere Anwendungsbeispiele ( Rechnungsnummer etc. )

LG
 
Zurück