Oracle raw тип данных

Обновлено: 06.07.2024


В Oracle есть три типа данных для хранения информации в двоичном виде: RAW, LONG RAW и BLOB. LONG RAW устарел и не рекомендуется к использованию. RAW не устарел, но максимальная его длина 2000 байт. Для некоторых задач, например для persistent storage небольших объектов этого вполне достаточно. Посмотрим, что работает быстрее?

Тестовый скрипт Securefiles отличается незначительно:

Oracle 11 XE Basicfiles:

PL/SQL procedure successfully completed.

Elapsed: 00:00:09.46

PL/SQL procedure successfully completed.

Elapsed: 00:00:27.16

PL/SQL procedure successfully completed.

Elapsed: 00:00:12.31

PL/SQL procedure successfully completed.

Elapsed: 00:00:28.05

PL/SQL procedure successfully completed.

Elapsed: 00:00:12.10

Oracle 11g R2 Basicfiles:

PL/SQL procedure successfully completed
Executed in 11.348 seconds

PL/SQL procedure successfully completed
Executed in 25.862 seconds

PL/SQL procedure successfully completed
Executed in 13.326 seconds

PL/SQL procedure successfully completed
Executed in 25.702 seconds

PL/SQL procedure successfully completed
Executed in 13.19 seconds

Oracle 12c R1 Basicfiles:

PL/SQL procedure successfully completed
Executed in 8.503 seconds

PL/SQL procedure successfully completed
Executed in 11.294 seconds

PL/SQL procedure successfully completed
Executed in 9.876 seconds

PL/SQL procedure successfully completed
Executed in 11.397 seconds

PL/SQL procedure successfully completed
Executed in 9.834 seconds

Oracle 12c R1 Securefiles:

PL/SQL procedure successfully completed
Executed in 8.539 seconds

PL/SQL procedure successfully completed
Executed in 12.916 seconds

PL/SQL procedure successfully completed
Executed in 11.562 seconds

PL/SQL procedure successfully completed
Executed in 13.364 seconds

PL/SQL procedure successfully completed
Executed in 11.541 seconds

Выводы: В 12 версии запись в BLOB была ускорена, но все еще уступает скорости записи RAW. RAW показывает чуть большую скорость работы даже при включении кэширования BLOB, в котором выполняется direct write. Поэтому, если длина данных позволяет, использование RAW вполне разумно. Интересно, что тесты не показали значительной разницы между Basicfile и Securefile, хотя Oracle заявляет, что последний быстрее в разы.

Каждое значение, которым манипулирует база данных Oracle, имеет тип данных. Тип данных значения связывает фиксированный набор свойств со значением. Используя эти свойства, Oracle обрабатывает значения одного типа данных иначе, чем значения другого. Например, вы можете добавить значения типа данных NUMBER, но не значения типа данных CHAR.

База данных Oracle предоставляет ряд встроенных типов данных, а также несколько категорий для пользовательских типов, которые могут использоваться в качестве типов данных.

Встроенные типы данных Oracle

В следующей таблице приведены встроенные типы данных Oracle.

