Длина данных SQLite? - PullRequest
       21

Длина данных SQLite?

5 голосов
/ 24 марта 2010

Я совершенно новичок в SQLite (на самом деле 5 минут назад), но я знаю кое-что о Oracle и MySql.

Вопрос : я пытаюсь узнать длину каждого из типов данных, поддерживаемых SQLite, таких как различия между bigint и smallint. Я искал документацию по SQLite (говорит только о сходстве, только имеет значение?), ТАКИХ потоках, Google ... и ничего не нашел.

Мое предположение : Я только что немного пересмотрел спецификации SQL92, в которых говорится о типах данных и их отношениях, но не о их длине, что вполне очевидно, я полагаю. Тем не менее, я ознакомился со спецификациями типов данных Oracle и MySql, и указанные длины в основном одинаковы как минимум для целых чисел. Должен ли я предполагать, что SQLite использует ту же длину?

Помимо вопроса : Я что-то пропустил в документах по SQLite? Или я что-то пропустил в SQL вообще? Я спрашиваю об этом, потому что не могу понять, почему в документах SQLite не указано что-то столь же простое, как длина типов данных. Это просто не имеет смысла для меня! Хотя я уверен, что есть простая команда для определения длины ... но почему бы не записать их в документы?

Спасибо!

Ответы [ 4 ]

16 голосов
/ 13 мая 2010

SQLite немного странный, когда дело доходит до типов полей. Вы можете хранить любой тип в любом поле (например, поместить большой двоичный объект в целочисленное поле). Это работает для целых чисел: это зависит.

Хотя ваше приложение может использовать long (64 бита) для хранения значения, если оно действительно <128, то SQLite будет использовать только один байт для его хранения. Если значение> = 128 и <16384, то оно будет использовать 2 байта. Алгоритм (насколько я помню) состоит в том, что он использует 7 битов каждого байта, а 8-й бит используется для указания необходимости другого байта. Это работает очень хорошо для неотрицательных значений, но заставляет все отрицательные значения занимать 9 байтов для хранения. </p>

8 голосов
/ 24 марта 2010

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

5 голосов
/ 24 марта 2010

Я совершенно новичок в документации по SQLite, но нашел ее менее чем за 30 секунд.

Типы данных в SQLite версии 3

0 голосов
/ 30 июля 2017

INTEGER. Значение представляет собой целое число со знаком, сохраняемое в 1, 2, 3, 4, 6 или 8 байтах в зависимости от величины значения.

8 байт >> максимальный размер смеси: 9223372036854775807

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