Databases Reference
In-Depth Information
Es würde als Ergebnis der Berechnung z. B. 1000 herauskom-
men, da aber nur drei Vor- und zwei Nachkommastellen zur
Verfügung stehen, kann das Ergebnis nicht in die Tabelle einge-
tragen werden.
Bei
FLOAT
,
REAL
und
DOUBLE PRECISION
handelt es sich um
Fließkommazahlen, die sehr hohe Werte annehmen können,
allerdings gegebenenfalls viele Stellen abschneiden. Dies wird
mit folgendem SQL-Skript verdeutlicht.
FLOAT
REAL
CREATE TABLE Typtest2(
Nummer Integer,
r REAL,
PRIMARY KEY (Nummer)
);
INSERT INTO TYPtest2 VALUES (1,999.99);
INSERT INTO TYPtest2 VALUES (2,-9999.99);
UPDATE Typtest2
SET r=r+1E24;
UPDATE Typtest2
SET r=r-1E24;
SELECT * FROM Typtest2
DOUBLE PRE-
CISION
Die Ausgabe ist:
NUMMER R
---------- ----------
1 0
2 0
Dabei steht 1E24 für 1*10
24
. Die kleinen Werte sind bei der Ad-
dition und nachfolgenden Subtraktion des gleichen Wertes ver-
loren gegangen. Dies könnte z. B. dann ärgerlich sein, wenn
irrtümlich ein sehr hoher Betrag auf ein „kleines“ Gehaltskonto
überwiesen und schnell wieder abgebucht wird. Kleine Konto-
inhalte gehen verloren. Aus diesem Grund ist die vorher er-
wähnte Maßnahme, genau über den Datentyp bei Geldbeträgen
nachzudenken, sehr wichtig.
Als Datentypen für Texte stehen
CHAR(q)
und
VARCHAR(q)
zur Verfügung. Dabei gibt q die genaue bzw. maximale Anzahl
von Zeichen an. Größere Texte können nicht aufgenommen
werden. Bei
CHAR
werden intern immer q Zeichen, bei
VARCHAR
werden nur die Zeichen des tatsächlich eingetragenen
Textes abgespeichert.
CHAR
ist in der Regel schneller in der
Verarbeitung, kann aber wesentlich mehr Speicherplatz bean-
spruchen, was dann unter anderem auch die Verarbeitungszeit
wieder negativ beeinflussen kann.
Ungenauigkeit
beim Rechnen
CHAR
VARCHAR
129