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:

SpeicherklasseBeschreibung
NULLDer Wert ist ein NULL-Wert.
INTEGERDer Wert ist eine vorzeichenbehaftete Ganzzahl, gespeichert in 1, 2, 3, 4, 6 oder 8 Bytes, abhängig von der Größe des Werts.
REALDer Wert ist ein Gleitkommawert, gespeichert als 8-Byte-IEEE-Gleitkommazahl.
TEXTDer Wert ist eine Textzeichenfolge, gespeichert unter Verwendung der Datenbankkodierung (UTF-8, UTF-16BE oder UTF-16LE).
BLOBDer 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ätstypBeschreibung
TEXTNumerische Daten müssen vor dem Einfügen in das Textformat konvertiert und dann in das Zielfeld eingefügt werden.
NUMERICWenn 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.
INTEGERFü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.
REALIhre Regeln sind im Wesentlichen dieselben wie bei NUMERIC, mit dem einzigen Unterschied, dass Textdaten wie "30000.0" nicht in INTEGER umgewandelt werden.
NONEEs 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:

DatentypAffinitätstyp
  • INT

  • INTEGER

  • TINYINT

  • SMALLINT

  • MEDIUMINT

  • BIGINT

  • UNSIGNED BIG INT

  • INT2

  • INT8

INTEGER
  • CHARACTER(20)

  • VARCHAR(255)

  • VARYING CHARACTER(255)

  • NCHAR(55)

  • NATIVE CHARACTER(70)

  • NVARCHAR(100)

  • TEXT

  • CLOB

TEXT
  • BLOB

  • Nicht spezifizierter Typ

BLOB
  • REAL

  • DOUBLE

  • DOUBLE PRECISION

  • FLOAT

REAL
  • NUMERIC

  • DECIMAL(10,5)

  • BOOLEAN

  • DATE

  • DATETIME

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.

SpeicherklasseDatumsformat
TEXTDatum im Format "YYYY-MM-DD HH:MM:SS.SSS".
REALAnzahl der Tage seit Mittag Greenwich Mean Time am 24. November 4714 v. Chr.
INTEGERAnzahl 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