- •Содержание
- •3.1. Физическое проектирование базы данных.
- •3.2. Типы данных субд InterBase.
- •3.2.1. Целочисленные значения.
- •3.2.2. Значение с плавающей запятой.
- •3.2.3. Фиксировано-десятичные значения.
- •3.2.4. Значения типа даты.
- •3.2.5. Символьные типы данных.
- •3.2.6. Значения типа blob.
- •3.2.7. Совместимость типов столбцов.
- •3.3. Физическая модель базы данных «библиотека».
- •3.4. Краткая характеристика языка sql.
- •3.5. Создание базы данных, доменов, таблиц и ключей в InterBase.
- •3.6. Создание и использование Script-файла.
- •Контрольные вопросы:
3.2.1. Целочисленные значения.
Столбец типа SMALLINT хранит целочисленные значения в диапазоне от -32768..+32767. При определении структуры таблицы БД в Database Desktop этот тип называется SHORT.
Столбец типа INTEGER хранит целочисленные значения в диапазоне от -2 147 483 647 до +2 147 483 647. При определении структуру таблицы БД в Database Desktop этот тип называется LONG.
Формат определения целочисленных столбцов:
<тип_данных> = {SMALLINT | INTEGER} [<размерность_массива>]
3.2.2. Значение с плавающей запятой.
Столбец типа FLOAT хранит значения с плавающей запятой длиной до 7 знаков в диапазоне от 3,4Е-38 до 3,4Е+38.
Столбец типа DOUBLE PRECISION хранит значения с плавающей запятой длиной до 15 знаков в диапазоне от 1,7Е-308 до 1,7Е+308.
Управлять числом знаков в дробной части числа с плавающей запятой нельзя, то есть нельзя при определении столбца БД указать фиксированное число знаков после запятой. В один и тот же столбец ТБД типа FLOAT или DOUBLE PRECISION можно поместить значения и "222.3333", и "22.33". Однако в приложении на значения таких полей можно наложить маску с точным числом знаков после запятой. Например, наложение маски '#,###.00' приведет к тому, что будут показываться только два знака после запятой. Если значение столбца имеет в дробной части более знаков, чем указано в маске, они будут округляться. Значение 100.678 в этом случае будет округлено как 100.68. Если в дробной части значения столбца меньше знаков, чем указано в маске, недостающие разряды будут дополняться нулями. Так, значение 100.2 будет показано как 100.20.
Значения указанных типов следует применять в столбцах, где число знаков в дробной части при хранении значений несущественно и где может понадобиться большая точность представляемых вещественных значений, например, до 7 (FLOAT) или до 15 (DOUBLE PRICISION) знаков после запятой.
При попытке представления числа с большим числом разрядов, чем это разрешено типом данных, хранимые данные округляются до последней значащей цифры в разрешенном разряде. Например, попытка записать в столбец типа FLOAT значение "123.456789" приведет к запоминанию значения "123.4568".
Формат определения целочисленных значений:
<тип_данных> = {FLOAT | DOUBLE PRECISION} [<размерность_массива >]
3.2.3. Фиксировано-десятичные значения.
Типы DECIMAL и NUMERIC задают значения с плавающей запятой и определяют в них фиксированное число знаков после запятой. Формат определения этих типов
<тип__данных> = {DECIMAL | NUMERIC} [(точность[, масштаб])] [<размерность_массива >],
где точность определяет число знаков в хранимом числе (максимум 15), а масштаб - число знаков после десятичной точки и может быть равен нулю. Во всех случаях масштаб должен быть меньше точности.
ВНИМАНИЕ! Специальных столбцов типа DECIMAL и NUMERIC физически не существует; вместо этого, столбцы, описанные типами DECIMAL и NUMERIC, хранятся как INTEGER или DOUBLE PRECISION.
При этом действует правило: если точность (число знаков в числе) меньше 10, то реальный тип столбца INTEGER; если точность больше или равно 10, реальный тип столбца DOUBLE PRECISION. Например:
Объявление |
Реальный тип столбца |
DECIMAL(5,2) |
INTEGER |
DECIMAL(12,2) |
DOUBLE PRECISION |
DECIMAL(12,0) |
DOUBLE PRECISION |
Известно, что в столбцах типа INTEGER дробных значений хранить нельзя. Поэтому, независимо от того, указано число знаков после десятичной точки или нет, объявление DECIMAL и NUMERIC с общим числом разрядов, меньшим 10, приведет к тому, что фактически в столбце можно будет хранить только целочисленные значения.
Пример. Определим в ТБД 4 столбца с типами DECIMAL(5,2), DECI-MAL(12,2), DECIMAL(5,0), DECIMAL(12,0) и присвоим им всем одно и то же значение 123.4567. Результат:
DECIMAL(5,2) |
DECIMAL(12,2) |
DECIMAL(5,0) |
DECIMAL(12,0) |
123 |
123.4567 |
123 |
123.4567 |
Как можно заметить, действительно существенным в объявлении типов DECIMAL и NUMERIC является общее число разрядов в числе (точность); число знаков после десятичной точки (масштаб) существенного значения не имеет.