Типы полей sqlite и mysql? - PullRequest
       20

Типы полей sqlite и mysql?

3 голосов
/ 25 января 2010

Привет, я работаю над своим первым проектом sqlite, и мне было просто интересно, поддерживает ли sqlite все те же типы полей, что и MYsql, например - DATETIME, TINYINT, VARCHAR и т. Д.

Если sqlite поддерживает ограниченный тип поля, было бы очень полезно, если бы кто-то мог предоставить мне их.

спасибо!

Ответы [ 3 ]

3 голосов
/ 17 июля 2011

Старый поток, но я думаю, что автор запрашивал карту между типами данных mySQL и SQLite. Так как эта статья высоко ценилась в Google, когда я искал ее, вот ссылка, которую я нашел, которая более конкретно отвечает на вопрос автора (YMMV):

http://drupal.org/node/159605

3 голосов
/ 25 января 2010

sqlite имеет очень ограниченное количество типов данных. Согласно документации она имеет следующие 5 типов данных:

  • NULL . Значение равно NULL.
  • INTEGER . Значение представляет собой целое число со знаком, сохраняемое в 1, 2, 3, 4, 6 или 8 байтах в зависимости от величины значения.
  • РЕАЛЬНЫЙ . Это значение с плавающей запятой, которое хранится как 8-байтовое число с плавающей запятой IEEE.
  • TEXT . Значением является текстовая строка, которая хранится в кодировке базы данных (UTF-8, UTF-16BE или UTF-16LE).
  • BLOB . Значение представляет собой большой объем данных, сохраненных в точности так, как они были введены.

Итак, чтобы ответить на ваш вопрос, нет, sqlite и mysql не имеют одинаковых типов данных.

0 голосов
/ 06 января 2014

Извините, мой английский;

SQLite имеет 5 «Class Storage», которые являются более общими, чем тип данных: НОЛЬ, INTEGER (от 1 до 8 байт), REAL (8 байт, с плавающей точкой), ТЕКСТ (строки) и BLOB (или тип / класс не определен).

Другие типы данных были определены с использованием логики для определения «Сродства». Это сходство используется для «преобразования» любого типа только в тезисы 5 классов.

Sqlite см. Тип данных в столбце; Подходим близость; Смотрите значение в сообщении; При необходимости выполните преобразование, и сохраните значение. Например, TINYCHAR имеет сходство с TEXT, затем будет сохранено как TEXT.

Если вы понимаете логику, вы поймете мост между типами данных. «3,14» можно сохранить как РЕАЛЬНОЕ или ТЕКСТ

SqLite ищет строки в информированном типе данных при создании coumun / table.

Если в сообщенном типе данных есть «INT» (tinyint, smallint, integer или любое слово с «INT»), значение будет сохранено как INTEGER. Если значение было текстом («10»), оно будет преобразовано в число (10).

Если в имени типа данных нет "INT", то Sqlite будет искать выражения "CHAR", "CLOB" или "TEXT". Если найдено, значение будет сохранено как «ТЕКСТ». Если значение было числом, будет преобразовано в текст.

Если в имени типа данных нет "INT", "CHAR", "CLOB" или "TEXT", то Sqlite будет искать выражение "BLOB". Если был найден «BLOB», значение будет сохранено как NONE (без определенного типа).

Если объявленный тип для столбца содержит какие-либо из строк "REAL", "FLOA" или "DOUB", тогда столбец будет REAL

Если какой-либо из перечисленных выше тестов был верным, будет храниться как NUMERIC (число с плавающей точкой). Если значение было строкой, sqlite попытается выполнить преобразование. Если это целое число или строка, представляющая целое число, будет сохранено как точка с плавающей точкой. (в этом случае есть некоторая оптимизация.

Для даты и времени нет типов спецификаций, но есть некоторые функции для обработки значения. Если значение было введено как: ТЕКСТ = как строки ISO8601 («ГГГГ-ММ-ДД ЧЧ: ММ: СС.ССС»). REAL = числа в юлианских днях, количество дней, прошедших с полудня в Гринвиче 24 ноября, 4714 г. до н. согласно пролептическому григорианскому календарю. INTEGER = как Unix Time, количество секунд с 1970-01-01 00:00:00 UTC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...