SQLite dataypes длины?

Я абсолютно плохо знаком с SQLite (на самом деле 5 минут назад), но я действительно знаю несколько бэкенды Oracle и MySql.

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

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

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

Спасибо!

5
задан XF01 23 March 2010 в 21:33
поделиться

3 ответа

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

8
ответ дан 18 December 2019 в 05:49
поделиться

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

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

5
ответ дан 18 December 2019 в 05:49
поделиться

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

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

16
ответ дан 18 December 2019 в 05:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: