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.
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.
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 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érentielle | autre 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. |
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.
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 |
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.
La contrainte accepte les valeurs suivantes qui vont influencer l’ordre de tris :
Valeur | Description |
---|---|
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. |
Crée par: chris
Créé le: 18 mai 2017
Modifié le: 18 mai 2017
Nombre de visites: 6757
Popularité: 24 %
Popularité absolue: 2
2003-2023 LePpf
Plan du site
| Se connecter |
Contact |
RSS 2.0 |
Sur YouTube
Visiteurs connectés : 1
Nombre moyen de visites quotidiennes sur le site: 204