SQLite Datentypen
Ein SQLite-Datentyp ist ein Attribut, das den Datentyp für ein beliebiges Objekt angibt. Jede Spalte, Variable und jeder Ausdruck in SQLite hat einen zugehörigen Datentyp.
Sie können diese Datentypen beim Erstellen von Tabellen verwenden. SQLite verwendet ein allgemeineres dynamisches Typsystem. In SQLite ist der Datentyp eines Werts mit dem Wert selbst verknüpft, nicht mit seinem Container.
SQLite-Speicherklassen
Jeder in einer SQLite-Datenbank gespeicherte Wert hat eine der folgenden Speicherklassen:
| Speicherklasse | Beschreibung |
|---|---|
| NULL | Der Wert ist ein NULL-Wert. |
| INTEGER | Der Wert ist eine vorzeichenbehaftete Ganzzahl, gespeichert in 1, 2, 3, 4, 6 oder 8 Bytes, abhängig von der Größe des Werts. |
| REAL | Der Wert ist ein Gleitkommawert, gespeichert als 8-Byte-IEEE-Gleitkommazahl. |
| TEXT | Der Wert ist eine Textzeichenfolge, gespeichert unter Verwendung der Datenbankkodierung (UTF-8, UTF-16BE oder UTF-16LE). |
| BLOB | Der Wert besteht aus Blob-Daten, die genau so gespeichert werden, wie sie eingegeben wurden. |
SQLite-Speicherklassen sind etwas allgemeiner als Datentypen. Die INTEGER-Speicherklasse beispielsweise umfasst 6 verschiedene Ganzzahldatentypen unterschiedlicher Länge.
SQLite-Affinitätstypen
SQLite unterstützt das Konzept der Typaffinität für Spalten. Eine Spalte kann weiterhin jeden Datentyp speichern; wenn Daten eingefügt werden, verwendet das Feld für seine Daten bevorzugt den Affinitätstyp als Speichermethode für diesen Wert. Die aktuelle Version von SQLite unterstützt die folgenden fünf Affinitätstypen:
| Affinitätstyp | Beschreibung |
|---|---|
| TEXT | Numerische Daten müssen vor dem Einfügen in das Textformat konvertiert und dann in das Zielfeld eingefügt werden. |
| NUMERIC | Wenn Textdaten in ein Feld mit NUMERIC-Affinität eingefügt werden, konvertiert SQLite die Textdaten in INTEGER- oder REAL-Daten, wenn der Konvertierungsvorgang keinen Verlust von Dateninformationen verursacht und vollständig umkehrbar ist. Wenn die Konvertierung fehlschlägt, speichert SQLite die Daten weiterhin als TEXT. Bei neuen Daten vom Typ NULL oder BLOB führt SQLite keine Konvertierung durch und speichert die Daten direkt als NULL oder BLOB. Zusätzlich ist zu beachten, dass SQLite bei konstantem Text im Gleitkommaformat, wie "30000.0", den Wert in INTEGER konvertiert und als INTEGER speichert, wenn er ohne Verlust numerischer Informationen in INTEGER konvertiert werden kann. |
| INTEGER | Für Felder mit INTEGER-Affinität sind die Regeln dieselben wie für NUMERIC, der einzige Unterschied besteht bei der Ausführung von CAST-Ausdrücken. |
| REAL | Ihre Regeln sind im Wesentlichen dieselben wie bei NUMERIC, mit dem einzigen Unterschied, dass Textdaten wie "30000.0" nicht in INTEGER umgewandelt werden. |
| NONE | Es wird keine Konvertierung durchgeführt; die Daten werden direkt als ihr eigener Datentyp gespeichert. |
SQLite-Affinitätstypen und Typnamen
Die folgende Tabelle listet die verschiedenen Datentypnamen auf, die beim Erstellen von SQLite3-Tabellen verwendet werden können, und zeigt außerdem die entsprechenden Affinitätstypen:
| Datentyp | Affinitätstyp |
|---|---|
| INTEGER |
| TEXT |
| BLOB |
| REAL |
| NUMERIC |
Boolescher Datentyp
SQLite hat keine separate Boolean-Speicherklasse. Stattdessen werden boolesche Werte als Ganzzahlen 0 (false) und 1 (true) gespeichert.
Datums- und Zeit-Datentyp
SQLite hat keine separate Speicherklasse zum Speichern von Datums- und/oder Zeitangaben, aber SQLite kann Datums- und Zeitangaben als TEXT-, REAL- oder INTEGER-Werte speichern.
| Speicherklasse | Datumsformat |
|---|---|
| TEXT | Datum im Format "YYYY-MM-DD HH:MM:SS.SSS". |
| REAL | Anzahl der Tage seit Mittag Greenwich Mean Time am 24. November 4714 v. Chr. |
| INTEGER | Anzahl der Sekunden seit 1970-01-01 00:00:00 UTC. |
Sie können Datums- und Zeitangaben in jedem der oben genannten Formate speichern, und Sie können die integrierten Datums- und Zeitfunktionen verwenden, um frei zwischen verschiedenen Formaten zu konvertieren.
Andere Erweiterungen