SQLite Types de données

Un type de données SQLite est un attribut qui spécifie le type de données pour tout objet. Chaque colonne, variable et expression dans SQLite a un type de données associé.

Vous pouvez utiliser ces types de données lors de la création de tables. SQLite utilise un système de types dynamique plus général. Dans SQLite, le type de données d'une valeur est associé à la valeur elle-même, et non à son conteneur.

Classes de stockage SQLite

Chaque valeur stockée dans une base de données SQLite possède l'une des classes de stockage suivantes :

Classe de stockageDescription
NULLLa valeur est une valeur NULL.
INTEGERLa valeur est un entier signé, stocké sur 1, 2, 3, 4, 6 ou 8 octets selon la magnitude de la valeur.
REALLa valeur est une valeur à virgule flottante, stockée sous la forme d'un nombre à virgule flottante IEEE de 8 octets.
TEXTLa valeur est une chaîne de texte, stockée à l'aide de l'encodage de la base de données (UTF-8, UTF-16BE ou UTF-16LE).
BLa valeur est une donnée blob, stockée exactement telle qu'elle a été saisie.

Les classes de stockage SQLite sont légèrement plus générales que les types de données. La classe de stockage INTEGER, par exemple, inclut 6 types de données entiers différents de longueurs différentes.

Types d'affinité SQLite

SQLite prend en charge le concept d'affinité de type pour les colonnes. Une colonne peut toujours stocker n'importe quel type de données ; lorsque des données sont insérées, les données du champ utiliseront en priorité le type d'affinité comme méthode de stockage de cette valeur. La version actuelle de SQLite prend en charge les cinq types d'affinité suivants :

Type d'affinitéDescription
TEXTLes données numériques doivent être converties au format texte avant d'être insérées, puis insérées dans le champ cible.
NUMERICLorsque des données texte sont insérées dans un champ ayant l'affinité NUMERIC, si l'opération de conversion n'entraîne aucune perte d'information de données et est entièrement réversible, SQLite convertira les données texte en données de type INTEGER ou REAL. Si la conversion échoue, SQLite stockera quand même les données en tant que TEXT. Pour les nouvelles données de type NULL ou BLOB, SQLite n'effectuera aucune conversion et stockera les données directement en tant que NULL ou BLOB. Il convient en outre de noter que pour un texte constant au format à virgule flottante, tel que "30000.0", si la valeur peut être convertie en INTEGER sans perte d'information numérique, SQLite la convertira en stockage INTEGER.
INTEGERPour les champs ayant une affinité INTEGER, les règles sont les mêmes que pour NUMERIC, la seule différence intervenant lors de l'exécution d'expressions CAST.
REALSes règles sont globalement les mêmes que celles de NUMERIC, à la seule différence que des données texte comme "30000.0" ne seront pas converties en stockage INTEGER.
NONEAucune conversion n'est effectuée ; les données sont stockées directement selon leur propre type de données.

Types d'affinité SQLite et noms de types

Le tableau suivant répertorie les différents noms de types de données qui peuvent être utilisés lors de la création de tables SQLite3, et indique également les types d'affinité correspondants :

Type de donnéesType d'affinité
  • 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
  • B

  • Type non spécifié

B
  • REAL

  • DOUBLE

  • DOUBLE PRECISION

  • FLOAT

REAL
  • NUMERIC

  • DECIMAL(10,5)

  • BOOLEAN

  • DATE

  • DATETIME

NUMERIC

Type de données booléen

SQLite ne dispose pas d'une classe de stockage booléenne distincte. À la place, les valeurs booléennes sont stockées sous forme d'entiers 0 (faux) et 1 (vrai).

Type de données Date et heure

SQLite ne dispose pas d'une classe de stockage distincte pour stocker des dates et/ou des heures, mais SQLite peut stocker des dates et des heures sous forme de valeurs TEXT, REAL ou INTEGER.

Classe de stockageFormat de date
TEXTDate au format "YYYY-MM-DD HH:MM:SS.SSS".
REALNombre de jours depuis midi, heure moyenne de Greenwich, le 24 novembre 4714 av. J.-C.
INTEGERNombre de secondes depuis 1970-01-01 00:00:00 UTC.

Vous pouvez stocker des dates et des heures dans n'importe lequel des formats ci-dessus, et vous pouvez utiliser les fonctions de date et d'heure intégrées pour convertir librement entre différents formats.

Autres extensions