SQLite, la base de données embarquée


Les types de données de SQLite

Décrit les différents types de données utilisables avec une base de données SQLite.

SQLite est un SGBD   compatible avec les types de donnnées du langage SQL   mais avec quelques restrictions et particularités.


 Les types de données

SQLite est un SGBD   compatible SQL  , vous pourrez donc créer des tables à partir d’un script avec des CREATE TABLE avec la même syntaxe que pour un autre SGBD  . Par contre SQLite gère les types de données de manière différente des autres SGBD. Disposant de types de données moins nombreux et légèrement différent, lorsque vous ajouterez un nouvel enregistrement avec des données, SQLite se débrouillera, pour chaque champ, pour traduire dynamiquement la données dans un des types qu’il gère. La liste de ces types sont nommées classes de stockages. SQLite défini également une liste de types d’affinités qui sont les types que l’on pourra utiliser lors de la définition d’une colonne lors de la création de la table.

 Les classes de stockages

Voici la liste des différentes classes qui seront utilisées pour stocker les données :

Classe de stockage Type de donnée sauvegardées
NULL représente la valeur NULL
INTEGER pour les nombres entiers stockés sur 1, 2, 3, 4, 6 ou 8 octets selon la taille.
REAL pour les nombres à virgules flotentes, stockées sur 8 octets (selon la norme IEEE 754).
TEXT pour les chaînes de caractères codées selon l’encodage spécifié (UTF-8, …)
BLOB pour les données brutes, octets, images… stockées au format binaire.

lien : sqlite.org/datatype3.html

 Les types d’affinités

Les type d’affinités, sont les types que l’on peut utiliser pour définir le type de chaque colonne lors de la création de la table avec l’instruction CREATE TABLE. Cela correspond en fait à un type préférentiel qui pourra orienter SQLite vers une classe de stockage lors de l’enregistrement d’une donnée. Si la données transmise, ne correspond pas au type spécifié, SQLite effectuera un transtypage vers une classe de stockage la plus appropriée lors de chaque enregistrement.

Voici la liste de ces classes d’affinité

Type d’affinitéClasse de stockage préférentielleautre stockage possible
TEXT TEXT (chaîne de longueur quelconque) BLOB, NULL
INTEGER INTEGER (nombre entier) REAL, TEXT, BLOB, NULL
REAL REAL (nombre avec virgule) TEXT, BLOB, NULL
NUMERIC Entier ou réel TEXT, BLOB, NULL
NONE type indéfini. Fonction du type de la donnée passée.

 Compatibilité avec les types SQL   traditionnels

Dans le but de rendre compatible des scripts SQL écrits pour d’autres SGBD, il est possible de faire référence à des types SQL standard lors de la création d’une table. Le tableau suivant montre la correspondance effectuée par SQLite entre types SQL et types d’affinités.

Types SQL Type d’affinités SQLite
Les types contenant CHAR comme CHAR, VARCHAR(x)… ou TEXT, CLOB TEXT
Les types contenant INT comme INTEGER(x), TINYINT... INTEGER
REAL, DOUBLE, FLOAT, DEC(x,y) REAL
NUMERIC, DECIMAL, BOOLEAN, DATE, DATETIME NUMERIC
BLOB NONE

Remarque sur les VARCHAR( x ) : avec ce type de données, la valeur x spécifie un nombre de caractères maxi à ne pas dépasser pour ce champ. Avec un SGBD classique, vous ne pourrez pas dépasser cette valeur et une erreur est en principe générée. Avec SQLite, cela correspondra au type d’affinité TEXT donc de longueur quelconque. Vous pourrez donc enregistrer une chaine de caractère plus longue que spécifiée même si ce n’est pas conseillé si vous compter un jour transférer votre base vers un SGBD classique.

 Les types de contraintes

Comme pour les SGBD classiques, il est possible d’ajouter des contraintes lors de la définition de champs mais avec un comportement pouvant être différent. Voici la liste de ces mots clés :

Mot cléDescription
NOT NULL Le champ ne peut pas être NULL
AUTOINCREMENT Génère un index d’unicité
CHECK Précise une contrainte particulière pour la donnée
DEFAULT spécifie une valeur par défaut
COLLATE méthode de comparaison pour trier sur la colonne
PRIMARY KEY Spécifie une ou plusieurs colonnes comme clé primaire. Ajouter NOT NULL car SQLite permet la valeur NULL sur une clé primaire.
UNIQUE La valeur pour la ou les colonnes doit être unique
FOREIGN KEY Définie une clé étrangère pour la colonne

 Remarque sur les clés primaires

Pour chaque table, SQLite défini une colonne nommée index d’unicité de type ROWID qui n’est pas visible. Lorsque l’on défini un champ en tant que PRIMARY KEY de type entier, ce dernier sera en fait un alias sur le ROWID.

 Remarque sur COLLATE

La contrainte accepte les valeurs suivantes qui vont influencer l’ordre de tris :

ValeurDescription
BINARY Comparaison suivant la place et le code du caractère en fonction de l’encodage.
NOCASE Ne tient pas compte de la casse entre majuscules et minuscules lors de la comparaison. ATTENTION : ne gère pas les lettres accentuées.
RTRIM Ne tient pas comptes des espaces lors du tri.

Article n° 89

Crée par: chris

Créé le: 18 mai 2017

Modifié le: 18 mai 2017

Nombre de visites: 2874

Popularité: 68 %

Popularité absolue: 10

Mots clés de cet article


SPIP

2003-2019 LePpf
Plan du site | | Contact | RSS 2.0

Visiteurs connectés : 8

Nombre moyen de visites quotidiennes sur le site: 207