Типы Описание Размер
VARCHAR2 (размер [BYTE | CHAR]) Строка символов переменной длины. От 1 байта до 4КБ.
NVARCHAR2 (размер) Строка символов Unicode переменной длины, имеющая символы максимального размера. Максимальный размер определяется национальным набором символов с верхним пределом 4000 байтов. Вы должны указать размер для NVARCHAR2.
NUMBER [(p [, s])] Число с точностью p и шкалой s.
Диапазон р: от 1 до 38.
Диапазоны s: от -84 до 127.
Точность и масштаб указаны в десятичных цифрах.
Значение NUMBER требует от 1 до 22 байтов.
FLOAT [(p)] Значение FLOAT внутренне представлено как NUMBER.
Диапазон значений p: от 1 до 126 двоичных цифр.
Значение FLOAT требует от 1 до 22 байтов.
ДОЛГО Символьные данные переменной длины до 2 гигабайт, используемые для обратной совместимости. 2 31 -1 байт
ДАТА Действительный диапазон дат: с 1 января 4712 г. до н.э. до 31 декабря 9999 г. н.э.
Формат по умолчанию определяется явно параметром NLS_DATE_FORMAT или неявно параметром NLS_TERRITORY.
Размер фиксируется в 7 байтов.
BINARY_FLOAT 32-битное число с плавающей точкой. Этот тип данных требует 4 байта.
BINARY_DOUBLE 64-битное число с плавающей запятой. Этот тип данных требует 8 байтов.
TIMESTAMP [(fraal_seconds_precision)] Этот тип данных содержит поля даты и времени YEAR, MONTH, DAY, HOUR, MINUTE и SECOND. Он содержит доли секунды, но не имеет часового пояса. Размер составляет 7 или 11 байт, в зависимости от точности.
TIMESTAMP [(фракция_seconds_precision)] с зоной времени Этот тип данных содержит поля даты и времени YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, TIMEZONE_HOUR и TIMEZONE_MINUTE. У него есть доли секунды и явный часовой пояс. Размер фиксируется в 13 байт.
ИНТЕРВАЛЬНЫЙ ГОД [(year_precision)] ДО МЕСЯЦА Сохраняет период времени в годах и месяцах, где year_precision - это количество цифр в поле YEAR datetime.
Допустимые значения: от 0 до 9. По умолчанию установлено значение 2.
Размер фиксируется в 5 байтах.
ИНТЕРВАЛЬНЫЙ ДЕНЬ [(day_precision)] ДО ВТОРОГО [(фракция_презентация_precision)] Сохраняет период времени в днях, часах, минутах и секундах, где
day_precision - это максимальное количество цифр в поле DAY datetime.
Допустимые значения: от 0 до 9. По умолчанию установлено значение 2.
Размер фиксируется в 11 байтов.
RAW (размер) Необработанные двоичные данные байтов размера длины. Максимальный размер 2000 байт
ДЛИННАЯ СЫРЬЯ Необработанные двоичные данные переменной. Размер до 2 гигабайт.
ROWID Уникальный адрес (представляющий строку из 64 строк) строки в ее таблице.
UROWID [(размер)] Логический адрес строки (представляющей строку из 64 строк) организованной по индексу таблицы. Максимальный размер и значение по умолчанию составляет 4000 байтов.
CHAR [(размер [BYTE | CHAR])] Символьные данные фиксированной длины размером в байтах или символах. Максимальный размер составляет 2000 байтов или символов. Минимальный размер по умолчанию - 1 байт.
NCHAR [(размер)] Данные символа фиксированной длины символов размера длины. Количество байтов может быть в два раза больше для кодирования AL16UTF16 и в три раза больше для кодирования UTF8. Максимальный размер определяется национальным набором символов с верхним пределом в 2000 байтов. Минимальный размер по умолчанию - 1 символ.
CLOB Большой символьный объект, содержащий однобайтовые или многобайтовые символы. Максимальный размер (4 гигабайта - 1) * (размер блока базы данных).
NCLOB Большой символьный объект, содержащий символы Юникода. Максимальный размер (4 гигабайта - 1) * (размер блока базы данных). Хранит данные национального набора символов.
большой двоичный объект Большой двоичный объект. Максимальный размер 4 гигабайта.
BFILE Содержит локатор для большого двоичного файла, хранящегося за пределами базы данных. Максимальный размер 4 гигабайта.

Типы данных персонажей Oracle

Тип данных CHAR определяет символьную строку фиксированной длины. Если вы вставите значение, которое короче длины столбца, Oracle пустым образом подставит значение в длину столбца, а если значение слишком длинное для столбца, Oracle вернет ошибку. Следующие типы данных используются для символьных данных:

Тип данных Oracle NUMBER

НОМЕР Тип данных:

Тип данных NUMBER хранит нулевые, положительные и отрицательные фиксированные числа.

Числовой формат с фиксированной точкой:

  • Где p - точность, до 20 цифр от 100 до 100, что эквивалентно 39 или 40 десятичным знакам в зависимости от положения десятичной точки.
  • s - масштаб, масштаб может варьироваться от -84 до 127.
  • Положительная шкала - это число значащих цифр справа от десятичной точки и включая наименее значимую цифру.
  • Отрицательная шкала - это число значащих цифр слева от десятичной точки, но не включая наименее значимую цифру.

