Firebird Datentypen

Aus DBWiki
Wechseln zu: Navigation, Suche

Binäre Datentypen

BLOB
BLOBs (Binary Large Objects) sind komplexe Strukturen, in denen Text- und Binärdaten von unbestimmter Länge, oft sehr groß, gespeichert werden.

Integer Datentypen

Die Datentypen SMALLINT, INTEGER und BIGINT werden für Ganzzahlen unterschiedlicher Genauigkeit im Dialekt 3 verwendet. Firebird unterstützt keinen Integer-Datentyp ohne Vorzeichen.

SMALLINT
Der 16-Bit-SMALLINT-Datentyp dient der kompakten Datenspeicherung ganzzahliger Daten, für die nur ein kleiner Bereich möglicher Werte zur Speicherung benötigt wird. Die Zahlen des Typs SMALLINT liegen im Bereich von -216 bis 216 - 1, also von -32.768 bis 32.767.
INTEGER
Der INTEGER-Datentyp ist eine 32-Bit Ganzzahl. Der Kurzname des Datentyps ist INT. Zahlen vom Typ INTEGER liegen im Bereich von -232 bis 232 - 1, also von -2.147.483.648 bis 2.147.483.647.
BIGINT
BIGINT ist ein SQL:99-kompatibler 64-Bit Integer-Datentyp, der nur in Dialect 3 verfügbar ist. Wenn ein Client Dialekt 1 verwendet, wird der vom Server gesendete Generatorwert auf eine 32-Bit Ganzzahl (INTEGER) reduziert. Wenn Dialekt 3 für die Verbindung verwendet wird, ist der Generatorwert vom Typ BIGINT.
Die Zahlen des Typs BIGINT liegen im Bereich von -263 bis 263 - 1, oder von -9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807.

Fließkomma-Datentypen

Fließkomma-Datentypen werden in einem IEEE 754 Binärformat gespeichert, das aus Vorzeichen, Exponent und Mantisse besteht. Die Genauigkeit ist dynamisch, entsprechend dem physikalischen Speicherformat des Wertes, das genau 4 Byte für den FLOAT-Typ und 8 Byte für DOUBLE PRECISION beträgt.

In Anbetracht der Besonderheiten der Speicherung von Fließkommazahlen in einer Datenbank sind diese Datentypen nicht für die Speicherung monetärer Daten zu empfehlen. Aus den gleichen Gründen werden Spalten mit Fließkomma-Daten nicht für die Verwendung als Schlüssel oder für die Anwendung von Eindeutigkeitsbeschränkungen empfohlen.

Um Daten in Spalten mit Fließkomma-Datentypen zu testen, sollten Ausdrücke nicht nach exakten Übereinstimmungen suchen, sondern anhand eines Bereichs, z.B. BETWEEN, prüfen.

Bei der Verwendung dieser Datentypen in Ausdrücken ist äußerste Vorsicht geboten, wenn es um die Rundung von Auswertungsergebnissen geht.

FLOAT
Dieser Datentyp hat eine ungefähre Genauigkeit von 7 Nachkommastellen. Um die Sicherheit der Datenspeicherung zu gewährleisten, sollten Sie sich auf nur 6 Ziffern verlassen.
DOUBLE PRECISION
Dieser Datentyp wird mit einer ungefähren Genauigkeit von 15 Stellen gespeichert.

Festkomma-Datentypen

Festkomma-Datentypen gewährleisten die Vorhersagbarkeit von Multiplikations- und Divisions-Operationen und machen sie zur ersten Wahl für die Speicherung von Geldwerten. Firebird implementiert zwei Festkomma-Datentypen: NUMERIC und DECIMAL. Nach der Norm begrenzen beide Typen die gespeicherte Zahl auf die angegebene Skala (die Anzahl der Nachkommastellen).

Unterschiedliche Behandlungen schränken die Genauigkeit für jeden Typ ein: Die Genauigkeit der NUMERIC-Spalten ist genau "wie deklariert", während die DECIMAL-Spalten Zahlen akzeptieren, deren Genauigkeit mindestens dem entspricht, was deklariert wurde.

Zum Beispiel definiert NUMERIC(4, 2) eine Zahl, die insgesamt aus vier Ziffern besteht, einschließlich zwei Nachkommastellen, d.h. sie kann bis zu zwei Ziffern vor dem Punkt und nicht mehr als zwei Ziffern nach dem Punkt haben. Wenn die Zahl 3,1415 in eine Spalte mit dieser Datentyp-Definition geschrieben wird, wird der Wert von 3,14 in der Spalte NUMERIC(4, 2) gespeichert.

Die Form der Deklaration von Festkommazahlen, z.B. NUMERIC(p, s), ist für beide Typen gleich. Es ist wichtig zu wissen, dass das s-Argument in diesem Template nicht "eine Anzahl von Nachkommastellen", sondern eine Skala ist. Das Verstehen des Mechanismus zum Speichern und Abrufen von Festkomma-Daten sollte helfen, den Grund dafür zu veranschaulichen: Bei der Speicherung wird die Zahl mit 10s (10 hoch s) multipliziert und in eine ganze Zahl umgewandelt; beim Lesen wird die ganze Zahl zurückkonvertiert.

