SQLite Типы данных: Int, Text, Numeric, Real, Blob

⚡ Умное резюме

SQLite Типы данных работают иначе, чем другие базы данных, потому что SQLite использует динамический типping, сохраняя любое значение в любом столбце. Классы хранения, привязка типов и объявленные имена типов вместе определяют, как каждое значение физически сохраняется на диске.

  • 🧩 Динамический Тайping: SQLite Это динамически типизированная структура данных, поэтому способ хранения данных определяется вставляемым значением, а не определением столбца.
  • 🇧🇷 Классы хранения: Пять классов хранения — NULL, INTEGER, REAL, TEXT и BLOB — описывают способ хранения каждого значения на диске.
  • 🎯 Типовая принадлежность: Каждому столбцу присваивается рекомендуемый тип данных — TEXT, NUMERIC, INTEGER, REAL или BLOB — исходя из объявленного имени типа.
  • 🔢 Хранение чисел: Любой объявленный тип, содержащий INT, становится INTEGER, в то время как REAL, DOUBLE и FLOAT хранят числа с плавающей запятой в восьми байтах.
  • 📅 Даты и логические значения: SQLite не имеет выделенных классов для работы с датами или логическими значениями и хранит эти значения в форматах TEXT, REAL или INTEGER.
  • 🤖 Помощь ИИ: Искусственный интеллект для преобразования текста в SQL и GitHub Copilot генерируют SQLite Определение столбцов и выбор типов данных осуществляется простым языком.

SQLite Типы данных

В разделах ниже объясняется, как SQLite Включает в себя работу с типами данных, начиная с пяти классов хранения, затем рассматривается привязка типов и правила их присвоения, и, наконец, приводятся примеры хранения целых чисел, действительных чисел, BLOB-объектов, логических значений и дат.

Типы данных в SQLite отличаются от тех, что используются в других системах управления базами данных. SQLiteВы можете объявлять типы данных обычным способом, но при этом можете хранить любое значение в любом типе данных.

SQLite Это бестиповая архитектура. В ней нет фиксированных типов данных; вы можете хранить любые типы данных в любом столбце. Это называется динамической архитектурой.ping.

В статических типах, как и в других системах управления базами данных, если вы объявляете столбец с типом данных integer, вы можете вставлять только значения типа integer. Однако в динамических типах, как, например, в SQLiteТип столбца определяется вставленным значением, а затем SQLite сохраняет это значение в зависимости от его типа.

SQLite Классы хранения

In SQLite В зависимости от типа значения существуют различные методы хранения; эти различные методы хранения называются классами хранения. SQLite.

Ниже приведены классы хранения, доступные в SQLite:

  • NULL, – этот класс хранения используется для хранения любого значения NULL.
  • ЦЕЛОЕ – любое числовое значение хранится как знаковое целое число (оно может содержать как положительные, так и отрицательные целые числа). Целочисленные значения в SQLite хранятся в 1, 2, 3, 4, 6 или 8 байтах памяти в зависимости от значения числа.
  • РЕАЛ – Этот класс хранения используется для хранения значений с плавающей запятой, и они хранятся в 8 байтах памяти.
  • ТЕКСТ – хранит текстовые строки. Он также поддерживает различные кодировки, такие как UTF-8, UTF-16BE или UTF-16LE.
  • Большой двоичный объект – используется для хранения больших файлов, таких как изображения или текстовые файлы. Значение хранится в виде массива байтов, аналогичного входному значению.

SQLite Тип родства

Рекомендуемый тип данных для хранения в столбце — это тип данных, соответствующий типу данных. Однако вы можете хранить данные любого типа по своему усмотрению; эти типы данных рекомендуются, но не являются обязательными.

Эти типы были введены в SQLite чтобы максимизировать совместимость между SQLite и другие система управления базами данныхs.

Любой столбец, объявленный в SQLite Базе данных присваивается тип соответствия в зависимости от объявленного типа данных. Вот список типов соответствия в базе данных. SQLite:

  • ТЕКСТ.
  • ЦИФРОВОЙ.
  • ЦЕЛОЕ.
  • НАСТОЯЩИЙ.
  • БЛОБ.

Вот как SQLite Определяет соответствие столбца его заявленному типу данных:

  • Сходство INTEGER назначается, если объявленный тип содержит string «ИНТ».
  • Тип данных TEXT присваивается, если столбец содержит в своем типе данных одну из следующих строк: “TEXT”, “CHAR” или “CLOB”. Например, типу VARCHAR будет присвоен тип данных TEXT.
  • Привязка BLOB назначается, если для столбца не указан тип или тип данных — BLOB.
  • Типу присваивается значение REAL, если он содержит одну из следующих строк: “DOUB”, “REAL” или “FLOAT”.
  • NUMERIC сходство назначается для любого другого типа данных.

Ниже также приведена таблица с примерами карты.ping между SQLite типы данных и их сходство определяются этими правилами:

Картаping между SQLite Объявленные типы данных и присвоенные им типы соответствия, включая примеры INT, CHAR, TEXT, BLOB, REAL, FLOAT и NUMERIC.

Примеры хранения типов данных в SQLite

Сохранение номеров с помощью SQLite ЦЕЛОЕ

