Beim Einrichten einer Datenbank in MySQL muss der Benutzer jeder Spalte in einer Tabelle einen Namen und einen Datentyp zuweisen. Dieser Prozess hilft dem System genau zu verstehen, welche Art von Daten gespeichert wird und wie sie verarbeitet werden sollen, und bestimmt außerdem den benötigten Speicherplatz.
Es gibt mehrere Hauptklassen von Datentypen in MySQL-Tabellen, darunter numerische, Zeichen-, Datums- und Zeittypen sowie weitere. Jede Klasse umfasst mehrere spezifische Datentypen. Es ist wichtig, diese bereits in der Anfangsphase der Tabellenerstellung korrekt zu definieren, um Probleme zu vermeiden, sobald die vollständige Datenbankstruktur steht.
Dieser Artikel beschreibt die wichtigsten MySQL-Datentypen, ihre Struktur, gültigen Wertebereiche und empfohlene Einsatzszenarien.
MySQL unterstützt alle gängigen numerischen SQL-Datentypen, die zur Speicherung von Zahlen verwendet werden. In diesem Artikel werden behandelt:
Ganzzahlen
Gleitkommazahlen
Festkommazahlen
Jeder dieser Typen wird im Folgenden näher erläutert.
Ganzzahltypen werden zur Speicherung von vorzeichenbehafteten oder vorzeichenlosen Ganzzahlen verwendet. Vorzeichenbehaftete Typen können sowohl positive als auch negative Zahlen speichern, während vorzeichenlose Typen nur positive Werte zulassen und dadurch den Wertebereich effektiv verdoppeln.
Es gibt fünf Haupttypen für Ganzzahlen: TINYINT, SMALLINT, MEDIUMINT, INT und BIGINT. Der wesentliche Unterschied liegt im jeweiligen Wertebereich – je größer dieser ist, desto mehr Speicher wird benötigt. Die Wahl des passenden Typs ist wichtig, um Speicher effizient zu nutzen.
|
Typ |
Speicher (Bytes) |
Vorzeichenbehafteter Bereich |
Vorzeichenloser Bereich |
|
TINYINT |
1 |
−2⁷ bis 2⁷−1 |
0 bis 2⁸−1 |
|
SMALLINT |
2 |
−2¹⁵ bis 2¹⁵−1 |
0 bis 2¹⁶−1 |
|
MEDIUMINT |
3 |
−2²³ bis 2²³−1 |
0 bis 2²⁴−1 |
|
INT |
4 |
−2³¹ bis 2³¹−1 |
0 bis 2³²−1 |
|
BIGINT |
8 |
−2⁶³ bis 2⁶³−1 |
0 bis 2⁶⁴−1 |
Die Angabe einer Größe (z. B. MEDIUMINT(6)) beeinflusst nicht den Wertebereich. Sie ist rein kosmetisch und wird von einigen Tools verwendet, um kürzere Zahlen mit Leerzeichen aufzufüllen.
Mit dem Attribut ZEROFILL können stattdessen Nullen verwendet werden. Beispiel:
SMALLINT(8) ZEROFILL stellt den Wert 256 als 00000256 dar.
Diese Datentypen werden zur Speicherung näherungsweiser numerischer Werte verwendet. MySQL erlaubt die Definition der Genauigkeit wie folgt:
FLOAT(p)
Dabei steht p für die Genauigkeit von 0 bis 53.
Ist p < 25, wird FLOAT (einfache Genauigkeit) verwendet.
Andernfalls wird DOUBLE (doppelte Genauigkeit) genutzt.
|
Typ |
Speicher (Bytes) |
Wertebereich |
|
FLOAT |
4 |
~±3,4028 × 10³⁸ |
|
DOUBLE |
8 |
~±1,7976 × 10³⁸ |
Festkommazahlen werden zur exakten Speicherung numerischer Werte mit definierter Genauigkeit verwendet. Hierfür dienen die Typen DECIMAL oder NUMERIC, die insbesondere bei Finanzberechnungen eingesetzt werden, bei denen Rundungsfehler nicht akzeptabel sind.
Definition:
DECIMAL(M, D)
M: Gesamtanzahl der Ziffern (bis zu 65, Standardwert 10)
D: Anzahl der Nachkommastellen (0–30, Standardwert 0)
Beispiel:
DECIMAL(6, 3)
Dieser Typ speichert Werte von -999.999 bis 999.999.
DECIMAL und NUMERIC sind funktional identisch.
Zur Speicherung kurzer Texte dienen in MySQL hauptsächlich CHAR und VARCHAR. Beide sind ähnlich, unterscheiden sich jedoch in der Art der Speicherung.
CHAR speichert Zeichenketten fester Länge (0 bis 2⁸−1 Zeichen), die beim Erstellen der Tabelle definiert wird. Ist der eingegebene Text kürzer, werden die verbleibenden Zeichen mit Leerzeichen aufgefüllt.
VARCHAR speichert Zeichenketten variabler Länge (0 bis 2¹⁶−1 Zeichen). Es speichert nur die tatsächlich vorhandenen Zeichen und verwendet zusätzlich 1 Byte zur Speicherung der Zeichenlänge.
Überschreitet eine Zeichenkette die definierte Länge von CHAR oder VARCHAR, wird sie abgeschnitten.
Wenn bei der Tabellenerstellung CHAR- und VARCHAR-Spalten kombiniert werden, konvertiert MySQL CHAR automatisch in VARCHAR.
|
Zeichenkette |
CHAR(5) |
VARCHAR(5) |
|
'A' |
'A ' |
'A' |
|
'Hello' |
'Hello' |
'Hello' |
|
'Example' |
'Examp' |
'Examp' |
Der Datentyp TEXT wird zur Speicherung großer Textmengen verwendet, während BLOB für Binärdaten wie Bilder, kompilierten Code oder Audiodateien vorgesehen ist.
Wichtige Unterschiede:
BLOB: Sortierung und Vergleiche sind groß-/kleinschreibungssensitiv
TEXT: Sortierung und Vergleiche sind nicht groß-/kleinschreibungssensitiv
MySQL kann TEXT- und BLOB-Felder nicht vollständig indexieren und unterstützt keine Sortierung über vollständige Feldindizes.
Überschreitet der Inhalt die maximale Größe, wird er abgeschnitten.
|
Typ |
Speichergröße (Bytes) |
Maximale Zeichen |
|
TINYTEXT |
2⁸−1 |
bis 2⁸−1 |
|
TEXT |
2¹⁶−1 |
bis 2¹⁶−1 |
|
MEDIUMTEXT |
2²⁴−1 |
bis 2²⁴−1 |
|
LONGTEXT |
2³²−1 |
bis 2³²−1 |
|
Typ |
Speichergröße (Bytes) |
Maximale Bytes |
|
TINYBLOB |
2⁸−1 |
bis 2⁸−1 |
|
BLOB |
2¹⁶−1 |
bis 2¹⁶−1 |
|
MEDIUMBLOB |
2²⁴−1 |
bis 2²⁴−1 |
|
LONGBLOB |
2³²−1 |
bis 2³²−1 |
MySQL stellt mehrere Datentypen zur Speicherung von Datums- und Zeitinformationen bereit:
|
Typ |
Speicher (Bytes) |
Beschreibung |
|
DATE |
3 |
Speichert nur das Datum im Format YYYY-MM-DD. Bereich: 01.01.1000 bis 31.12.9999 |
|
DATETIME |
8 |
Speichert Datum und Uhrzeit im Format YYYY-MM-DD HH:MM:SS |
|
TIMESTAMP |
4 |
Wie DATETIME, aber mit geringerem Speicherbedarf; Bereich: 1970–2038 |
|
TIME |
3 |
Speichert Zeitwerte von −838:59:59 bis 838:59:59 |
|
YEAR |
1 |
Speichert das Jahr im Format YYYY (1901–2155, sowie 0000) |
MySQL unterstützt seit Version 5.7.8 einen nativen JSON-Datentyp mit folgenden Vorteilen:
Automatische Validierung gültiger JSON-Strukturen
Optimiertes binäres Speicherformat für schnelleren Zugriff
Der Speicherbedarf entspricht in etwa LONGTEXT.
MySQL bietet spezielle Zeichenketten-Datentypen mit vordefinierten Wertemengen:
ENUM: Speichert einen Wert aus einer Liste (bis zu 2 Bytes)
SET: Speichert mehrere Werte gleichzeitig (bis zu 26, max. 8 Bytes)
ENUM('a', 's', 'd')
Erlaubte Werte: 'a', 's', 'd'
SET('a', 's', 'd')
Erlaubte Kombinationen:'a', 's', 'd', 'a,s', 'a,d', 's,d', 'a,s,d' oder ''
Bei doppelten Werten wie ('a','s','a') entfernt MySQL Duplikate automatisch und speichert 'a,s'.
Dieser Artikel hat die am häufigsten verwendeten MySQL-Datentypen zur Definition von Tabellenspalten behandelt. Mit diesem Wissen können Nutzer geeignete Datentypen auswählen und ihre Datenbankstruktur effizient gestalten. Für weniger gebräuchliche Datentypen empfiehlt sich die offizielle MySQL-Dokumentation.
Mit Hostman Cloud-Datenbanken können Sie die Arbeit mit MySQL und seinen Datentypen praktisch erproben. Zu den wichtigsten Vorteilen gehören:
Wartung und Konfiguration durch den Anbieter
Hohe Verfügbarkeit und Ausfallsicherheit
Automatische Backups
Schnelle horizontale und vertikale Skalierung
Dauerbetrieb durch Cluster-Replikation
Nutzung der Rechenressourcen einer Cloud-Plattform