точки), которое может быть использовано для представления
числа. Максимальная поддерживаемая Oracle разрядность равна 38.
Параметр точность это максимальное число цифр справа от десятичной
точки (если он задан). Если не заданы ни разрядность, ни
точность, в этом поле может быть сохранено любое число длиной
до 38 цифр. Попытка сохранить число большей длины, будет отвергнута
базой данных.
BINARY_FLOAT Этот тип впервые появился в OraclelOg и используется для хранения
32-битных чисел с плавающей точкой одинарной точности. Более
подробно об этом типе чисел см. в разделе «Типы BINARY_FL0AT и
BINARY_D0UBLE».
BINARY_DOUBLE Этот тип впервые появился в OraclelOg и используется для хранения
64-битных чисел с плавающей точкой двойной точности. Более подробно
об этом типе чисел см. в разделе «Типы BINARY_FL0AT и
BINARY_D0UBLE».
14 Глава 1
В приложении вы найдёте все типы данных. В следующей таблице показано
несколько примеров того, как числа типа NUMBER хранятся в базе данных.
Изучение таблиц схемы store
В этом разделе вы увидите, как создаются таблицы схемы store. К информации,
которая содержится в схеме store, относится:
■ сведения о покупателе;
■ типы проданных товаров;
■ сведения о товаре;
■ архивные сведения о товарах, купленных покупателями;
■ сотрудники магазина;
■ разрядная сетка заработной платы.
Для хранения этой информации используются следующие таблицы:
■ customers Хранит информацию о покупателях;
■ product_types Хранит типы товаров, имеющихся в продаже;
■ products Хранит информацию о товарах;
■ purchases Хранит информацию о том, какие товары были куплены
и каким именно покупателем;
■ employees Хранит информацию о сотрудниках;
■ sa la ry_ g ra d e s Хранит информацию о разрядной сетке заработной
платы сотрудников.
Примечание Сценарий store_schema. s q l создает и другие таблицы и объекты базы данных,
не указанные в этом списке (об этих объектах см. ниже).
В следующих разделах описаны детали некоторых таблиц схемы s to re и
приведены операторы CREATE TABLE, включенные в сценарий store_schema.
s q l, который создает эти таблицы.
Таблица customers используется для хранения информации о покупателях
нашего гипотетического магазина. В таблице customers содержатся
следующие поля:
■ имя;
■ фамилия;
■ дата рождения (dob);
■ номер телефона.
Формат Вводимое число
NUMBER 1234.567
NUMBER(6,2) 123.4567
NUMBER(6,2) 12345.67
Хранящееся в БД число
1234.567
123.46
Число превосходит заданную
разрядность и отвергается базой
данных
Введение 15
Для каждого из этих элементов необходим отдельный столбец в таблице
customers, которая создается сценарием store _schema.sql при помощи
следующего оператора CREATE TABLE:
□ CREATE TABLE customers (
customer_id INTEGER CONSTRAINT customers_pk PRIMARY KEY,
first_n am e VARCHAR2(10) NOT NULL,
last_name VARCHAR2(10) NOT NULL,
dob DATE,
phone VARCHAR2(12)
);
Таблица customers содержит пять столбцов - по одному для каждого элемента
из приведенного выше списка и один дополнительный столбец
customer_id.
■ customer_id Для каждой строки таблицы в нем хранится уникальное
целое число. Каждая таблица должна иметь один или несколько столбцов,
которые уникально идентифицируют каждую строку таблицы
и известны как первичный ключ (primary key) таблицы. Выражение
CONSTRAINT для столбца customer_id означает, что этот столбец является
первичным ключом таблицы. Выражение CONSTRAINT используется
для ограничения значений таблицы или столбца. Для столбца
customer_id ключевое слово PRIMARY KEY означает, что столбец
customer_id для каждой строки должен содержать уникальное число.
Можно (необязательно) присвоить ограничению имя, которое в таком
случае должно следовать непосредственно за ключевым словом
CONSTRAINT; в нашем случае ограничению присваивается имя custome г_
рк. Вам следует всегда присваивать имя для ограничений первичных
ключей; если возникнет ошибка ограничения, вы сможете легко отследить,
где это произошло.
■ first_name Здесь хранится имя покупателя. Следует обратить внимание
на ограничение NOT NULL для этого столбца, которое означает,
что для столбца first_n am e обязательно должно быть указано значение.
Если ограничение не указано, для столбца будет использовано
ограничение по умолчанию (NULL) и столбец на законных основаниях
сможет оставаться незаполненным (пустым).
■ last_name Здесь хранится фамилия покупателя. Этот столбец объявлен
как NOT NULL и, следовательно, в нем обязательно должно присутствовать