55 Stimmen

MySQL: Integer Typen

Info von Stefan Trost | Letztes Update am 31.01.2023 | Erstellt am 15.11.2011

MySQL kennt einige unterschiedliche Integer-Typen wie TINYINT, SMALLINT, MEDIUMINT, INT und BIGINT. All diese Typen speichern Integer-Werte, das heißt Ganzzahlenwerte ohne Komma. Der Unterschied zwischen den Typen liegt in der Anzahl der verwendeten Bytes für die Speicherung der Zahlen.

Je nachdem, wie viele Bytes mit dem jeweiligen Integer-Typ belegt werden können, lassen sich mit den unterschiedlichen Typen verschiedene Wertebereiche speichern:

TypBytesSignedUnsigned
TINYINT1-128 bis0 bis
  127255
SMALLINT2-32.768 bis0 bis
  32.76765.535
MEDIUMINT  3-8.388.608 bis 0 bis
  8.388.60716.777.215
INT4-2.147.483.648 bis 0 bis
  2.147.483.6474.294.967.295
BIGINT5-9.223.372.036.854. 0 bis
  775.808 bis 9.223.372.​036.854.775.80718.446.744.073.709.​551.615

Abhängig davon, ob man die verschiedenen Datentypen als "Signed" oder "Unsigned" deklariert, ergeben sich unterschiedliche Wertebereiche für den gleichen Datentyp. Dadurch dass durch die "Unsigned"-Deklaration auf die Möglichkeit, negative Werte zu speichern, verzichtet wird, sind höhere positive Werte möglich.

Der TINYINT-Typ

Nur ein Byte im Speicher verwendet der kleinste Datentyp TINYINT. Damit können mit dem Typ "TINYINT" Werte nur im Bereich zwischen -128 bis 127 gespeichert werden. Wenn man das Attribut "Unsigned" verwendet, also nur positive Werte erlaubt, vergrößert sich der Bereich möglicher Werte auf 0 bis 255.

Der Grund dieses Wertebereich liegt darin, dass ein Byte aus acht Bits besteht, die jeweils die Zustände 0 oder 1 annehmen können. Daraus ergeben sich 256 verschiedene Kombinationsmöglichkeiten (also 8^2 = 2*2*2*2*2*2*2*2 = 256). Wenn wir nur positive Werte erlauben, können wir diese 256 verschiedenen Zustände der Bits zur Speicherung der Zahl 0 sowie der 255 Zahlen von 1 bis 255 nutzen. Wenn wir auch negative Werte speichern möchten, verkleinert sich der Wertebereich, da wir die 256 uns zur Verfügung stehenden Zustände der Bits auf den positiven und negativen Wertebereich aufteilen müssen. Neben der Speicherung der 0 verbleiben uns also wieder nur 255 weitere Speichermöglichkeiten, von denen 128 für die negativen Zahlen von -128 bis -1 genutzt werden und 127 für die positiven Zahlen von 1 bis 127. Die unterschiedliche Anzahl von positiven versus negativen speicherbaren Werten liegt entsprechend darin begründet, dass sich 255 nicht glatt durch 2 teilen lässt.

Der SMALLINT-Typ

Ein Byte mehr benötigt der nächstgrößere Datentyp namens "SMALLINT". Mit den zwei Bytes von "SMALLINT" lassen sich bereits 65.536 verschiedene Werte speichern, da uns für die Speicherung 256 Mal die 256 Kombinationsmöglichkeiten eines Bytes zur Verfügung stehen (256*256=65.536). Damit lassen sich "Signed" die Werte von -32.768 bis 32.767 speichern oder "Unsigned" die Werte von 0 bis 65.535.

Der MEDIUMINT-Typ

Die drei Byte von "MEDIUMINT" erlauben bereits die Speicherung innerhalb eines Wertebereich von -8.388.608 bis 8.388.607 (Signed) beziehungsweise von 0 bis 16.777.215 (Unsigned). Es gibt also 256*256*256 = 16.777.216 Kombinationsmöglichkeiten der zur Verfügung stehenden Bits der 3 Bytes.

Welchen Datentypen sollte ich nutzen?

Bei der Überlegung, welcher der möglichen Integer-Datentypen für eine bestimmte Spalte einer Datenbank genutzt werden sollte, kommt es darauf an, welche Zahlen in der Spalte gespeichert werden sollen. Entscheidend sind dabei zwei Fragen: Einerseits ist wichtig, wie groß die größte zu erwartende Zahl ist, die in der Spalte gespeichert werden soll, andererseits stellt sich die Frage, ob auch negative Werte gespeichert werden sollen, oder ob die Möglichkeit der Speicherung von positiven Werten ausreichend ist.

Wenn Ihre Integer-Werte nicht über 65.000 steigen und nicht negativ werden können, sollten Sie der Spalte zum Beispiel den Typ SMALLINT UNSIGNED geben. Damit verbraucht ein Wert nur 2 Bytes. Das ist die Hälfte von dem, was ein Standard-Integerwert (INT) verbrauchen würde.

AntwortenPositivNegativ

Über den Autor

AvatarSoftware von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen

 

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.