При создании таблицы в базе данных инструкция SQL, создающая таблицу, задает родственность, или тип данных для каждого столбца таблицы. Явное объявление родственности столбцов в инструкции SQL
CREATE TABLE
не обязательно, но желательно.
Как правило, любой объект, сохраняемый в базу данных при помощи инструкции
INSERT
, возвращается в виде экземпляра того же типа данных при выполнении инструкции
SELECT
. Однако тип данных извлеченного значения может отличаться в зависимости от родственности столбца базы данных, в котором хранится это значение. Если тип данных хранящегося в столбце значения не соответствует родственности столбца, база данных пытается преобразовать это значение в соответствии с родственностью столбца. Например, если для столбца базы данных объявлена родственность
NUMERIC
, база данных пытается преобразовать вставляемые данные в числовой класс хранилища (
INTEGER
или
REAL
) перед сохранением данных. Если данные невозможно преобразовать, база данных выдает ошибку. Согласно этому правилу, если строка «12345» вставляется в столбец
NUMERIC
, база данных автоматически преобразует ее в целочисленное значение 12345 перед сохранением. При извлечении этого значения с использованием инструкции
SELECT
оно возвращается как экземпляр числового типа данных (Number), а не экземпляр String.
Следуя двум правилам, можно избежать нежелательного преобразования типов данных. Во-первых, задавайте для каждого столбца тип данных в соответствии с данными, которые будут в нем храниться. Во-вторых, вставляйте только те значения, тип данных которых соответствует заданной родственности. Следование этим двум правилам имеет два преимущества. При вставке данных не происходит их неожиданного преобразования (при этом, возможно, теряется их значение). Кроме того, при извлечении данных они возвращаются с исходным типом данных.
Дополнительные сведения о доступных типах сходства столбцов и использовании типов данных в инструкциях SQL см. в разделе «
Поддержка типов данных
».