Типы данных SQLite
Что такое тип данных?
- Тип данных указывает конкретный тип данных, например, целое число, число с плавающей запятой, логическое значение и т. Д.
- Тип данных также определяет возможные значения для этого типа, операции, которые могут быть выполнены с этим типом, и способ хранения значений этого типа.
Типы данных SQLite: версия 3
Максимальные механизмы баз данных SQL используют статическую жесткую типизацию. В системе статической типизации тип данных значения определяется его контейнером (например, целочисленный тип всегда принимает целочисленные значения) конкретного столбца, в котором хранится значение. В SQLite тип данных значения связан с самим значением, а не с его контейнером. Вот два примера, где MySQL не принимает данные строкового типа (например, 'abcd) в объявленном столбце типа INTEGER, где SQLite принимает те же данные в объявленном столбце типа INTEGER и выполняет инструкцию SELECT.
Тест жесткой типизации данных:
В MySQL (жесткие типы данных):mysql> CREATE TABLE t1 (c1 INTEGER, c2 DATE); Запрос в порядке, затронуто 0 строк (1,07 сек) mysql> INSERT INTO t1 VALUES ('abcd', '14 / 23/2033 '); ОШИБКА 1366 (HY000): Неверное целочисленное значение: «abcd» для столбца «c1» в строке
В SQLite3 (без жесткости)
sqlite> CREATE TABLE t1 (c1 INTEGER, c2 DATE); sqlite> INSERT INTO t1 VALUES ('abcd', '14 / 23/2033 '); sqlite> SELECT * FROM t1; ABCD | 14/23/2033 SQLite>
Классы хранения SQLite и типы данных
SQLite поддерживает несколько типов данных в различных категориях. Вот список классов хранения:
Класс хранения | Описание |
---|---|
НОЛЬ | Значение является значением NULL. |
INTEGER | Значение представляет собой целое число со знаком, сохраняемое в 1, 2, 3, 4, 6 или 8 байтах в зависимости от величины значения. |
РЕАЛЬНЫЙ | Значение является значением с плавающей запятой, хранящимся как 8-байтовое число с плавающей запятой IEEE. |
ТЕКСТ | Значение представляет собой текстовую строку, сохраненную с использованием кодировки базы данных (UTF-8, UTF-16BE или UTF-16LE) |
большой двоичный объект | Значение представляет собой блок данных, хранящийся в точности так, как он был введен. |
Обратите внимание, что класс хранения немного более общий, чем тип данных. Например, класс хранения INTEGER включает в себя 6 различных целочисленных типов данных различной длины. Это имеет значение на диске. Но как только значения INTEGER считываются с диска и в память для обработки, они преобразуются в наиболее общий тип данных (8-байтовое целое число со знаком). И поэтому по большей части «класс хранения» неотличим от «типа данных», и эти два термина могут использоваться взаимозаменяемо.
SQLite Boolean Тип данных
SQLite не имеет отдельного булева класса хранения. Вместо этого логические значения сохраняются как целые числа 0 (ложь) и 1 (истина).
SQLite Дата и время Тип данных
SQLite не имеет класса хранения, выделенного для хранения дат и / или времени. Вместо этого встроенные функции даты и времени в SQLite могут хранить даты и время в виде значений TEXT, REAL или INTEGER:
- ТЕКСТ в виде строк ISO8601 («ГГГГ-ММ-ДД ЧЧ: ММ: СС.ССС»).
- НАСТОЯЩЕЕ, как юлианские числа, число дней с полудня в Гринвиче 24 ноября 4714 г. до н.э.
- INTEGER как Unix Time, количество секунд с 1970-01-01 00:00:00 UTC.
Приложения могут хранить даты и время в любом из этих форматов и свободно конвертировать между форматами, используя встроенные функции даты и времени.
Тип Affinity
Чтобы максимизировать совместимость между SQLite и другими механизмами баз данных, SQLite поддерживает концепцию «соответствия типов» для столбцов. Сходство типов столбца является рекомендуемым типом для данных, хранящихся в этом столбце. Важной идеей здесь является то, что тип рекомендуется, а не требуется. Любой столбец может хранить данные любого типа. Просто некоторые столбцы, при выборе, предпочитают использовать один класс хранения над другим. Предпочтительный класс хранения для столбца называется его «сродством».
Каждому столбцу в базе данных SQLite 3 назначается одно из следующих сходств типов:
- ТЕКСТ
- NUMERIC
- INTEGER
- РЕАЛЬНЫЙ
- НИКТО
Столбец со сходством TEXT хранит все данные, используя классы хранения NULL, TEXT или BLOB. Если числовые данные вставляются в столбец со сходством TEXT, перед сохранением они преобразуются в текстовую форму.
Примеры названий
Пример Typenames From The CREATE TABLE Заявление или CAST Expression | Результирующая близость | Правило, используемое для определения сродства |
---|---|---|
INT INTEGER TINYINT SMALLINT MEDIUMINT BIGINT НЕ ПОДПИСАНО БОЛЬШОЙ ИНТ INT2 INT8 | INTEGER | 1 |
СИМВОЛЫ (20) УАКСНАК (255) ИЗМЕНЯЮЩИЙ ХАРАКТЕР (255) NCHAR (55) РОДНОЙ ХАРАКТЕР (70) NVARCHAR (100) ТЕКСТ CLOB | ТЕКСТ | 2 |
большой двоичный объект тип данных не указан | НИКТО | 3 |
РЕАЛЬНЫЙ DOUBLE ДВОЙНАЯ ТОЧНОСТЬ FLOAT | РЕАЛЬНЫЙ | 4 |
NUMERIC ДЕСЯТИЧНАЯ (10,5) БУЛЕВЫ ДАТА DATETIME | NUMERIC | 5 |
2.3 Пример поведения сродства столбца
Следующий SQL демонстрирует, как SQLite использует сходство столбцов для преобразования типов, когда значения вставляются в таблицу.
CREATE TABLE t1 ( t TEXT, - сходство текста по правилу 2 nu NUMERIC, - числовое сходство по правилу 5 я INTEGER, - целочисленное сродство по правилу 1 r REAL, - реальная близость по правилу 4 нет BLOB - нет сродства по правилу 3 ); - Значения хранятся в виде ТЕКСТ, ИНТЕГР, ИНТЕГЕР, РЕАЛЬНЫЙ, ТЕКСТ. INSERT INTO t1 VALUES («500,0», «500,0», «500,0», «500,0», «500,0»); ВЫБЕРИТЕ typeof (t), typeof (nu), typeof (i), typeof (r), typeof (no) ОТ t1; текст | целое | число | реальный | текст - Значения хранятся в виде ТЕКСТ, ИНТЕГР, ИНТЕГЕР, РЕАЛЬНЫЙ, РЕАЛЬНЫЙ. УДАЛИТЬ ОТ t1; INSERT INTO t1 VALUES (500,0, 500,0, 500,0, 500,0, 500,0); ВЫБЕРИТЕ typeof (t), typeof (nu), typeof (i), typeof (r), typeof (no) ОТ t1; текст | целое | число | реальный | реальный - Значения хранятся как ТЕКСТ, ИНТЕГР, ИНТЕГЕР, РЕАЛ, ИНТЕГЕР. УДАЛИТЬ ОТ t1; INSERT INTO T1 VALUES (500, 500, 500, 500, 500); ВЫБЕРИТЕ typeof (t), typeof (nu), typeof (i), typeof (r), typeof (no) ОТ t1; текст | целое | число | реальное | целое - BLOB-объекты всегда хранятся как BLOB-объекты независимо от соответствия столбцов. УДАЛИТЬ ОТ t1; INSERT INTO t1 VALUES (x'0500 ', x'0500', x'0500 ', x'0500', x'0500 '); ВЫБЕРИТЕ typeof (t), typeof (nu), typeof (i), typeof (r), typeof (no) ОТ t1; клякса | клякса | клякса | клякса | блоб - NULL также не зависят от близости УДАЛИТЬ ОТ t1; Вставить в значения t1 (NULL, NULL, NULL, NULL, NULL); ВЫБЕРИТЕ typeof (t), typeof (nu), typeof (i), typeof (r), typeof (no) ОТ t1; нуль | нуль | нуль | нуль | нуль
Предыдущий: Присоединить, отсоединить базу данных
Далее: создать, изменить, удалить таблицу
Новый контент: Composer: менеджер зависимостей для PHP , R программирования