При определении столбцов таблицы для них необходимо указать тип данных. Каждый столбец имеет определенный тип данных. Для хранения данных в в SQLite применяются следующие типы:
NULL: указывает фактически на отсутствие значения
INTEGER: представляет целое число, которое может быть положительным и отрицательным и в зависимости от своего значения может занимать 1, 2, 3, 4, 6 или 8 байт
REAL: представляет число с плавающей точкой, занимает 8 байт в памяти
TEXT: строка текста в одинарных кавычках, которая сохраняется в кодировке базы данных (UTF-8, UTF-16BE или UTF-16LE)
BLOB: бинарные данные
Стоит отметить, что SQLite оперирует концепцией классов хранения или storage class. И по сути все эти пять типов называются классами хранения. Концепция классов хранения несколько шире, чем тип данных. Например, класс INTEGER по сути объединяет 6 различных целочисленных типов данных разной длины. Однако это больше относится к внутренней работе SQLite. И внешне, например, на уровне определения таблицы и работы с данными мы будем работать с типом INTEGER, а не со всеми реальными типами, которые скрываются за этим названием. Поэтому фактически классы хранения ассоциируются с типа данных. И выше представленные пять классов хранения также обычно называют типами данных и данные можно применять при определении столбцов:
CREATE TABLE users ( id INTEGER, name TEXT, age INTEGER, weight REAL, image BLOB );
Кроме того, мы можем применять идентификатор NUMERIC. Этот идентификатор не представляет отдельного типа данных. А фактически представляет столбец, который может хранить данные всех пяти выше перечисленных типов (в терминологии SQLite NUMERIC еще называется type affinity). Например:
CREATE TABLE users ( id INTEGER, name TEXT, age NUMERIC );