Примеры:

Тип данных FLOAT:

Тип данных FLOAT является подтипом NUMBER. Вы можете указать это с точностью или без. Масштаб не может быть указан, но интерпретируется из данных. Каждое значение FLOAT требует от 1 до 22 байтов.

В следующем примере показана разница между NUMBER и FLOAT:

В приведенном выше примере возвращаемое значение FLOAT не может превышать 5 двоичных цифр. Таким образом, 123,45 округляется до 120, который имеет только две значащие десятичные цифры, требующие только 4 двоичных цифр.

Числа с плавающей точкой:

Термин с плавающей запятой происходит от того факта, что не существует фиксированного количества цифр до и после десятичной точки; то есть десятичная точка может плавать. Показатель степени может необязательно использоваться после числа для увеличения диапазона, например, 1.777 e -20 .

Пример:

В базе данных Oracle есть два числовых типа данных исключительно для чисел с плавающей запятой:

BINARY_FLOAT:
BINARY_FLOAT - это 32-битный тип данных с плавающей запятой с одинарной точностью. Каждое значение BINARY_FLOAT требует 4 байта.

BINARY_DOUBLE:
BINARY_DOUBLE - это 64-битный тип данных с плавающей запятой с двойной точностью. Каждое значение BINARY_DOUBLE требует 8 байтов.

Примеры:

Значение BINARY_FLOAT BINARY_DOUBLE
Максимальное положительное конечное значение 3.40282E + 38F 1.79769313486231E + 308
Минимальное положительное конечное значение 1.17549E-38F 2.22507485850720E-308

ДОЛГОЙ Тип данных
Используйте столбцы LOB (CLOB, NCLOB, BLOB), поскольку столбцы LONG поддерживаются только для обратной совместимости.

В столбцах LONG хранятся строки символов переменной длины, содержащие до 2 гигабайт -1 или 2 31 -1 байтов. Длинные столбцы имеют многие характеристики столбцов VARCHAR2. Вы можете использовать длинные столбцы для хранения длинных текстовых строк. Длина значений LONG может быть ограничена объемом памяти, доступной на вашем компьютере. ДЛИННЫЕ литералы формируются, как описано для «Текстовых литералов».

Типы данных даты и времени

Ниже приведены типы данных datetime:

  • ДАТА
  • TIMESTAMP
  • TIMESTAMP с зоной времени
  • TIMESTAMP с локальной зоной времени

Значения типов данных datetime иногда называют datetime.

Поля даты и значения:

Поле даты и времени Допустимые значения для даты и времени Допустимые значения для INTERVAL
ГОД От -4712 до 9999 (исключая год 0) Любое положительное или отрицательное целое число
МЕСЯЦ 01 до 12 От 0 до 11
ДЕНЬ С 01 по 31 (ограничено значениями MONTH и YEAR в соответствии с правилами текущего параметра календаря NLS) Любое положительное или отрицательное целое число
ЧАС От 00 до 23 От 0 до 23
МИНУТЫ От 00 до 59 От 0 до 59
ВТОРОЙ От 00 до 59,9 (n), где 9 (n) - это точность долей времени в секундах. 9 (n) часть не относится к DATE. От 0 до 59,9 (n), где 9 (n) - точность интервала долей секунд
TIMEZONE_HOUR От -12 до 14 (этот диапазон учитывает изменения летнего времени.) Неприменимо для DATEor TIMESTAMP. Непригодный
TIMEZONE_MINUTE От 00 до 59. Не применимо для даты или времени. Непригодный
TIMEZONE_REGION Запросите столбец TZNAME представления словаря данных V $ TIMEZONE_NAMES. Не применимо для DATE или TIMESTAMP. Непригодный
TIMEZONE_ABBR Запросите столбец TZABBREV представления словаря данных V $ TIMEZONE_NAMES. Не применимо для DATE или TIMESTAMP. Непригодный

ДАТА Тип данных:

Тип данных DATE хранит информацию о дате и времени (представленную как символьными, так и числовыми типами данных). Для каждого значения DATE Oracle хранит год, месяц, день, час, минуту и секунду.

Используя юлианские дни:

Юлианский номер дня - это количество дней с 1 января 4712 года до нашей эры. Вы можете использовать модель формата даты "J" с функциями даты TO_DATE и TO_CHAR для преобразования между значениями Oracle DATE и их юлианскими эквивалентами.

Значения даты по умолчанию:

  • Год - это текущий год, возвращаемый SYSDATE.
  • Месяц является текущим месяцем, возвращаемым SYSDATE.
  • День 01 (первый день месяца).
  • Час, минута и секунда - все 0.

Функция TO_DATE преобразует символьное или числовое значение в дату.

Вы можете использовать модель формата даты "J" с функциями даты TO_DATE и TO_CHAR для преобразования между значениями Oracle DATE и их юлианскими эквивалентами. Следующий оператор возвращает юлианский эквивалент 1 января 2015 года:

Тип данных TIMESTAMP:
Тип данных TIMESTAMP является расширением типа данных DATE и хранит год, месяц и день типа данных DATE, а также значения часов, минут и секунд. Это полезно для хранения точных значений времени, а также для сбора и оценки информации о дате по географическим регионам.

TIMESTAMP с временной зоной Тип данных:
TIMESTAMP WITH TIME ZONE - это вариант TIMESTAMP, который включает в себя имя региона часового пояса или смещение часового пояса в своем значении. Это полезно для сохранения информации о часовом поясе.

TIMESTAMP с локальной зоной времени Тип данных:

TIMESTAMP с локальной зоной времени - еще один вариант TIMESTAMP, чувствительный к информации о часовых поясах. Он отличается от TIMESTAMP WITH TIME ZONE тем, что данные, хранящиеся в базе данных, нормализуются к часовому поясу базы данных, а информация о часовом поясе не сохраняется как часть данных столбца. Когда пользователь получает данные, Oracle возвращает их в часовом поясе локального сеанса пользователя. Этот тип данных полезен для информации о дате, которая всегда должна отображаться в часовом поясе клиентской системы в двухуровневом приложении.

ИНТЕРВАЛ ГОДА В МЕСЯЦ Тип данных:

ИНТЕРВАЛ ГОДА В МЕСЯЦ хранит период времени, используя поля даты и года ГОД и МЕСЯЦ. Этот тип данных полезен для представления разницы между двумя значениями даты и времени, когда значимы только значения года и месяца.

ДЕНЬ ИНТЕРВАЛА ДЛЯ ВТОРОГО Типа данных:

INTERVAL DAY TO SECOND хранит период времени в виде дней, часов, минут и секунд. Этот тип данных полезен для представления точной разницы между двумя значениями даты и времени.

  • day_precision - количество цифр в поле даты и времени DAY. Допустимые значения: от 0 до 9. По умолчанию установлено значение 2.
  • fraal_seconds_precision - количество цифр в дробной части поля ВРЕМЯ datetime. Допустимые значения: от 0 до 9. По умолчанию установлено значение 6.

Типы данных ANSI, DB2 и SQL / DS

Oracle распознает имя типа данных ANSI или IBM, которое отличается от имени типа данных Oracle Database, и преобразует тип данных в эквивалентный тип данных Oracle. Следующая таблица показывает конверсии :,

Тип данных ANSI SQL Тип данных Oracle
СИМВОЛЫ (п)
СИМ (п)
СИМ (п)
VARING CHARACTER (n)
CHAR VARYING (n)
VARCHAR2 (п)
НАЦИОНАЛЬНЫЙ ХАРАКТЕР (n)
НАЦИОНАЛЬНЫЙ ЧАР (n)
NCHAR (п)
NCHAR (п)
НАЦИОНАЛЬНЫЙ ХАРАКТЕР ИЗМЕНЕНИЯ (n)
НАЦИОНАЛЬНЫЙ ЧАР ВАРЬИНГ (н)
NCHAR VARYING (n)
NVARCHAR2 (п)
ЧИСЛОВОЙ [(P, S)]
DECIMAL [(p, s)] (примечание 1)
НОМЕР (р, с)
INTEGER
INT
SMALLINT
НОМЕР (р, 0)
FLOAT (примечание 2)
ДВОЙНАЯ ТОЧНОСТЬ (Примечание 3)
РЕАЛЬНО (Примечание 4)
ПОПЛАВКОВЫЕ (126)
ПОПЛАВКОВЫЕ (126)
ПОПЛАВКОВЫЙ (63)

Типы, предоставляемые Oracle

Oracle предоставляет некоторые новые типы данных, которых нет во встроенных или поддерживаемых ANSI типах. Эти типы могут быть реализованы в C / C ++, Java или PL / SQL. Вот подробности:

Любые типы:
Типы Any обеспечивают очень гибкое моделирование параметров процедуры и столбцов таблицы, где фактический тип неизвестен. Эти типы данных позволяют динамически инкапсулировать и получать доступ к описаниям типов, экземплярам данных и наборам экземпляров данных любого другого типа SQL. Эти типы имеют интерфейсы OCI и PL / SQL для создания и доступа.

Типы XML:
Этот тип, предоставляемый Oracle, можно использовать для хранения и запроса данных XML в базе данных. XMLType имеет функции-члены, которые вы можете использовать для доступа, извлечения и запроса данных XML с использованием выражений XPath. XMLType является системным типом, поэтому вы можете использовать его как аргумент функции или как тип данных таблицы или столбца представления. Вы также можете создавать таблицы и представления XMLType. Когда вы создаете столбец XMLType в таблице, вы можете сохранить данные XML в столбце CLOB, как двоичный XML (хранящийся внутри как CLOB), или как объект реляционного типа.

Типы данных URI

Пространственные типы

Oracle Spatial разработан, чтобы сделать управление пространственными данными более простым и естественным для пользователей приложений с поддержкой определения местоположения, приложений геоинформационных систем (ГИС) и приложений геоизображения. После того, как пространственные данные сохранены в базе данных Oracle, вы можете легко манипулировать ими, извлекать и связывать их со всеми другими данными, хранящимися в базе данных. Следующие типы данных доступны, только если вы установили Oracle Spatial.

Тип данных Описание
SDO_GEOMETRY Геометрическое описание пространственного объекта хранится в одной строке, в одном столбце типа объекта SDO_GEOMETRY в пользовательской таблице. Любая таблица, имеющая столбец типа SDO_GEOMETRY, должна иметь другой столбец или набор столбцов, определяющих уникальный первичный ключ для этой таблицы. Таблицы такого рода иногда называют таблицами геометрии.
SDO_TOPO_GEOMETRY Этот тип описывает геометрию топологии, которая хранится в одной строке в одном столбце типа объекта SDO_TOPO_GEOMETRY в пользовательской таблице.
SDO_GEORASTER В объектно-реляционной модели GeoRaster растровая сетка или объект изображения хранятся в одной строке в одном столбце типа объекта SDO_GEORASTER в пользовательской таблице. Таблицы такого типа называются таблицами GeoRaster.

Типы СМИ

Oracle Multimedia использует типы объектов, подобные классам Java или C ++, для описания мультимедийных данных. Экземпляр этих типов объектов состоит из атрибутов, включая метаданные и медиаданные, а также методов. Мультимедийные типы данных создаются в схеме ORDSYS. Публичные синонимы существуют для всех типов данных, поэтому вы можете получить к ним доступ без указания имени схемы.
Oracle Multimedia предоставляет следующие типы объектов:

Тип данных Описание
ORDAudio Поддерживает хранение и управление аудиоданными.
ORDDicom Поддерживает хранение и управление цифровыми изображениями и коммуникациями в медицине (DICOM), формат, общепризнанный в качестве стандарта для медицинских изображений.
ORDDoc Поддерживает хранение и управление медиа-данными любого типа, включая аудио, изображения и видео. Используйте этот тип, если вы хотите, чтобы все мультимедиа хранились в одном столбце.
ORDImage Поддерживает хранение и управление данными изображения.
ORDVideo Поддерживает хранение и управление видеоданными.
ORDImageSignature Тип объекта ORDImageSignature устарел и больше не должен вводиться в ваш код. Существующие вхождения этого типа объекта будут продолжать функционировать как в прошлом.

Тип объекта ORDImageSignature устарел и больше не должен вводиться в ваш код. Существующие вхождения этого типа объекта будут продолжать функционировать как в прошлом.

Предыдущая: Oracle Home
Далее: Литералы

Читайте также: