SQLite Типи даних: цілочислені, текстові, числові, дійсні, блоб-числа

⚡ Розумний підсумок

SQLite типи даних працюють інакше, ніж інші бази даних, оскільки SQLite використовує динамічний typing, зберігаючи будь-яке значення в будь-якому стовпці. Класи сховища, спорідненість типів та оголошені імена типів разом визначають, як кожне значення фізично зберігається на диску.

  • 🧩 Динамічний Тайping: SQLite динамічно типізується, тому значення, яке ви вставляєте, а не визначення стовпця, визначає, як зберігатимуться дані.
  • 🗄️ Класи зберігання: П'ять класів сховища — NULL, INTEGER, REAL, TEXT та BLOB — описують, як кожне значення зберігається на диску.
  • 🎯 Спорідненість типу: Кожен стовпець отримує рекомендовану спорідненість — TEXT, NUMERIC, INTEGER, REAL або BLOB — від оголошеного імені типу.
  • 🔢 Зберігання номерів: Будь-який оголошений тип, що містить INT, стає INTEGER, тоді як REAL, DOUBLE та FLOAT містять числа з плаваючою комою у восьми байтах.
  • 📅 Дати та логічні значення: SQLite не має спеціального класу DATE або BOOLEAN і зберігає ці значення як TEXT, REAL або INTEGER.
  • 🤖 Допомога AI: Асистенти з перетворення тексту в SQL на основі штучного інтелекту та GitHub Copilot генерують SQLite визначення стовпців та вибір типів даних простою англійською мовою.

SQLite Типи даних

У розділах нижче пояснюється, як SQLite обробляє типи даних, починаючи з п'яти класів зберігання, потім спорідненість типів та правила присвоєння, і, нарешті, розглянув приклади зберігання цілих чисел, дійсних чисел, BLOB-об'єктів, булевих значень та дат.

Типи даних в SQLite відрізняються від тих, що використовуються в інших системах управління базами даних. У SQLite, ви можете оголошувати типи даних звичайним чином, але ви все ще можете зберігати будь-яке значення в будь-якому типі даних.

SQLite не має типів. Немає фіксованих типів даних; ви можете зберігати будь-який тип даних у будь-якому стовпці. Це називається динамічним типом.ping.

У статичних типах, як і в інших системах керування базами даних, якщо оголошувати стовпець із цілочисельним типом даних, можна вставляти лише значення цілочисельного типу даних. Однак у динамічних типах, як у SQLite, тип стовпця визначається вставленим значенням, а потім SQLite зберігає це значення залежно від його типу.

SQLite Класи зберігання

In SQLite Існують різні методи зберігання залежно від типу значення; ці різні методи зберігання називаються класами зберігання. SQLite.

Нижче наведено класи зберігання, доступні в SQLite:

  • NULL – цей клас зберігання використовується для зберігання будь-якого значення NULL.
  • INTEGER – будь-яке числове значення зберігається як ціле число зі знаком (воно може містити як додатні, так і від’ємні цілі значення). Цілі значення в SQLite зберігаються в 1, 2, 3, 4, 6 або 8 байтах пам’яті залежно від значення числа.
  • НЕРУХОМІСТЬ – цей клас сховища використовується для зберігання значень з плаваючою комою, і вони зберігаються у 8 байтах сховища.
  • TEXT – зберігає текстові рядки. Також підтримує різні кодування, такі як UTF-8, UTF-16BE або UTF-16LE.
  • ЛИСТОК – використовується для зберігання великих файлів, таких як зображення або текстові файли. Значення зберігається як масив байтів, такий самий, як і вхідне значення.

SQLite Тип спорідненості

Спорідненість типів – це рекомендований тип даних, що зберігаються у стовпці. Однак ви все ще можете зберігати будь-який тип даних на свій розсуд; ці типи є рекомендованими, а не обов'язковими.

Ці види були введені в SQLite щоб максимізувати сумісність між SQLite та інші система управління базами данихs.

Будь-який стовпець, оголошений у an SQLite Базі даних призначається спорідненість до типу залежно від оголошеного типу даних. Ось список спорідненостей до типу в SQLite:

  • ТЕКСТ.
  • NUMERIC.
  • ЦІЛЕ ЧИСЛО.
  • РЕАЛЬНИЙ.
  • BLOB.

