382 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
Der maximale Wertebereich von DECIMAL- und NUMERIC-Werten ist derselbe wie f¨ur DOUBLE,
aber der tats¨achliche Wertebereich einer gegebenen DECIMAL- oder NUMERIC-Spalte kann
durch genauigkeit oder bereich f¨ur eine gegebene Spalte beschr¨ankt werden. Wenn einer
solchen Spalte ein Wert mit mehr Ziffern nach dem Dezimalpunkt zugewiesen wird, als durch
bereich zugelassen, wird der Wert auf diesen bereich gerundet. Wenn einer DECIMAL- o der
NUMERIC-Spalte ein Wert zugewiesen wird, dessen Gr¨oße den Wertebereich ¨uberschreitet,
der von der festgelegten (oder vorgabem¨aßigen) genauigkeit und bereich festgelegt wird,
speichert MySQL den Wert des entsprechenden Endpunkts des Wertebereichs.
Als Erweiterung zum ANSI/ISO-SQL92-Standard unterst¨utzt MySQL auch die
Ganzzahltypen TINYINT, MEDIUMINT und BIGINT, wie oben aufgelistet. Ein andere
Erweiterung wird von MySQL unterst¨utzt, um optional die Anzeigebreite eines
Ganzzahlwerts in Klammern festzulegen, die auf das Basis-Schl¨usselwort des Typs
folgen (zum Beispiel INT(4)). Die optionale Breitenspezifizierung wird benutzt, um die
Anzeige von Werten, deren Breite geringer ist als f¨ur die Spalte festgelegt, linksseitig mit
Leerzeichen aufzuf¨ullen. Das begrenzt allerdings nicht den Wertebereich, der in der Spalte
gespeichert werden kann, noch die Anzahl von Ziffern, die bei Werten angezeigt werden,
die die angegebene Breite f¨ur die Spalte ¨uberschreiten. In Verbindung mit dem optionalen
Erweiterungsattribut ZEROFILL wird - statt vorgabem¨aßig mit Leerzeichen - mit Nullen
aufgef¨ullt. Bei einer Spalte zum Beispiel, die als INT(5) ZEROFILL deklariert wurde, wird
4 als 00004 dargestellt. Beachten Sie, dass Werte in einer Ganzzahlspalte, die gr¨oßer
sind als die Anzeigebreite, Probleme bei der Erzeugung tempor¨arer Tabellen f¨ur einige
komplizierte Joins durch MySQL auftreten k¨onnen, weil MySQL in diesen F¨allen darauf
vertraut, dass die Daten in die Original-Spaltenbreite passten.
Alle Ganzzahl-Typen k¨onnen ein optionales (Nicht-Standard-) Attribut UNSIGNED haben.
Vorzeichenlose Werte k¨onnen daf¨ur benutzt werden, nur positive Zahlen in einer Spalte
zuzulassen, wenn Sie eine Wertebereich brauchen, der etwas gr¨oßer ausf¨allt.
Der FLOAT-Typ wird benutzt, um n¨aherungsweise numerische Datentyp en zu repr¨asentieren.
Der ANSI/ISO-SQL92-Standard erlaubt eine optionale Festlegung der Genauigkeit (aber
nicht den Werteb ereich des Exponenten) in Bits, gefolgt vom Schl¨usselwort FLOAT in Klam-
mern. Die MySQL-Implementation unterst¨utzt ebenfalls diese optionale Genauigkeitsfestle-
gung. Wenn das Schl¨usselwort FLOAT f¨ur einen Spaltentyp ohne Genauigkeitsfestlegung b e-
nutzt wird, benutzt MySQL 4 Bytes, um die Werte zu speichern. Eine abweichende Syntax
wird ebenfalls unterst¨utzt, wobei zwei Zahlen in Klammern dem FLOAT-Schl¨usselwort fol-
gen. Mit dieser Option legt die erste Zahl wie gehabt den Speicherbedarf f¨ur den Wert in
Bytes fest, und die zweite Zahl legt die Anzahl von Ziffern fest, die nach dem Dezimalpunkt
gespeichert und angezeigt werden sollen (wie bei DECIMAL und NUMERIC). Wenn MySQL
in einer solchen Spalte einen Wert mit mehr Dezimalziffern nach dem Dezimalpunkt spe-
ichern soll als f¨ur die Spalte festgelegt, wird der Wert beim Speichern gerundet, um die
zus¨atzlichen Ziffern zu entfernen.
Die REAL- und DOUBLE PRECISION-Typen akzeptieren keine Genauigkeitsfestlegungen. Als
Erweiterung zum ANSI/ISO-SQL92-Standard erkennt MySQL DOUBLE als ein Synonym
f¨ur den DOUBLE PRECISION-Typ. Im Gegensatz zur Anforderung des Standard, dass die
Genauigkeit f¨ur REAL kleiner sein muss als die f¨ur DOUBLE PRECISION, implementiert MySQL
beide als 8-Byte-Fließkommawerte doppelter Genauigkeit (wenn er nicht im “ANSI-Modus”
l¨auft). F¨ur maximale Portabilit¨at sollte Code, der die Speicherung n¨aherungsweiser nu-
Comentarios a estos manuales