SQLite Types de données : Int, Text, Numeric, Real, Blob

⚡ Résumé intelligent

SQLite Les types de données fonctionnent différemment des autres bases de données car SQLite utilise des types dynamiquesping, stockant n'importe quelle valeur dans n'importe quelle colonne. Les classes de stockage, l'affinité de type et les noms de types déclarés déterminent ensemble comment chaque valeur est physiquement enregistrée sur le disque.

  • 🧩 Dynamique Typing: SQLite Le type est dynamique, donc c'est la valeur que vous insérez, et non la définition de la colonne, qui détermine la façon dont les données sont stockées.
  • 🇧🇷 Classes de stockage : Cinq classes de stockage — NULL, INTEGER, REAL, TEXT et BLOB — décrivent comment chaque valeur est stockée sur le disque.
  • (I.e. Affinité de type : Chaque colonne reçoit une affinité recommandée — TEXTE, NUMÉRIQUE, ENTIER, RÉEL ou BLOB — à partir de son nom de type déclaré.
  • (I.e. Stockage des nombres : Tout type déclaré contenant INT devient INTEGER, tandis que REAL, DOUBLE et FLOAT contiennent des nombres à virgule flottante sur huit octets.
  • 📅 Dates et booléens : SQLite ne possède pas de classe DATE ou BOOLEAN dédiée et stocke ces valeurs sous forme de TEXT, REAL ou INTEGER.
  • 🤖 Assistance IA : Les assistants IA de conversion de texte en SQL et GitHub Copilot génèrent SQLite Définition des colonnes et choix des types de données en langage clair.

SQLite Types de données

Les sections ci-dessous expliquent comment SQLite Il aborde les types de données, en commençant par les cinq classes de stockage, puis l'affinité de type et ses règles d'affectation, et enfin des exemples pratiques de stockage d'entiers, de nombres réels, de BLOB, de booléens et de dates.

Types de données dans SQLite diffèrent de celles des autres systèmes de gestion de bases de données. SQLiteVous pouvez déclarer des types de données normalement, mais vous pouvez toujours stocker n'importe quelle valeur dans n'importe quel type de données.

SQLite Il n'y a pas de types prédéfinis ; vous pouvez stocker n'importe quel type de données dans n'importe quelle colonne. C'est ce qu'on appelle le typage dynamique.ping.

Dans les types statiques, comme dans d'autres systèmes de gestion de bases de données, si vous déclarez une colonne de type entier, vous ne pouvez insérer que des valeurs de type entier. Cependant, dans les types dynamiques, comme dans SQLiteLe type de la colonne est déterminé par la valeur insérée, puis SQLite stocke cette valeur en fonction de son type.

SQLite Classes de stockage

In SQLite Il existe différentes méthodes de stockage selon le type de valeur ; ces différentes méthodes de stockage sont appelées classes de stockage. SQLite.

Voici les classes de stockage disponibles dans SQLite:

  • NULL – cette classe de stockage est utilisée pour stocker toute valeur NULL.
  • INTEGER – toute valeur numérique est stockée sous forme d'entier signé (elle peut contenir des valeurs entières positives et négatives). Les valeurs INTEGER dans SQLite sont stockés sur 1, 2, 3, 4, 6 ou 8 octets de stockage en fonction de la valeur du nombre.
  • REAL – cette classe de stockage est utilisée pour stocker les valeurs à virgule flottante, et celles-ci sont stockées sur 8 octets.
  • TEXTE – stocke des chaînes de caractères. Il prend également en charge différents encodages tels que UTF-8, UTF-16BE ou UTF-16LE.
  • BLOB – Utilisé pour stocker des fichiers volumineux, comme des images ou des fichiers texte. La valeur est stockée sous forme de tableau d'octets, identique à la valeur d'entrée.

SQLite Type d'affinité

Il est recommandé de stocker des données de type similaire dans une colonne. Toutefois, vous pouvez y stocker tout type de données ; ces types sont recommandés, mais non obligatoires.

Ces types ont été introduits dans SQLite pour maximiser la compatibilité entre SQLite et d'autres système de gestion de base de donnéess.

Toute colonne déclarée dans un SQLite Une affinité de type est attribuée à la base de données en fonction de son type de données déclaré. Voici la liste des affinités de type : SQLite:

  • TEXTE.
  • NUMÉRIQUE.
  • ENTIER.
  • RÉEL.
  • GOUTTE.

Voici comment SQLite détermine l'affinité d'une colonne à partir de son type de données déclaré :

  • L'affinité INTEGER est attribuée si le type déclaré contient le string « INT ».
  • L'affinité TEXT est attribuée si la colonne contient dans son type de données l'une des chaînes suivantes : « TEXT », « CHAR » ou « CLOB ». Par exemple, le type VARCHAR se verra attribuer l'affinité TEXT.
  • L'affinité BLOB est attribuée si la colonne n'a aucun type spécifié ou si le type de données est un BLOB.
  • L'affinité REAL est attribuée si le type contient l'une des chaînes suivantes : « DOUB », « REAL » ou « FLOAT ».
  • L'affinité NUMÉRIQUE est attribuée pour tout autre type de données.

Vous trouverez également ci-dessous un tableau présentant quelques exemples de la carte.ping jusqu'à fois SQLite types de données et leurs affinités déterminées par ces règles :

Carteping jusqu'à  fois SQLite Types de données déclarés et leurs affinités de type attribuées, avec des exemples pour INT, CHAR, TEXT, BLOB, REAL, FLOAT et NUMERIC

Exemples de stockage de types de données dans SQLite

Stockage des nombres avec SQLite INTEGER

Si une colonne possède un type de données contenant le mot « INT », elle se verra attribuer une affinité de type INTEGER et sera stockée dans une classe de stockage INTEGER.

Tous les types de données suivants se voient attribuer une affinité de type INTEGER :

  • INT, ENTIER, BIGINT.
  • INT2, INT4, INT8.
  • PETIT INT, PETIT INT, INT MOYEN.

Affinité de type INTEGER dans SQLite peut contenir n'importe quel nombre entier attribué (positif ou négatif) de 1 octet jusqu'à un maximum de 8 octets.

Stockage des nombres avec SQLite REAL

Les nombres RÉELS sont des nombres à double précision en virgule flottante. SQLite stocke les nombres réels sous forme de tableau de 8 octets. Voici la liste des types de données : SQLite que vous pouvez utiliser pour stocker des nombres RÉELS :

  • RÉEL.
  • DOUBLE.
  • DOUBLE PRÉCISION.
  • FLOTTER.

Stocker des données volumineuses avec SQLite BLOB

Il n'existe qu'une seule façon de stocker des fichiers volumineux dans un SQLite La base de données utilise le type de données BLOB. Ce type permet de stocker des fichiers volumineux, comme des images ou des fichiers de tout type. Le fichier est converti en un tableau d'octets, puis stocké avec la même taille que le fichier d'entrée.

Stockage SQLite Booleans

SQLite Il n'existe pas de classe de stockage BOOLEAN distincte. Les valeurs BOOLEAN sont stockées sous forme d'INTEGERS, 0 représentant faux et 1 représentant vrai.

Stockage SQLite dates et heures

Vous pouvez déclarer des dates ou des dates-heures dans SQLite en utilisant l’un des types de données suivants :

  • le DATE at
  • Datetime
  • TIMESTAMP
  • TIME[DM

Notez qu'il n'existe pas de classe de stockage DATE ou DATETIME distincte dans SQLiteEn revanche, toutes les valeurs déclarées avec l'un des types de données précédents sont stockées dans une classe de stockage en fonction du format de date de la valeur insérée, comme suit :

  • TEXTE – si vous insérez la valeur de la date au format d'une chaîne ISO8601 (« AAAA-MM-JJ HH:MM:SS.SSS »).
  • REAL – si vous insérez la valeur de date sous forme de numéro de jour julien, le nombre de jours écoulés depuis midi à Greenwich le 24 novembre 4714 avant J.-C. La valeur de date est alors stockée comme RÉEL.
  • INTEGER - comme Unix Heure, le nombre de secondes depuis le 1970/01/01 00:00:00 UTC.

FAQ

Une classe de stockage est la manière dont SQLite Stocke physiquement une valeur : NULL, INTEGER, REAL, TEXT ou BLOB, déterminée pour chaque valeur lors de l’exécution. L’affinité de type est la classe préférée d’une colonne, choisie à partir de son nom de type déclaré. SQLite tente de s'appliquer.

Non. SQLite Le nombre entre parenthèses est ignoré ; VARCHAR(50) et VARCHAR se comportent donc de manière identique. Les deux types bénéficient de l’affinité TEXT car leur nom contient CHAR. SQLite n'impose aucune limite de longueur, à l'exception de la valeur globale SQLITE_MAX_LENGTH.

Utilisez la fonction `typeof()` dans une requête, par exemple : `SELECT typeof(column) FROM table`. Elle renvoie la classe de stockage réelle de la valeur (`null`, `integer`, `real`, `text` ou `blob`), qui peut différer du type déclaré de la colonne en raison du type dynamique.ping.

Tableaux STRICT, ajoutés dans SQLite 3.37, désactivez l'affinité de type et rejetez toute valeur ne correspondant pas au type déclaré de la colonne. Seuls les types INT, INTEGER, REAL, TEXT, BLOB et ANY sont autorisés, ce qui confère au type une rigidité stricte.ping trouvé dans d'autres bases de données.

Stockez les montants sous forme d'entier (INTEGER) dans la plus petite unité, comme les centimes, afin d'éviter les erreurs d'arrondi des valeurs à virgule flottante réelles (REAL). Pour une précision variable ou très élevée, le type texte (TEXT) conserve la chaîne de caractères numérique exacte. SQLite n'a pas de type monétaire à point fixe dédié.

Le paramètre SQLITE_MAX_LENGTH limite la taille d'une valeur TEXT ou BLOB à un milliard d'octets par défaut. L'implémentation actuelle prend en charge jusqu'à 2 147 483 647 octets. Vous pouvez réduire cette limite à l'exécution à l'aide de l'interface sqlite3_limit() si nécessaire.

Oui. Les assistants IA de conversion de texte en SQL transforment une description en langage naturel en instructions CREATE TABLE, en choisissant SQLite Les classes de stockage et leurs affinités, telles que INTEGER, TEXT et REAL, sont prises en compte. Spécifier les types de colonnes existants améliore la précision, et le code SQL généré doit être vérifié avant exécution.

Oui. Copilote GitHub suggère des définitions de colonnes avec SQLite types comme INTEGER, TEXT, REAL et BLOB directement dans les éditeurs tels que VS CodeIl lit le schéma et le code de migration environnants, de sorte que ses suggestions réutilisent vos véritables noms de tables et de colonnes.

Résumez cet article avec :