Если какой-либо столбец содержит тип данных, включающий слово «INT», ему будет присвоен тип INTEGER. Он будет храниться в классе хранения INTEGER.

Всем следующим типам данных присваивается тип INTEGER:

  • ЦЕЛОЕ, ЦЕЛОЕ, БОЛЬШОЕ.
  • ИНТ2, ИНТ4, ИНТ8.
  • TINYINT, SMALLINT, MEDIUMINT.

Сходство типов INTEGER в SQLite Может хранить любое присвоенное целое число (положительное или отрицательное) размером от 1 байта до максимум 8 байтов.

Сохранение номеров с помощью SQLite РЕАЛ

Действительные числа — это числа с двойной точностью с плавающей запятой. SQLite хранит действительные числа в виде 8-байтового массива. Вот список типов данных в SQLite который вы можете использовать для хранения РЕАЛЬНЫХ чисел:

  • НАСТОЯЩИЙ.
  • ДВОЙНОЙ.
  • ДВОЙНАЯ ТОЧНОСТЬ.
  • ПЛАВАТЬ.

Хранение больших данных с помощью SQLite Большой двоичный объект

Существует только один способ хранения больших файлов в SQLite В базе данных используется тип данных BLOB. Этот тип данных используется для хранения больших файлов, таких как изображения или файлы любого типа. Файл преобразуется в массив байтов, а затем сохраняется в том же размере, что и входной файл.

Хранение SQLite Булевы

SQLite В данном случае отсутствует отдельный класс хранения логических значений (BOOLEAN). Вместо этого логические значения хранятся как целые числа (INTEGER), где 0 означает ложь, а 1 — истину.

Хранение SQLite даты и время

Вы можете указывать даты или время в SQLite используя один из следующих типов данных:

  • ДАТА
  • ДАТА ВРЕМЯ
  • ВРЕМЯ
  • ВРЕМЯ

Обратите внимание, что в системе нет отдельных классов хранения DATE или DATETIME. SQLiteВместо этого любые значения, объявленные с использованием одного из указанных выше типов данных, хранятся в классе хранения, зависящем от формата даты вставляемого значения, следующим образом:

  • ТЕКСТ – если вы вставляете значение даты в формате строки ISO8601 («YYYY-MM-DD HH:MM:SS.SSS»).
  • РЕАЛ – Если ввести значение даты в виде номера юлианского дня, то количество дней, прошедших с полудня в Гринвиче 24 ноября 4714 года до н.э., будет сохранено как число в формате REAL.
  • ЦЕЛОЕ - в виде Юникс Время, количество секунд с 1970-01-01 00:00:00 UTC.

Часто задаваемые вопросы (FAQ)

Класс хранения — это то, как SQLite Физически хранит значение: NULL, INTEGER, REAL, TEXT или BLOB, определяемое для каждого значения во время выполнения. Типовая привязка — это класс, которому отдает предпочтение столбец, выбираемый из объявленного имени типа. SQLite пытается подать заявку.

№ SQLite игнорирует число в скобках, поэтому VARCHAR(50) и VARCHAR ведут себя одинаково. Оба получают TEXT-привязку, поскольку имя типа содержит CHAR, и SQLite не устанавливает никаких ограничений по длине, кроме глобального значения SQLITE_MAX_LENGTH.

Используйте функцию `typeof()` в запросе, например, `SELECT typeof(column) FROM table`. Она возвращает реальный класс хранения значения — `null`, `integer`, `real`, `text` или `blob` — который может отличаться от объявленного типа столбца из-за динамического типа данных.ping.

Добавлены строгие таблицы. SQLite 3.37. Отключите привязку типов и отклоните любое значение, не соответствующее объявленному типу столбца. Допускаются только типы INT, INTEGER, REAL, TEXT, BLOB и ANY, что обеспечивает жесткую привязку типов.ping найдено в других базах данных.

Для хранения денежных сумм используйте тип данных INTEGER в наименьшей единице измерения, например, в центах, чтобы избежать ошибок округления, характерных для чисел с плавающей запятой типа REAL. Для переменной или очень высокой точности тип данных TEXT сохраняет точную числовую строку. SQLite не имеет специального типа денежных переводов с фиксированным пунктом выдачи.

Параметр SQLITE_MAX_LENGTH ограничивает значение TEXT или BLOB и по умолчанию составляет один миллиард байт. Текущая реализация поддерживает до 2 147 483 647 байт. При необходимости вы можете уменьшить этот лимит во время выполнения с помощью интерфейса sqlite3_limit().

Да. Искусственный интеллект, преобразующий текст в SQL-запросы, выводит описание на простом английском языке в операторы CREEATE TABLE, выбирая... SQLite Классы хранения и привязки, такие как INTEGER, TEXT и REAL. Указание существующих типов столбцов повышает точность, а сгенерированный SQL-запрос следует проверить перед запуском.

Да. Второй пилот GitHub предлагает определения столбцов с SQLite Встроенные типы данных, такие как INTEGER, TEXT, REAL и BLOB, используются в редакторах, например: VS CodeОн считывает окружающий код схемы и миграции, поэтому в автозавершении используются реальные имена таблиц и столбцов.

Подведем итог этой публикации следующим образом: