кодесурса
«SQLite

Типы данных SQLite

script1adsense2code
script1adsense3code

Что такое тип данных?

  • Тип данных указывает конкретный тип данных, например, целое число, число с плавающей запятой, логическое значение и т. Д.
  • Тип данных также определяет возможные значения для этого типа, операции, которые могут быть выполнены с этим типом, и способ хранения значений этого типа.

Типы данных 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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code