Quelle est la différence entre les types de données SQL entier comme int, entier, bigint, etc.?

Quelle est la différence entre les types de données entiers dans sqlite?

INT
ENTIER
TINYINT
SMALLINT
MEDIUMINT
BIGINT
UNSIGNED BIG INT
INT2
INT8

Lequel peut stocker des entiers de 32 bits et lequel peut stocker des valeurs de 64 bits? Existe-t-il un support pour 128 bits?

Je trouve la taille des données entières un peu confuse pour le moment, INTEGER par exemple peut stocker des entiers signés jusqu’à 64 bits, mais les valeurs ne peuvent occuper que 32 bits sur le disque.

L’appel de sqlite3_column_int sur une colonne INTEGER ne fonctionnera que si la valeur stockée est inférieure à la valeur int32 max, comment se comportera-t-il s’il est supérieur?

De la documentation SQLite3:

http://www.sqlite.org/fr/datatype3.html

La plupart des moteurs de firebase database SQL (tous les moteurs de firebase database SQL autres que SQLite, pour autant que nous sachions) utilisent un typage statique et rigide. Avec le typage statique, le type de données d’une valeur est déterminé par son conteneur, c’est-à-dire la colonne dans laquelle la valeur est stockée.

SQLite utilise un système de type dynamic 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. Le système de type dynamic de SQLite est rétrocompatible avec les systèmes de types statiques les plus courants des autres moteurs de bases de données, dans le sens où l’instruction SQL qui fonctionne sur des bases de données statiques devrait fonctionner de la même manière dans SQLite. Cependant, le typage dynamic dans SQLite lui permet de faire des choses qui ne sont pas possibles dans les bases de données traditionnelles à typage rigide.

Donc, dans MS Sql Server (par exemple), un “int” == “entier” == 4 octets / 32 bits.

En revanche, un “entier” SqlLite peut contenir tout ce que vous y mettez: d’un caractère d’un octet à un long de huit octets.

Le lien ci-dessus répertorie tous les types et donne plus de détails sur “l’affinité” de Sqlite.

L’interface C / C ++ à laquelle vous faites référence doit fonctionner avec des langages fortement typés.

Il existe donc deux API: sqlite3_column_int (), max 4 octets; et sqlite3_column_int64 ()

http://www.sqlite.org/capi3ref.html#sqlite3_int64