SQLite Типы данных
Тип данных SQLite — это атрибут, который определяет тип данных для любого объекта. Каждый столбец, переменная и выражение в SQLite имеют связанный тип данных.
Вы можете использовать эти типы данных при создании таблиц. SQLite использует более общую динамическую систему типов. В SQLite тип данных значения связан с самим значением, а не с его контейнером.
Классы хранения SQLite
Каждое значение, хранящееся в базе данных SQLite, имеет один из следующих классов хранения:
| Класс хранения | Описание |
|---|---|
| NULL | Значение является значением NULL. |
| INTEGER | Значение является знаковым целым числом, хранящимся в 1, 2, 3, 4, 6 или 8 байтах в зависимости от величины значения. |
| REAL | Значение является значением с плавающей запятой, хранящимся как 8-байтовое число с плавающей запятой IEEE. |
| TEXT | Значение является текстовой строкой, хранящейся с использованием кодировки базы данных (UTF-8, UTF-16BE или UTF-16LE). |
| BLOB | Значение представляет собой blob-данные, хранящиеся точно так, как они были введены. |
Классы хранения SQLite немного более общие, чем типы данных. Например, класс хранения INTEGER включает 6 различных целочисленных типов данных разной длины.
Типы сродства SQLite
SQLite поддерживает понятие сродства типов для столбцов. Любой столбец по-прежнему может хранить любой тип данных; при вставке данных данные поля будут преимущественно использовать тип сродства в качестве способа хранения этого значения. Текущая версия SQLite поддерживает следующие пять типов сродства:
| Тип сродства | Описание |
|---|---|
| TEXT | Числовые данные необходимо преобразовать в текстовый формат перед вставкой, а затем вставить в целевое поле. |
| NUMERIC | Когда текстовые данные вставляются в поле со сродством NUMERIC, если операция преобразования не приводит к потере информации о данных и полностью обратима, SQLite преобразует текстовые данные в данные типа INTEGER или REAL. Если преобразование не удается, SQLite все равно сохранит данные как TEXT. Для новых данных типа NULL или BLOB SQLite не выполняет никаких преобразований и сохраняет данные непосредственно как NULL или BLOB. Дополнительно следует отметить, что для константного текста в формате с плавающей запятой, например "30000.0", если значение можно преобразовать в INTEGER без потери числовой информации, SQLite преобразует его для хранения как INTEGER. |
| INTEGER | Для полей со сродством INTEGER правила такие же, как для NUMERIC, с единственным отличием при выполнении выражений CAST. |
| REAL | Его правила в основном такие же, как для NUMERIC, с единственным отличием: текстовые данные, такие как "30000.0", не будут преобразованы для хранения как INTEGER. |
| NONE | Преобразование не выполняется; данные сохраняются непосредственно в своем собственном типе данных. |
Типы сродства SQLite и имена типов
В следующей таблице перечислены различные имена типов данных, которые можно использовать при создании таблиц SQLite3, а также показаны соответствующие типы сродства:
| Тип данных | Тип сродства |
|---|---|
| INTEGER |
| TEXT |
| BLOB |
| REAL |
| NUMERIC |
Логический тип данных
SQLite не имеет отдельного класса хранения Boolean. Вместо этого значения Boolean хранятся как целые числа 0 (false) и 1 (true).
Тип данных даты и времени
SQLite не имеет отдельного класса хранения для хранения дат и/или времени, но SQLite может хранить даты и время как значения TEXT, REAL или INTEGER.
| Класс хранения | Формат даты |
|---|---|
| TEXT | Дата в формате "YYYY-MM-DD HH:MM:SS.SSS". |
| REAL | Количество дней с полудня по среднему времени Гринвича 24 ноября 4714 г. до н. э. |
| INTEGER | Количество секунд с 1970-01-01 00:00:00 UTC. |
Вы можете хранить даты и время в любом из вышеперечисленных форматов и использовать встроенные функции даты и времени для свободного преобразования между различными форматами.
Другие расширения