Главная » SQL, Базы данных » СРЕДСТВА SQL и реляционная модель

0

Встроенные типы

В языке SQL предусмотрены перечисленные ниже встроенные типы, имена которых в основном говорят сами за себя.

■     BOOLEAN                                                                                                                          ■ INTEGER

■     BIT [ VARYING ] (п)                                            ■ SMALLINT

■     BINARY LARGE OBJECT (n)   ■ FLOAT(p)

■     CHARACTER [ VARYING ] (n) ■ TIME

■     CHARACTER LARGE OBJECT(n) ■ DATE

■     NUMERIC (p,q)                                                                                  ■ TIMESTAMP

■     DECIMAL (p,q)                                                                                  ■ INTERVAL

Поддерживаются многочисленные применяемые по умолчанию параметры, сокращения и альтернативные имена, например, CHAR как сокращение от CHARACTER, CLOB— ОТ CHARACTER LARGE OBJECT, BLOB— ОТ BINARY LARGE OBJECT И

Т.Д.; В

данной книге эти подробности не рассматриваются. Ниже приведена наиболее важная информация по этой теме.

5.  Встроенные типы данных BIT И BIT  VARYING были введены в спецификации

SQL: 1992 и должны быть снова изъяты из спецификации SQL:2003 (!).

6.  Несмотря на их имена, содержащие слово "объект", типы CLOB и BLOB фактиче ски являются строковыми (они не имеют никакого отношения к объектам в том смысле, какой рассматривается в главе 25; в частности, тип BLOB фактически представляет собой строковый тип, состоящий из байтов или "октетов" (он не имеет ничего общего с двоичными числами, хотя и содержит в своем полном име ни слово BINARY). Кроме того, поскольку значения этих типов могут быть очень велики (поэтому такие значения иногда неформально называют просто длинными строками),  в языке  SQL предусмотрена конструкция,  называемая локатором (locator), которая (кроме всего прочего) позволяет обеспечить доступ к отдельным фрагментам этих значений.

7.  Для всех этих типов предусмотрены операторы присваивания и сравнения на ра венство. Операция сравнения на равенство по сути выполняется очень просто (но см. пункт 5). Оператор присваивания выглядит примерно следующим образом.

SET <target>  =  <source>  ;

Безусловно, операции присваивания осуществляются также неявно при выполнении операций выборки и обновления базы данных. Но реляционное присваивание как таковое не поддерживается. Кроме того, не  поддерживается множественное присваивание, за исключением следующего случая": если строка г обновляется с помощью оператора в приведенной ниже форме.

UPDATE T SET C1 = exp1, …, Cn = expn WHERE p ;

Здесь все выражения expl, …, expn вычисляются до того, как происходит любое из отдельных присваиваний переменным С1,…, Cn (a r представляет собой строку в результатах вычисления выражения т WHERE p).

8. Поддерживается строгая типизация, но только в ограниченном объеме. Точнее, к встроенным типам можно применить определенный способ  классификации, согласно которому они подразделяются на 10 отдельных категорий следующим образом:

■  истинностное значение                                                                                ■ дата

■     битовая строка                                                                                                                                                                 ■ время

■     двоичное значение                                                                                                                         ■ временная отметка

■     символьная строка                                                                                                                         ■ интервал год/месяц

■     числовое значение                                                                                                                         ■ интервал сутки/время суток

11  Еще два исключения кратко описаны в главе 9, раздел 9.12, подраздел "Ограничения базовой таблицы" и в главе 10, раздел 10.6, подраздел "Обновления представлений". Если не считать этих  исключений, автору не известно ни об одном программном продукте, представленном на  современном рынке, который поддерживал бы множественное присваивание. Но автор считает,  что такая поддержка желательна  и  даже  необходима;  и  действительно, она  запланирована  для  включения  в  спецификацию SQL:2003, но не для отношений.

Проверка типов происходит на основе именно таких 10 категорий (это особенно касается операций присваивания и проверки на равенство).  Поэтому, например, попытка сравнить число и символьную строку является недопустимой, но попытка сравнить два числа осуществима, даже если эти числа относятся к разным числовым типам, скажем INTEGER и FLOAT (в данном примере перед выполнением сравнения значение INTEGER будет приведено к типу FLOAT).

9. Правила проверки типов являются особенно сложными применительно к  символьным строковым типам, таким как CHAR (n), CHAR VARYING (П) И  CLOB (n). Изложение подробных сведений по этой теме выходит за рамки данной книги, но мы должны кратко рассмотреть случай символьных строк фиксированной длины (т.е. тип CHAR (п)), как описано ниже.

■     Сравнение. Если сравниваются значения типа CHAR (nl) и CHAR (n2), то более короткое значение обязательно дополняется справа пробелами так, чтобы его длина стала равной длине более длинного значения, и после этого происходит сравнение12. Поэтому, например, строки ‘ Р2 ‘ (с длиной два) и ‘ Р2   ‘ (с дли ной три) рассматриваются при их сравнении как равные.

■     Присваивание. Если значение типа CHAR(nl) присваивается переменной типа CHAR(n2),    то    перед    выполнением    операции    присваивания    значение CHAR(nl) дополняется справа пробелами при nl   <  п2 или усекается справа при nl   >  n2 для того, чтобы это значение могло иметь длину п2. Считается ошибкой, если при любом таком усечении теряются какие-либо непробельные символы.

Дополнительные пояснения и описания приведены в [4.20].

Источник: Дейт К. Дж., Введение в системы баз данных, 8-е издание.: Пер. с англ. — М.: Издательский дом «Вильямс», 2005. — 1328 с.: ил. — Парал. тит. англ.

По теме:

  • Комментарии