Die Art und Weise, wie Festkomma-Daten im DBMS gespeichert werden, hängt von mehreren Faktoren ab: deklarierte Genauigkeit, Datenbankdialekt, Deklarationstyp.

NUMERIC (precision [,scale])
DECIMAL (precision [,scale])

Datentypen für Datum und Uhrzeit

Die Datentypen DATE, TIME und TIMESTAMP werden verwendet, um mit Daten zu arbeiten, die Datum und Uhrzeit enthalten. Dialekt 3 unterstützt alle drei Typen, während Dialekt 1 nur DATE hat. Der DATE-Typ in Dialect 3 ist "date-only", während der Dialect 1 DATE-Typ sowohl Datum als auch Uhrzeit speichert, was TIMESTAMP in Dialect 3 entspricht. Dialekt 1 hat keinen "date-only"-Typ.

Sekundenbruchteile: Wenn Sekundenbruchteile in Datums- und Zeitdatentypen gespeichert werden, speichert Firebird sie auf Zehntausendstel Sekunden. Wenn eine niedrigere Granularität bevorzugt wird, kann der Bruch explizit als Tausendstel, Hundertstel oder Zehntelsekunde in Dialekt-3-Datenbanken von ODS 11 oder höher angegeben werden.

DATE
Der Datentyp DATE in Dialect 3 speichert nur das Datum ohne Uhrzeit. Der verfügbare Bereich für die Datenspeicherung reicht vom 01. Januar 0001 bis zum 31. Dezember 9999.
TIME
Der Datentyp TIME ist nur in Dialekt 3 verfügbar. Er speichert die Tageszeit im Bereich von 00:00:00,0000 bis 23:59:59,9999.
TIMESTAMP
Der Datentyp TIMESTAMP ist in Dialekt 3 und Dialekt 1 verfügbar. Er besteht aus zwei 32-Bit-Wörtern - einem Datumsteil und einem Zeitteil -, um eine Struktur zu bilden, die sowohl Datum als auch Uhrzeit speichert. Er ist identisch mit dem DATE-Datentyp in Dialekt 1.

Datentypen für Text

Für die Arbeit mit Textdaten hat Firebird die Datentypen CHAR mit fester Länge und VARCHAR mit variabler Länge. Die maximale Größe der in diesen Datentypen gespeicherten Textdaten beträgt 32.767 Bytes für CHAR und 32.765 Bytes für VARCHAR. Die maximale Anzahl der Zeichen, die in diese Grenzen passen, hängt davon ab, welches CHARACTER SET für die betrachteten Daten verwendet wird. Die Sortierreihenfolge hat keinen Einfluss auf dieses Maximum, obwohl sie die maximale Größe eines jeden Index, der die Spalte betrifft, beeinflussen kann.

Wenn bei der Definition eines Textfelds kein Zeichensatz explizit angegeben wird, wird der beim Anlegen der Datenbank angegebene Standardzeichensatz verwendet. Wenn in der Datenbank kein Standardzeichensatz definiert ist, erhält das Feld den Zeichensatz NONE.

CHAR
CHAR ist ein Datentyp fester Länge. Wenn die eingegebene Zeichenanzahl kleiner als die angegebene Länge ist, werden Leerzeichen am Ende des Feldes hinzugefügt. Generell muss das Pad-Zeichen kein Leerzeichen sein: Es hängt vom Zeichensatz ab, z.B. ist das Pad-Zeichen für den OCTETS-Zeichensatz Null.
Der vollständige Name dieses Datentyps ist CHARACTER, aber es gibt keine Notwendigkeit, den vollständige Namen zu verwenden.
Zeichendaten mit fester Länge können verwendet werden, um Codes zu speichern, deren Länge standardisiert ist und die eine bestimmte "Breite" in Verzeichnissen haben. Ein Beispiel für einen solchen Code ist z. Bsp. ein EAN13 Barcode, der genau 13 Zeichen umfasst, die alle gefüllt sind.
VARCHAR
VARCHAR ist der Basis-String-Typ für die Speicherung von Texten variabler Länge, bis zu einem Maximum von 32.765 Byte. Die gespeicherte Struktur entspricht der tatsächlichen Größe der Daten plus 2 Byte, wobei die Länge der Daten aufgezeichnet wird.
Alle Zeichen, die von der Client-Anwendung an die Datenbank gesendet werden, werden als sinnvoll erachtet, einschließlich der führenden und nachfolgenden Leerzeichen. Nachfolgende Leerzeichen werden jedoch nicht gespeichert: Sie werden nach dem Abruf bis zur aufgezeichneten Länge des Strings wiederhergestellt.
Der vollständige Name dieses Typs ist CHARACTER VARYING. Eine andere erlaubte Schreibweise lautet CHAR VARYING.


Wiki hinweis.png Anmerkung: Frei übersetzt aus Firebird 2.5 Language Reference mit folgendem Lizenzhinweis