Типы данных SQLite

Я использую SQLite в JAVA-приложении через Zentus. В этом контексте я должен сохранить и запросить Java long значения в моей базе данных. При прибытии из другого RDBMS я составил таблицу как после сохранить длинные значения:

CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue LONG)

Это решение производит исключенное поведение, но после чтения документации SQLite относительно типов данных я понял что мой LONG тип имеет тот же эффект, чем использование TEXT => longValue хранится как текст.

Я затем решил изменить это на INTEGER (какая длина является переменной и может сохранить целые числа на 64 бита, который является длиной Java долго), чтобы иметь более чистый код и может быть, чтобы сохранить некоторое дисковое пространство и увеличить действия, потому что мои longValues вставляются и запрашиваются как long.

После сравнения действий и размера созданных баз данных я не могу видеть любое различие между:

CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue LONG)

и

CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue INTEGER)

Какие-либо комментарии, события или чувства на предмете?

18
задан Beryllium 18 November 2013 в 15:55
поделиться

3 ответа

В SQLite типы данных определяются для каждого значения, а не для столбца. Поэтому, когда вы вставляете целые числа, они сохраняются как целые числа независимо от типа столбца.

22
ответ дан 30 November 2019 в 07:12
поделиться

SQLite автоматически выбирает правильный размер. Из http://www.sqlite.org/datatype3.html :

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

SQLite использует динамические типы и не содержит схемы.

8
ответ дан 30 November 2019 в 07:12
поделиться

Посмотрев на характеристики и размер созданных баз данных не умею чтобы увидеть разницу между:

Там нет никакой разницы. INTEGER имеет целочисленное сродство, а LONG - числовое сродство. И, http://www.sqlite.org/datatype3.html говорит:

Столбец, который использует привязку INTEGER ведет себя так же, как столбец с ЧИСЛЕННАЯ близость. Разница между сродством INTEGER и NUMERIC проявляется только в выражении CAST.

7
ответ дан 30 November 2019 в 07:12
поделиться
Другие вопросы по тегам:

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