1. Einführung
MySQL ist ein beliebtes relationales Datenbankmanagementsystem, das in vielen Web‑Anwendungen und Datenbanksystemen weit verbreitet ist. Unter seinen Datentypen ist der INT‑Typ einer der am häufigsten verwendeten für die Verarbeitung numerischer Werte. Dieser Artikel liefert eine ausführliche Erklärung des MySQL‑INT‑Typs. Insbesondere werden wir die maximalen Werte untersuchen, die der INT‑Typ unterstützt, und wie man ihn effizient nutzt. Durch das Lesen dieses Artikels erhalten Sie das nötige Wissen, um den INT‑Typ in MySQL korrekt zu verwenden.
2. Grundlegende Spezifikationen des INT‑Typs
Maximal- und Minimalwerte von INT
Der MySQL‑INT‑Typ verwendet 4 Byte (32 Bit) Speicher, und der Wertebereich, den er speichern kann, ist wie folgt:
- Signed (SIGNED) :
- Minimalwert: -2,147,483,648
- Maximalwert: 2,147,483,647
- Unsigned (UNSIGNED) :
- Minimalwert: 0
- Maximalwert: 4,294,967,295
Speichergröße von INT
Der INT‑Typ verwendet immer 4 Byte Speicher. Diese Größe bleibt konstant, unabhängig vom gespeicherten Wert. Daher ist es effizienter, kleinere Datentypen zu verwenden, wenn Sie keinen sehr großen Zahlenbereich benötigen (z. B. TINYINT oder SMALLINT).
Anwendungsfälle für INT
Der INT‑Typ wird in den folgenden Szenarien häufig eingesetzt:
- Auto‑Increment‑Werte (z. B. Benutzer‑IDs, Bestellnummern)
- Ganzzahlige Daten, die in Berechnungen oder statistischen Auswertungen verwendet werden (z. B. Lagerbestände, Klickzahlen)
- Daten, die innerhalb eines festen Bereichs liegen (z. B. Alter oder Testergebnisse)
In diesen Anwendungsfällen ist es wichtig, den erforderlichen Zahlenbereich und die Speichereffizienz zu berücksichtigen.
3. Was bedeutet M bei INT(M)?
Was ist die Anzeigebreite (M)?
In MySQL steht das M in INT(M) für die „Anzeigebreite“. Es beeinflusst nicht den tatsächlich gespeicherten numerischen Wert in der Datenbank, sondern legt fest, wie der Wert bei der Anzeige formatiert wird. Beispiel: Wenn INT(5) definiert ist, wird die Zahl mit einer Breite von 5 Stellen angezeigt.
Allerdings hat die Anzeigebreite M nur in folgendem Fall Bedeutung:
- Wenn die ZEROFILL‑Option aktiviert ist
- Beispiel: Bei
INT(5) ZEROFILLwird der Wert123als00123angezeigt.
Wichtige Hinweise zu ZEROFILL
Bei Verwendung der ZEROFILL‑Option gelten folgende Eigenschaften:
- Führende Nullen werden automatisch links hinzugefügt.
- Das Attribut
UNSIGNEDwird automatisch angewendet.
Daher können Sie ZEROFILL nicht verwenden, wenn Sie negative Werte speichern müssen.
Aufklärung häufiger Missverständnisse
Viele Anfänger glauben fälschlich, dass M den maximal speicherbaren Wert begrenzt. M beeinflusst jedoch nur die Anzeigeformatierung und hat keinerlei Einfluss auf den tatsächlichen Speicherbereich.
4. Vergleich mit anderen Ganzzahltypen
Arten von Ganzzahl‑Datentypen und ihre Bereiche
MySQL stellt die folgenden Ganzzahl‑Typen bereit:
| Type Name | Bytes | Signed Range | Unsigned Range |
|---|---|---|---|
| TINYINT | 1 byte | -128 to 127 | 0 to 255 |
| SMALLINT | 2 bytes | -32,768 to 32,767 | 0 to 65,535 |
| MEDIUMINT | 3 bytes | -8,388,608 to 8,388,607 | 0 to 16,777,215 |
| INT | 4 bytes | -2,147,483,648 to 2,147,483,647 | 0 to 4,294,967,295 |
| BIGINT | 8 bytes | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | 0 to 18,446,744,073,709,551,615 |
Auswahlkriterien
Verwenden Sie die folgenden Richtlinien bei der Auswahl eines geeigneten Datentyps im Datenbankdesign:
- Wenn der Bereich klein ist: Verwenden Sie
TINYINToderSMALLINT, um Speicher zu sparen. - Wenn ein extrem großer Bereich benötigt wird: Verwenden Sie
BIGINT. - Wenn ein allgemeiner Einsatz gewünscht ist:
INTist in der Regel optimal.
5. Änderungen seit MySQL 8.0.17
Abschaffung der Anzeigebreite (M)
Ab MySQL 8.0.17 ist die „Anzeigebreite (M)“ für Ganzzahl‑Typen veraltet. Diese Änderung wurde zusammen mit der Abschaffung der ZEROFILL‑Option eingeführt und kann in zukünftigen MySQL‑Versionen entfernt werden.
Die Gründe für die Abschaffung der Anzeigebreite sind folgende:
- Verursachte Missverständnisse: * Viele Benutzer dachten fälschlich, dass
Mden maximal speicherbaren Wert oder die Anzahl der Ziffern beeinflusst. - Begrenzte praktische Nutzung: * Da
Mnur die Anzeigeformatierung steuerte, wird die Formatierung heute meist auf Anwendungsebene erledigt, wodurch die Notwendigkeit sinkt.
Abschaffung von ZEROFILL
Die Option ZEROFILL wurde ebenfalls in derselben Version als veraltet markiert. Obwohl ZEROFILL bequem war, um Zahlen mit führenden Nullen aufzufüllen, wird sie aus den folgenden Gründen nicht mehr empfohlen:
- Weit verbreitete alternative Ansätze:
- Das Auffüllen mit Nullen kann jetzt einfach in der Anwendungsschicht oder UI-Schicht gehandhabt werden.
- Vermeidung von Verwirrung:
- Die automatische Anwendung des
UNSIGNED-Attributs bei der Verwendung vonZEROFILLhat Anfängerbenutzer verwirrt.
Anpassung an die Abschaffung
Auf diese Abschaffungen hin sollten Sie in der Datenbankgestaltung folgende Ansätze in Betracht ziehen:
- Formatierung in der Anwendungsschicht handhaben:
- Führen Sie das Auffüllen mit Nullen und die Formatierung in der Anwendungsschicht oder Präsentationsschicht durch.
- Beispiel: Implementieren Sie das Auffüllen mit Nullen mit PHP oder JavaScript.
- Ein Design übernehmen, das nicht auf die Anzeigebreite angewiesen ist:
- Definieren Sie den
INT-Typ ohne Angabe vonMund konzentrieren Sie sich auf die Daten Genauigkeit statt auf die Anzeigeformatierung.
6. Praktische FAQ-Sektion
Häufig gestellte Fragen
Q1. Was passiert, wenn ich einen Wert speichere, der das Maximum des INT-Typs überschreitet?
A. In MySQL führt der Versuch, einen Wert außerhalb des Bereichs des INT-Typs zu speichern, zu einem Fehler. Sie müssen entweder einen Wert innerhalb des unterstützten Bereichs wählen oder zu einem Datentyp mit einem größeren Bereich wechseln (z. B. BIGINT).
Q2. Was ist der Unterschied zwischen INT und BIGINT?
A. Der BIGINT-Typ verwendet doppelt so viel Speicher wie INT (8 Bytes) und bietet einen viel breiteren numerischen Bereich. Zum Beispiel überschreitet der signierte Bereich von BIGINT ±9 Quintillionen, was ihn geeignet für die Handhabung sehr großer Datensätze macht.
Q3. Nach der Abschaffung von ZEROFILL, wie sollte ich eine mit Nullen aufgefüllte Anzeige implementieren?
A. Es wird empfohlen, das Auffüllen mit Nullen in der Anwendungsschicht zu handhaben. Zum Beispiel können Sie in PHP die Funktion str_pad() verwenden und in JavaScript die Methode padStart(), um das Auffüllen mit Nullen zu implementieren.
Q4. Wie sollte ich zwischen INT und anderen Ganzzahltypen wählen?
A. Wählen Sie den Typ basierend auf dem Datenbereich. Kleine numerische Werte (z. B. Alter oder Punkte) eignen sich für TINYINT, Daten mit mittlerer Skala (z. B. Benutzer-IDs) eignen sich für INT und sehr große Werte (z. B. Finanztransaktionsdaten) eignen sich für BIGINT.
7. Schlussfolgerung
In diesem Artikel haben wir eine detaillierte Erklärung des MySQL INT-Datentyps gegeben. Die wichtigsten Punkte sind wie folgt:
- Das Verständnis der Unterschiede zwischen signierten und unsignierten Maximal- und Minimalwerten des
INT-Typs bildet die Grundlage für ein richtiges Daten-Design. - Es ist wichtig, alternative Ansätze zu den als veraltet markierten Optionen „Anzeigebreite (M)“ und „ZEROFILL“ zu verstehen und Datenbanken zu entwerfen, die sich an zukünftige MySQL-Updates anpassen können.
- Wählen Sie den geeigneten Ganzzahltyp basierend auf den Datenmerkmalen, um eine effiziente und wartbare Datenbank zu erstellen.
Verwenden Sie diesen Artikel als Referenz, um die Nutzung des INT-Typs zu optimieren und die Effizienz in der MySQL-Datenbankgestaltung weiter zu verbessern.


