Когда следует использовать тип данных REAL против NUMERIC в sqlite? - PullRequest
0 голосов
/ 13 сентября 2018

В sqlite типы данных REAL и NUMERIC выглядят одинаково.Так как NUMERIC поддерживает Decimal (10,5), когда вместо этого следует использовать REAL?

https://www.tutorialspoint.com/sqlite/sqlite_data_types.htm

Я использую sqlite3.

1 Ответ

0 голосов
/ 13 сентября 2018

SQLite, в отличие от большинства других СУБД, использует систему динамических типов. Это означает, что любой из пяти классов хранения SQLite может присутствовать в любом столбце, несмотря на то, что столбец принадлежит одному типу. Но очевидно, что не рекомендуется смешивать типы в одном столбце. Например, смешивание числовых и символьных данных в одном столбце является плохой практикой, как это было бы в любой базе данных. Пять реальных классов хранения в SQLite:

  • NULL
  • INTEGER
  • РЕАЛЬНЫЙ
  • TEXT
  • BLOB

Класс хранения REAL используется для числовых данных с десятичным компонентом. Поплавки будут вписываться в эту категорию. Другие числа без десятичной составляющей будут присвоены классу хранения INTEGER.

SQLite ввел концепцию, известную как тип "сходство". Они были введены для того, чтобы максимизировать совместимость между SQLite и другими базами данных. Из документации видно, что сходство NUMERIC связано со следующими типами:

  • NUMERIC
  • DECIMAL (10,5)
  • БУЛЕВЫ
  • ДАТА
  • DATETIME

Итак, если вы намереваетесь хранить точные данные DECIMAL(10,5), тогда имеет смысл сходство NUMERIC. С другой стороны, сходство REAL связано с десятичными данными с плавающей запятой (не точными). Опять же, вы можете хранить любой тип в любом столбце, но с точки зрения совместимости вы можете следовать правилам соответствия.

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