Ось як SQLite визначає спорідненість стовпця на основі його оголошеного типу даних:

  • Спорідненість INTEGER призначається, якщо оголошений тип містить рядок «ВНУТРІШНЄ».
  • Спорідненість 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 INTEGER

Якщо будь-який стовпець має тип даних, що містить слово «INT», йому буде призначено спорідненість типу INTEGER. Він буде збережений у класі сховища INTEGER.

Усім наступним типам даних присвоюється спорідненість типу INTEGER:

  • INT, INTEGER, BIGINT.
  • INT2, INT4, INT8.
  • ТРИНІТНИЙ, ДРОБНИЙ, СЕРЕДНІЙ.

Спорідненість типу INTEGER в SQLite може містити будь-яке призначене ціле число (додатне чи від'ємне) від 1 байта до максимум 8 байтів.

Зберігання чисел с SQLite НЕРУХОМІСТЬ

ДІЙСНІ числа – це числа з подвійною точністю до числа з плаваючою комою. SQLite зберігає дійсні числа як 8-байтовий масив. Ось список типів даних у SQLite які ви можете використовувати для зберігання РЕАЛЬНИХ чисел:

  • РЕАЛЬНИЙ.
  • ДВОЙНИЙ.
  • ПОДВІЙНА ТОЧНІСТЬ.
  • ПЛАВАТИ.

Зберігання великих даних за допомогою SQLite ЛИСТОК

Існує лише один спосіб зберігання великих файлів у SQLite база даних, яка використовує тип даних BLOB. Цей тип даних використовується для зберігання великих файлів, таких як зображення або файли будь-якого типу. Файл перетворюється на байтовий масив, а потім зберігається того ж розміру, що й вхідний файл.

Зберігання SQLite Булеви

SQLite не має окремого класу зберігання BOOLEAN. Натомість значення BOOLEAN зберігаються як ЦІЛІ ЧИСЛА, де 0 означає хибність, а 1 — істину.

Зберігання SQLite дати та час

Ви можете оголосити дати або дати-час у SQLite використовуючи один із таких типів даних:

  • ДАТА ПРОВЕДЕННЯ
  • ДАТА, ЧАС
  • ГРАФІК
  • ЧАС

Зверніть увагу, що в SQLiteНатомість будь-які значення, оголошені з одним із попередніх типів даних, зберігаються в класі сховища залежно від формату дати вставленого значення, наступним чином:

  • TEXT – якщо ви вставляєте значення дати у форматі рядка ISO8601 («РРРР-ММ-ДД ГГ:ХХ:СС.СС»).
  • НЕРУХОМІСТЬ – якщо ввести значення дати як числовий показник за юліанським календарем, кількість днів з полудня за Гринвічем 24 листопада 4714 року до нашої ери. Значення дати потім зберігається як REAL.
  • INTEGER - як Юнекс Час, кількість секунд з 1970-01-01 00:00:00 UTC.

Поширені запитання

Клас сховища – це те, як 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 знайдені в інших базах даних.

Зберігайте гроші як ЦІЛЕ число в найменшій одиниці виміру, наприклад, у центах, щоб уникнути помилок округлення чисел REAL з плаваючою комою. Для змінних або дуже високої точності, TEXT зберігає точний рядок числа. SQLite не має спеціального типу грошей з фіксованою комою.

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

Так. Помічники зі штучним інтелектом, що перетворюють текст на SQL, перетворюють опис простою англійською мовою на оператори CREATE TABLE, вибираючи SQLite класи сховища та спорідненості, такі як INTEGER, TEXT та REAL. Надання існуючих типів стовпців підвищує точність, а згенерований SQL слід перевірити перед запуском.

Так. Копілот GitHub пропонує визначення стовпців за допомогою SQLite типи, такі як INTEGER, TEXT, REAL та BLOB, вбудовані в редакторах, таких як VS CodeВін зчитує навколишню схему та код міграції, тому його автодоповнення повторно використовують ваші справжні імена таблиць та стовпців.

Підсумуйте цей пост за допомогою: