Es folgt eine Übersicht zu den numerischen Datentypen. Weitere Informationen finden Sie unter Abschnitt 11.2, „Numerische Datentypen“. Die Speicheranforderungen für die Typen sind in Abschnitt 11.5, „Speicherbedarf von Spaltentypen“, beschrieben.
M
zeigt die maximale Anzeigebreite
an. Der höchste zulässige Wert ist 255. Die Anzeigebreite hat
keinen Bezug zur Speichergröße oder zum zulässigen
Wertebereich des betreffenden Typs (siehe auch
Abschnitt 11.2, „Numerische Datentypen“).
Wenn Sie ZEROFILL
für eine numerische Spalte
angeben, fügt MySQL automatisch das Attribut
UNSIGNED
für die Spalte hinzu.
SERIAL
ist ein Alias für BIGINT
UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
.
SERIAL DEFAULT VALUE
ist in der Definition
einer Integer-Spalte ein Alias für NOT NULL
AUTO_INCREMENT UNIQUE
.
Warnung: Wenn Sie die
Subtraktion für Integer-Werte verwenden, von denen einer vom
Typ UNSIGNED
ist, dann hat das Ergebnis kein
Vorzeichen. Siehe auch Abschnitt 12.8, „Cast-Funktionen und Operatoren“.
Bitfeldtyp. M
gibt die Anzahl von
Bits pro Wert in einem Bereich zwischen 1 und 64 an. Wenn
M
weggelassen wird, wird
standardmäßig 1 verwendet.
TINYINT[(
M
)] [UNSIGNED]
[ZEROFILL]
Sehr kleiner Integer. Der vorzeichenbehaftete Bereich liegt
zwischen -128
und 127
.
Der vorzeichenlose Bereich liegt zwischen
0
und 255
.
Diese Typen sind Synonyme für
TINYINT(1)
. Der Wert Null wird als falsch
ausgewertet, Werte ungleich null als wahr.
Die Implementierung der vollständigen Verarbeitung boolescher Typen entsprechend dem SQL-Standard ist für die Zukunft vorgesehen.
SMALLINT[(
M
)] [UNSIGNED]
[ZEROFILL]
Kleiner Integer. Der vorzeichenbehaftete Bereich liegt
zwischen -32768
und
32767
. Der vorzeichenlose Bereich liegt
zwischen 0
und 65535
.
MEDIUMINT[(
M
)]
[UNSIGNED] [ZEROFILL]
Mittelgroßer Integer. Der vorzeichenbehaftete Bereich liegt
zwischen -8388608
und
8388607
. Der vorzeichenlose Bereich liegt
zwischen 0
und
16777215
.
INT[(
M
)] [UNSIGNED]
[ZEROFILL]
Integer normaler Größe. Der vorzeichenbehaftete Bereich
liegt zwischen -2147483648
und
2147483647
. Der vorzeichenlose Bereich
liegt zwischen 0
und
4294967295
.
INTEGER[(
M
)] [UNSIGNED]
[ZEROFILL]
Dieser Typ ist synonym zu INT
.
BIGINT[(
M
)] [UNSIGNED]
[ZEROFILL]
Großer Integer. Der vorzeichenbehaftete Bereich liegt
zwischen -9223372036854775808
und
9223372036854775807
. Der vorzeichenlose
Bereich liegt zwischen 0
und
18446744073709551615
.
Bestimmte Aspekte sollten Sie in Bezug auf
BIGINT
-Spalten beachten:
Alle Berechnungen werden unter Verwendung
vorzeichenbehafteter BIGINT
- oder
DOUBLE
-Werte durchgeführt. Aus
diesem Grund sollten Sie – mit Ausnahme von
Bitfunktionen – keine vorzeichenlosen großen
Integer-Zahlen benutzen, die größer sind als
9223372036854775807
(63 Bits)!
Andernfalls können, wenn Sie einen
BIGINT
- in einen
DOUBLE
-Wert konvertieren, die letzten
Stellen des Ergebnisses aufgrund von Rundungsfehlern
unter Umständen falsch sein.
MySQL kann BIGINT
in den folgenden
Fällen verarbeiten:
Bei der Verwendung von Integer-Zahlen zur
Speicherung großer vorzeichenloser Werte in einer
BIGINT
-Spalte.
In
MIN(
oder
col_name
)MAX(
,
wobei col_name
)col_name
eine
BIGINT
-Spalte referenziert.
Bei der Verwendung von Operatoren
(+
, -
,
*
usw.), wenn beide Operanden
Integers sind.
Sie können einen exakten Integer-Wert jederzeit in
einer BIGINT
-Spalte speichern, indem
Sie zur Speicherung einen String verwenden. In diesem
Fall führt MySQL eine Konvertierung des Strings in eine
Zahl durch, wobei keine zwischenzeitliche Darstellung
mit doppelter Genauigkeit erfolgt.
Die Operatoren -
,
+
und *
verwenden
die BIGINT
-Arithmetik, wenn beide
Operanden Integers sind. Das bedeutet, dass Sie, wenn
Sie zwei große Integers (oder Ergebnisse von
Funktionen, die Integers zurückgeben) miteinander
multiplizieren, unerwartete Ergebnisse erhalten können,
wenn das Ergebnis größer als
9223372036854775807
ist.
FLOAT[(
M
,D
)]
[UNSIGNED] [ZEROFILL]
Kleine Fließkommazahl (mit einfacher Genauigkeit).
Zulässige Werte sind der Bereich zwischen
-3.402823466E+38
und
-1.175494351E-38
, 0
und der Bereich zwischen 1.175494351E-38
und 3.402823466E+38
. Dies sind
theoretische Werte, die auf dem IEEE-Standard basieren. Der
tatsächliche Wertebereich kann abhängig von Ihrer Hardware
oder Ihrem Betriebssystem ein wenig kleiner sein.
M
ist die Gesamtzahl von
Dezimalstellen, D
die Anzahl der
Stellen hinter dem Dezimalpunkt. Wenn
M
und
D
nicht angegeben werden, werden
die Werte im Rahmen dessen gespeichert, was hardwareseitig
unterstützt wird. Eine Fließkommazahl mit einfacher
Genauigkeit ist auf etwa sieben Dezimalstellen genau.
Sofern angegeben, verbietet UNSIGNED
negative Werte.
Durch die Verwendung von FLOAT
können
sich unerwartete Probleme ergeben, weil alle Berechnungen in
MySQL mit doppelter Genauigkeit erfolgen. Siehe auch
Abschnitt A.5.7, „Lösung von Problemen mit nicht übereinstimmenden Zeilen“.
DOUBLE[(
M
,D
)]
[UNSIGNED] [ZEROFILL]
Fließkommazahl normaler Größe (mit doppelter
Genauigkeit). Zulässige Werte sind der Bereich zwischen
-1.7976931348623157E+308
und
-2.2250738585072014E-308
,
0
und der Bereich zwischen
2.2250738585072014E-308
und
1.7976931348623157E+308
. Dies sind
theoretische Werte, die auf dem IEEE-Standard basieren. Der
tatsächliche Wertebereich kann abhängig von Ihrer Hardware
oder Ihrem Betriebssystem ein wenig kleiner sein.
M
ist die Gesamtzahl von
Dezimalstellen, D
die Anzahl der
Stellen hinter dem Dezimalpunkt. Wenn
M
und
D
nicht angegeben werden, werden
die Werte im Rahmen dessen gespeichert, was hardwareseitig
unterstützt wird. Eine Fließkommazahl mit doppelter
Genauigkeit ist auf etwa 15 Dezimalstellen genau.
Sofern angegeben, verbietet UNSIGNED
negative Werte.
DOUBLE
PRECISION[(
,
M
,D
)]
[UNSIGNED] [ZEROFILL]REAL[(
M
,D
)]
[UNSIGNED] [ZEROFILL]
Diese Typen sind Synonyme für DOUBLE
.
Ausnahme: Wenn der SQL-Modus
REAL_AS_FLOAT
aktiviert ist, ist
REAL
ein Synonym für
FLOAT
statt für
DOUBLE
.
FLOAT(
p
) [UNSIGNED]
[ZEROFILL]
Fließkommazahl. p
steht für die
Genauigkeit in Bit, aber MySQL verwendet diesen Wert nur zur
Bestimmung, ob als Datentyp für das Ergebnis
FLOAT
oder DOUBLE
zugewiesen werden soll. Liegt p
zwischen 0 und 24, dann wird FLOAT
(ohne
M
- und
D
-Werte) als Typ gewählt. Liegt
p
zwischen 25 und 53, dann wird
DOUBLE
(ohne
M
- und
D
-Werte) als Typ gewählt. Der
Bereich der Ergebnisspalte entspricht den Datentypen
FLOAT
mit einfacher Genauigkeit oder
DOUBLE
mit doppelter Genauigkeit
entsprechend obiger Beschreibung.
Die Syntax
FLOAT(
wird
aus Gründen der ODBC-Kompatibilität unterstützt.
p
)
DECIMAL[(
M
[,D
])]
[UNSIGNED] [ZEROFILL]
Gepackte „exakte“ Festkommazahl.
M
ist die Gesamtzahl von
Dezimalstellen (Genauigkeit), D
die Anzahl der Stellen hinter dem Dezimalpunkt. Der
Dezimalpunkt sowie das Zeichen
‘-
’ (für negative Zahlen)
werden bei der Zählung für M
nicht berücksichtigt. Wenn D
0
ist, haben die Werte keinen Dezimalpunkt und keine
Nachkommastellen. Die maximale Anzahl der Stellen
(M
) beträgt bei
DECIMAL
65, die maximale Anzahl
unterstützter Dezimalstellen (D
)
30. Wird D
weggelassen, dann wird
als Vorgabe 0 verwendet; fehlt die Angabe
M
, dann ist 10 der Standardwert.
Sofern angegeben, verbietet UNSIGNED
negative Werte.
Berechnungen in den Grundrechenarten (+, -, *,
/
) erfolgen bei DECIMAL
-Spalten
stets mit einer Genauigkeit von 65 Stellen.
DEC[(
,
M
[,D
])]
[UNSIGNED] [ZEROFILL]NUMERIC[(
,
M
[,D
])]
[UNSIGNED] [ZEROFILL]FIXED[(
M
[,D
])]
[UNSIGNED] [ZEROFILL]
Diese Typen sind Synonyme für DECIMAL
.
Das Synonym FIXED
steht aus Gründen der
Kompatibilität mit anderen Datenbanksystemen zur
Verfügung.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.