Отдельные типы данных — это простейшие формы определяемых пользователем типов. Отдельные типы определяются той особенностью, что они выражаются как единый тип данных. Они создаются на основе одного из ранее определенных типов данных, называющихся базовыми типами. Множество отдельных типов, которые все созданы на основе одного базового типа, отличаются друг от друга, и, таким образом, непосредственно сравнивать их между собой нельзя. Например, отдельные типы можно использовать, чтобы различать валюты разных стран. Проанализируйте следующее определение типа:
CREATE DISTINCT TYPE Usdollar AS DECIMAL (9,2) ;
В результате на основе заранее определенного типа DECIMAL создан новый тип данных предназначенный для долларов США. Аналогичным образом можно создать другой отдельный тип для евро:
CREATE DISTINCT TYPE Euro AS DECIMAL (9,2) ;
Теперь можно создать таблицы USInvoice (счет-фактура в долларах США) и Eurolnvoice (счет-фактура в евро), в которых используются эти новые типы. В столбцах обеих таблиц хранятся такие реквизиты: идентификатор счета-фактуры, идентификатор клиента, идентификатор сотрудника, общая сумма продажи, сумма налога, сумма поставки и общий итог.
CREATE TABLE USInvoice ( | ||
InvID | INTEGER | PRIMARY KEY, |
CustID | INTEGER, | |
EmpID | INTEGER, | |
TotalSale | Usdollar, | |
Tax | Usdollar, | |
Shipping | Usdollar, | |
GrandTotal | Usdollar | |
) ; |
CREATE TABLE Eurolnvoice ( | ||
InvID | INTEGER | PRIMARY KEY, |
CustID | INTEGER, | |
EmpID | INTEGER, | |
TotalSale | Euro, | |
Tax | Euro, | |
Shipping | Euro, | |
GrandTotal | Euro | |
) ; |
Оба типа, Usdollar и Euro, созданы на основе типа DECIMAL, но величины первого типа нельзя сравнивать с величинами второго, как и с величинами типа DECIMAL. Теперь в SQL, как и в обменном пункте, можно конвертировать доллары в евро, но для этого требуется специальная операция (CAST, означает "приведение"). Сравнения можно проводить, лишь выполнив конвертацию.