Современные СУБД позволяют обрабатывать данные самых разнообразных типов. Так наиболее “мощная” из корпоративных СУБД ORACLE поддерживает типы и подтипы данных, указанные в следующей таблице:
Таблица 2 Скалярные типы данных ORACLE и связанные подтипы
Тип данных
Подтип
Описание
BINARY_INTEGER
NATURAL,
NATURALN,
POSITIVE,
POSITIVEN,
SIGNTYPE
Сохраняет целые числа со знаком. Использует библиотечную арифметику.
NATURAL и NATURALN сохраняют только неотрицательные целые числа, причем последний запрещает NULL – значения.
POSITIVE и POSITIVEN сохраняют только положительные целые числа, причем последний запрещает NULL – значения.
SIGNTYPE сохраняет только -1, 0, 1
Сохраняет числа с фиксированной и плавающей точкой. Использует библиотечную арифметику
PLS_INTEGER
Сохраняет целые числа со знаком. Для ускорения вычислений использует машинную арифметику.
CHAR(размер)
CHARACTER
(размер)
Сохраняет строки символов фиксированной длины. Максимальный размер 32767 байт, однако, для баз данных ограничен 2000 байт.
VARCHAR2(размер)
VARCHAR(размер), STRING
Сохраняет строки символов переменной длины. Максимальный размер 32767 байт, однако для баз данных ограничен 4000 байт.
DATE
Сохраняет временную информацию, включая дату, часы, минуты и секунды.
BOOLEAN
Сохраняет логические значения: TRUE, FALSE и NULL
CLOB
Сохраняет большие символьные объекты
BLOB
Сохраняет большие двоичные объекты
BFILE
Сохраняет указатели на объекты LOB, управляемые файловыми системами, внешними по отношению к СУБД.
В некоторых инструкциях SQL необходимо явно указывать значения чисел, строк или даты. В стандарте ANSI/ISO определен формат числовых и строковых констант, или литералов, которые представляют конкретные значения данных. Этот формат используется в большинстве СУБД.
Целые и десятичные константы (точные числовые литералы)в инструкциях SQL представляются в виде обычных десятичных чисел с необязательным знаком плюс или минус перед ними.
Константы с плавающей запятой (известные также под названием приблизительные числовые литералы)определяются с помощью символа Е и имеют такой же формат, как и в большинстве языков программирования.
В соответствии со стандартом ANSI/ISO строковые константы (строковые литералы) в SQL должны быть заключены в одинарные кавычки. Надо отметить, что не все из известных ныне СУБД поддерживают такой формат представления строковых констант (для ORACLE характерна стандартное представление). Так вместо одинарных используются двойные, что усложняет перенос данных из одних баз в другие.
Константы типа даты в диалекте SQL для ORACLE имеют специфичный формат представления. Как и строковые литералы, даты при их явном представлении берутся в парные одинарные кавычки, однако запись дат отличается от их записи в других СУБД: ‘day-month-year’. В качестве символов разделителей здесь используются дефисы, месяц указывается тремя первыми буквами английского названия месяца, например Mar, Jan, Aug , год же представляется двумя последними десятичными разрядами.
Кроме пользовательских констант, в SQL существуют специальные именованные константы, возвращающие значения, хранимые в самой СУБД. Так в ORACLE существует константа SYSDATE, при указании которой в запросе, СУБД возвращает в результат или подставляет в поля базы данных текущую дату и время. Также стандартом регламентировано применение константы USER для фиксации имени пользователя сделавшего изменения в записях таблиц баз данных.