Типы данных oracle sql
Типы данных Oracle и типы данных Microsoft SQL Server не всегда полностью совпадают. Там, где это возможно, выбор подходящего типа данных при публикации таблицы Oracle осуществляется автоматически. В случаях, когда выбор однозначного соответствия типов данных не очевиден, предлагаются альтернативные сопоставления типов данных. Сведения о выборе альтернативных соответствий типов данных см. ниже в разделе «Указание альтернативных сопоставлений типов данных».
Следующая таблица показывает, как по умолчанию осуществляется преобразование типов данных между Oracle и SQL Server , когда данные передаются издателем Oracle распространителю SQL Server . В столбце «Альтернатива» показано, допустимы ли альтернативные соответствия.
Вопросы сопоставления типов данных
При репликации данных из базы данных Oracle нужно помнить о следующих особенностях типов данных.
Неподдерживаемые типы данных
Следующие типы данных не поддерживаются; столбцы, имеющие эти типы, невозможно реплицировать.
Столбцы, использующие REF
Тип данных DATE
Даты в диапазоне SQL Server от 1753 нашей эры. до 9999 г. нашей эры, тогда как даты в Oracle распределяются в диапазоне от 4712 г. до нашей эры до 4712 г. нашей эры. Если столбец, имеющий тип DATE, содержит значения, выходящие за диапазон SQL Server, выберите для столбца альтернативный тип данных, которым является VARCHAR(19).
Типы FLOAT и NUMBER
Масштаб и точность, задаваемые при сопоставлении типов данных FLOAT и NUMBER, зависят от масштаба и точности, указанных для столбца, использующего этот тип данных в базе данных Oracle. Точность представляет собой количество цифр в числе. Масштаб представляет собой количество цифр справа от десятичной запятой в числе. Например, у числа 123,45 точность равна 5, а масштаб равен 2.
Oracle позволяет определять числа, имеющие масштаб больший, чем точность, например NUMBER(4,5), в то время как SQL Server требует, чтобы точность была не меньше масштаба. Чтобы исключить усечение данных, когда в данных издателя Oracle масштаб больше, чем точность, при преобразовании данных точность приравнивается к масштабу: тип данных NUMBER(4,5) преобразуется в NUMERIC(5,5).
Если для типа NUMBER не указать масштаб и точность, SQL Server будет использовать по умолчанию максимальные масштаб (8) и точность (38). Для оптимизации хранения данных и производительности при репликации данных рекомендуется установить специальные значения масштаба и точности в Oracle.
Типы больших объектов
Oracle поддерживает до 4 гигабайт (ГБ), в то время как SQL Server поддерживает до 2 ГБ. Реплицируемые данные свыше 2 ГБ усекаются.
Если таблица Oracle включает столбец типа BFILE, данные для этого столбца хранятся в файловой системе. Административной учетной записи репликации должно быть предоставлено право доступа в каталог, в котором хранятся данные. С этой целью должно использоваться следующее синтаксическое выражение:
GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>
Дополнительные сведения о типах больших объектов см. в разделе с рекомендациями по большим объектам статьи Рекомендации по структуре и ограничения для издателей Oracle.
Указание альтернативных сопоставлений типов данных
Обычно целесообразно использовать сопоставление типов данных по умолчанию, но для многих типов данных Oracle вместо сопоставления по умолчанию можно выбрать тип данных из набора альтернативных вариантов. Существует два способа указания альтернативных сопоставлений:
Переопределяйте значения по умолчанию для каждой статьи отдельно, используя хранимые процедуры или мастер создания публикаций.
Глобальная замена значений по умолчанию для всех последующих статей с помощью хранимых процедур (значения по умолчанию для существующих статей не изменяются).
Чтобы указать альтернативные сопоставления типов данных, см. раздел Указание сопоставления типов данных для издателя Oracle.
При объявлении переменной или константы необходимо задать ее тип данных (PL/SQL, за некоторыми исключениями, относится к языкам со статической типизацией — см. ниже врезку). В PL/SQL определен широкий набор скалярных и составных типов данных; кроме того, вы можете создавать пользовательские типы данных. Многие типы данных PL/SQL (например, BOOLEAN и NATURAL ) не поддерживаются столбцами баз данных, но в коде PL/SQL эти типы весьма полезны.
Практически все заранее определенные типы данных определяются в пакете PL/SQL STANDARD . Например, определение типа данных BOOLEAN и двух числовых типов данных может выглядеть так:
PL/SQL поддерживает распространенный «джентльменский набор» типов данных, а так-же ряд других типов. В этом разделе приводится краткий обзор различных предопределенных типов данных.
ЧТО ТАКОЕ «СТАТИЧЕСКАЯ ТИПИЗАЦИЯ »?
Статической (или сильной) типизацией называется проверка типов во время компиляции (а не на стадии выполнения программы). К числу языков программирования, использующих сильную типизацию, относятся PL/SQL, Ada, C и Pascal. Языки с динамической типизацией (такие, как JavaScript, Perl или Ruby) выполняют большинство проверок типов во время выполнения. Статическая типизация позволяет выявлять ошибки во время компиляции, что повышает надежность программ. Преимуществом статической типизации является и ускорение выполнения программ. Оптимизирующий компилятор, который знает точные типы данных, может подбирать более эффективные ассемблерные решения и генерировать высокооптимизированный машинный код. Динамическая типизация тоже обладает своими преимуществами: например, метаклассы и интроспекция проще реализуются на базе динамической типизации.
Символьные типы данных
PL/SQL поддерживает строки фиксированной и переменной длины, состоящие как из традиционных символов, так и из символов Юникода. К строкам первого типа относятся строки CHAR и NCHAR , а к строкам второго вида — VARCHAR2 и NVARCHAR2 . Объявление строки переменной длины, которая может содержать до 2000 символов, выглядит так:
Для очень длинных символьных строк в PL/SQL предусмотрены типы данных CLOB (Character Large Object) и NCLOB (NLS Character Large Object). По соображениям совместимости PL/SQL также поддерживает тип данных LONG. Эти типы данных позволяют сохранять и обрабатывать очень большие объемы данных; так, в Oracle11g тип LOB способен хранить до 128 терабайт информации.
Использование типа LONG ограничивается множеством правил. Мы не рекомендуем применять его в Oracle8 и последующих версиях.
Числовые типы данных
В PL/SQL поддерживаются как вещественные, так и целочисленные типы данных. Тип NUMBER давно был основным типом для работы с числовыми данными; он может применяться для работы с целыми и вещественными данными как с фиксированной, так и с плавающей запятой. Пример типичного объявления NUMBER :
Из-за своей внутренней десятичной природы тип NUMBER особенно удобен при работе с денежными суммами. В отличие от двоичного представления, ему не присущи ошибки округления. Например, если сохранить в нем значение 0.95, позднее вы прочитаете именно эту величину, а не приближенную (скажем, 0.949999968).
До выхода Oracle10g тип NUMBER был единственным числовым типом данных PL/SQL, напрямую соответствовавшим типу столбцов базы данных. В этом нетрудно убедиться, изучив содержимое пакета STANDARD . Данная особенность стала одной из причин, по которым тип NUMBER так широко применялся в программах PL/SQL.
В Oracle10g появились два двоичных типа с плавающей запятой: BINARY_FLOAT и BINARY_DOUBLE . Как и NUMBER , эти двоичные типы данных поддерживаются и в PL/SQL, и в базах данных. Однако в отличие от NUMBER , эти типы хранят значение в двоичном виде, а следовательно, при работе с ними могут возникнуть погрешности округления. Типы BINARY_FLOAT и BINARY_DOUBLE поддерживают специальные значения NaN (Not a Number, «не является числом»), положительную и отрицательную бесконечность. В некоторых типах приложений эти типы обеспечивают огромный выигрыш в быстродействии, так как вычисления с этими двоичными типами по возможности выполняются на аппаратном уровне.
В Oracle11g появились еще две разновидности вещественных типов. Типы SIMPLE_FLOAT и SIMPLE_DOUBLE являются аналогами BINARY_FLOAT и BINARY_DOUBLE , но они не поддерживают NULL и не инициируют исключение в случае переполнения.
PL/SQL поддерживает несколько числовых типов и подтипов, не имеющих прямого соответствия среди типов баз данных, но все равно полезных. Особого внимания заслуживают PLS_INTEGER и SIMPLE_INTEGER . Операции с целочисленным типом PLS_INTEGER реализуются на аппаратном уровне. В частности, счетчики циклов FOR реализуются в формате PLS_INTEGER . Тип SIMPLE_INTEGER , появившийся в Oracle11g, обладает тем же диапазоном значений, что и PLS_INTEGER , но не поддерживает NULL и не инициирует исключение в случае переполнения. SIMPLE_INTEGER , как и SIMPLE_FLOAT с SIMPLE_DOUBLE , работает невероятно быстро — особенно с откомпилированным кодом.
Дата, время и интервалы
До появления версии Oracle9i представление дат в Oracle ограничивалось типом DATE , в котором хранится дата и время (с округлением до ближайшей секунды). В Oracle9i были введены два новых типа данных, INTERVAL и TIMESTAMP , значительно расширившие возможности разработчиков в отношении операций с датами и временем в PL/ SQL, а также вычисления и хранения временных интервалов. Их использование продемонстрировано в функции, вычисляющей возраст человека в интервальном формате с точностью до месяца:
Логические данные
PL/SQL поддерживает тип данных BOOLEAN . Переменные этого типа могут принимать одно из трех значений ( TRUE, FALSE или NULL ).
Логические переменные помогают писать понятный, легко читаемый код даже в тех случаях, когда он содержит очень сложные логические выражения. Пример объявления логической переменной с присваиванием ей значения по умолчанию:
Двоичные данные
Oracle поддерживает несколько разновидностей двоичных данных — неструктурированных данных, не интерпретируемых и не обрабатываемых Oracle. К их числу относятся типы RAW , BLOB и BFILE . Тип BFILE используется для хранения неструктурированных двоичных данных в файлах операционной системы вне базы данных. Тип RAW имеет переменную длину, а при операциях с ним Oracle не выполняет преобразование символов при передаче данных. В остальном он аналогичен символьному типу VARCHAR2 .
Тип данных LONG RAW поддерживается для обеспечения обратной совместимости, но в PL/SQL поддержка данных LONG RAW ограничена. В базе данных Oracle столбец LONG RAW занимает до 2 Гбайт, но PL/SQL позволяет работать только с первыми 32 760 байтами LONG RAW . Если, например, вы попытаетесь выполнить выборку в переменную PL/SQL из столбца LONG RAW , превышающего лимит в 32 760 байт, произойдет ошибка:
Для работы с данными LONG RAW , превышающими лимит PL/SQL, потребуется программа OCI; кстати, это веская причина для перевода старого кода с LONG RAW на данные BLOB , не имеющие такого ограничения.
Типы данных ROWID и UROWID
Oracle поддерживает два типа данных ROWID и UROWID , предназначенных для предоставления адреса строки в таблице. Тип ROWID представляет уникальный физический адрес строки в таблице, а тип UROWID — логическую позицию строки в индексной таблице (Index-Organized Table, IOT). Тип ROWID также является псевдостолбцом SQL, который может включаться в инструкции SQL.
Тип данных REF CURSOR
Тип данных REF CURSOR позволяет объявлять курсорные переменные, которые могут использоваться со статическими и динамическими SQL-командами для улучшения гибкости программного кода. Тип REF CURSOR существует в двух формах: сильной и слабой. PL/SQL относится к категории языков со статической типизацией, а слабый тип REF CURSOR является одной из немногочисленных конструкций с динамической типизацией.
В следующем примере объявления сильной формы REF CURSOR курсорная переменная связывается с конкретной структурой записи с помощью атрибута %ROWTYPE :
Далее следуют два слабых объявления REF CURSOR , в которых переменная не связывается ни с какой конкретной структурой. Во втором объявлении (строка 4) представлен тип SYS_REFCURSOR — заранее определенный слабый тип REF CURSOR .
Типы данных для поддержки интернет-технологий
В Oracle9i появилась встроенная поддержка ряда технологий и типов данных, связанных с Интернетом, в частности XML (eXtensible Markup Language) и URI (Universal Resource Identifier). В Oracle имеются специализированные типы для работы с данными XML и URI, а также специальный класс идентификаторов URI ( DBUri-REF ), который используется для доступа к базе данных. Кроме того, в Oracle появился новый набор типов данных, обеспечивающий хранение внешних и внутренних URI и обращение к ним из базы данных.
Тип XMLType предназначен для запроса и сохранения данных в формате XML. Для работы с XML используются такие функции, как SYS_XMLGEN из пакета DBMS_XMLGEN . Поддержка XPath и встроенные команды языка SQL позволяют выполнять поиск данных в документах XML.
Типы данных «Any»
Большая часть программного кода предназначается для решения узкоспециализированных задач. Однако иногда нам приходится писать более универсальные программы. Именно для таких ситуаций предназначены типы данных Any .
Эта группа типов данных, появившаяся в Oracle9i, заметно отличается от любых других типов данных Oracle. Типы данных Any позволяют динамически инкапсулировать описания типов, экземпляры данных и наборы экземпляров данных любого другого типа SQL. С помощью этих объектных типов (и определенных для них методов) можно, к примеру, определить тип данных, хранимых во вложенной таблице, не обращаясь к объявлению типа этой таблицы!
В группу типов данных Any входят AnyType , AnyData и AnyDataSet .
Пользовательские типы данных
Из встроенных типов данных Oracle и пользовательских типов можно строить типы данных произвольной сложности, которые с большой точностью отражают структуру и поведение данных в конкретных системах. В базе данных 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
Далее: Литералы
Тип данных связан с конкретным форматом хранения и ограничениями диапазона. В Oracle каждому значению или константе присваивается тип данных.
По сути, он определяет, как данные хранятся, обрабатываются и обрабатываются Oracle во время хранения и обработки данных.
Основное различие между типами данных PL / SQL и SQL заключается в том, что тип данных SQL ограничен столбцом таблицы, а типы данных PL / SQL используются в блоках PL / SQL. Подробнее об этом позже в уроке.
Ниже приведена схема различных типов данных в PL / SQL.
В этом уроке вы узнаете
ХАРАКТЕР Тип данных:
Этот тип данных в основном хранит буквенно-цифровые символы в строковом формате.
Литеральные значения всегда должны быть заключены в одинарные кавычки при назначении их типу данных CHARACTER.
Этот символьный тип данных дополнительно классифицируется следующим образом:
- Тип данных CHAR (фиксированный размер строки)
- VARCHAR2 Тип данных (переменный размер строки)
- VARCHAR Тип данных
- NCHAR (собственный фиксированный размер строки)
- NVARCHAR2 (собственный размер строки переменной)
- ДОЛГОЙ И ДОЛГОЙ СЫРЬЕ
- Oracle будет заполнять пустую переменную, если переменная не будет занимать весь объявленный для нее размер, поэтому Oracle будет выделять память для объявленного размера, даже если переменная не занимала ее полностью.
- Ограничение размера для этого типа данных составляет 1-2000 байт.
- Тип данных CHAR более подходит для использования там, где когда-либо будет установлен размер данных.
Синтаксис Объяснение:
- Первый оператор объявления объявил переменную ‘grade’ типа данных CHAR с максимальным размером 1 байт (значение по умолчанию).
- Второй оператор объявления объявил переменную ‘manager’ типа данных CHAR с максимальным размером 10 и присвоил значение ‘guru99’, которое составляет 6 байтов. В этом случае Oracle выделит для памяти 10 байтов, а не 6 байтов.
- Ограничение размера для этого типа данных составляет 1-4000 байт для размера столбца таблицы и 1-32767 байт для переменных.
- Размер определяется для каждой переменной во время объявления переменной.
- Но Oracle будет выделять память только после определения переменной, т. Е. Oracle будет учитывать только фактическую длину строки, которая хранится в переменной для выделения памяти, а не размер, указанный для переменной в части объявления.
- Всегда полезно использовать VARCHAR2 вместо типа данных CHAR для оптимизации использования памяти.
Синтаксис Объяснение:
- Вышеуказанный оператор объявления объявил переменную ‘manager’ типа данных VARCHAR2 с максимальным размером 10 и присвоил значение ‘guru99’, которое составляет 6 байтов. В этом случае Oracle выделит память всего 6 байтов.
- Во избежание изменений в поведении всегда полезно использовать VARCHAR2 вместо VARCHAR.
Синтаксис Объяснение:
- Этот набор символов может быть определен для сеанса с использованием NLS_PARAMETERS.
- Набор символов может быть UTF16 или UTF8.
- Ограничение по размеру составляет 1-2000 байт.
Синтаксис Объяснение:
- Вышеуказанный оператор объявления объявляет переменную «native» типа данных NCHAR с максимальным размером 10.
- Длина этой переменной зависит от (количества длин) на байт, как определено в наборе символов.
- Этот набор символов может быть определен для сеанса с использованием NLS_PARAMETERS.
- Набор символов может быть UTF16 или UTF8.
- Ограничение по размеру составляет 1-4000 байт.
Синтаксис Объяснение:
- Вышеуказанный оператор объявления объявляет переменную Native_var типа данных NVARCHAR2 с максимальным размером 10.
- Они в основном используются в словаре данных.
- Тип данных LONG используется для хранения данных набора символов, а тип LONG RAW — для хранения данных в двоичном формате.
- Тип данных LONG RAW принимает медиа-объекты, изображения и т. Д., В то время как LONG работает только с данными, которые могут быть сохранены с использованием набора символов.
Синтаксис Объяснение:
- Вышеуказанный оператор объявления объявляет переменную Large_text типа данных LONG и Large_raw типа данных RAW LONG.
Примечание. Использование типа данных LONG в Oracle не рекомендуется. Вместо этого тип данных LOB должен быть предпочтительным.
НОМЕР Тип данных:
Этот тип данных хранит числа с фиксированной или плавающей точкой с точностью до 38 цифр. Этот тип данных используется для работы с полями, которые будут содержать только числовые данные. Переменная может быть объявлена либо с точностью до десятичных цифр, либо без этой информации. При назначении этому типу данных значения не обязательно заключать в кавычки.
Синтаксис Объяснение:
- В приведенном выше первом объявлении объявляется, что переменная «A» имеет числовой тип данных с полной точностью 8 и десятичными цифрами 2.
- Второе объявление объявляет, что переменная ‘B’ имеет числовой тип данных с полной точностью 8 и без десятичных цифр.
- Третье объявление является наиболее общим, объявляет переменную ‘C’ с числовым типом данных без ограничений по точности или десятичным разрядам. Это может занимать до 38 цифр.
БУЛЕВЫЙ Тип данных:
Этот тип данных хранит логические значения. Он представляет собой ИСТИНА или ЛОЖЬ и в основном используется в условных выражениях. При назначении этому типу данных значения не обязательно заключать в кавычки.
Синтаксис Объяснение:
- Выше переменная Var1 объявлена как тип данных BOOLEAN. Вывод кода будет либо истинным, либо ложным в зависимости от установленного условия.
ДАТА Тип данных:
Этот тип данных хранит значения в формате даты в виде даты, месяца и года. Всякий раз, когда переменная определена с типом данных DATE вместе с датой, она может содержать информацию о времени, и по умолчанию информация о времени устанавливается в 12:00:00, если она не указана. При назначении этому типу данных значения должны быть заключены в кавычки.
Стандартный формат времени Oracle для ввода и вывода — «DD-MON-YY», и он снова устанавливается на NLS_PARAMETERS (NLS_DATE_FORMAT) на уровне сеанса.
Синтаксис Объяснение:
- В приведенном выше, переменная «Newyear» объявлен как тип DATE данных и присваивается значение Яном 1 — го , 2015 день.
- Второе объявление объявляет переменную current_date как тип данных DATE и присваивает значение с текущей системной датой.
- Обе эти переменные содержат информацию о времени.
Тип данных LOB:
Этот тип данных в основном используется для хранения и обработки больших блоков неструктурированных данных, таких как изображения, мультимедийные файлы и т. Д. Oracle предпочитает LOB вместо типа данных LONG, поскольку он более гибкий, чем тип данных LONG. Ниже приведены некоторые основные преимущества типа данных LOB над LONG.
- Количество столбцов в таблице с типом данных LONG ограничено 1, тогда как в таблице нет ограничений на количество столбцов с типом данных LOB.
- Инструмент интерфейса данных принимает тип данных LOB таблицы во время репликации данных, но не указывает столбец LONG таблицы. Эти столбцы LONG необходимо реплицировать вручную.
- Размер столбца LONG составляет 2 ГБ, тогда как LOB может хранить до 128 ТБ.
- Oracle постоянно улучшает тип данных LOB в каждом из своих выпусков в соответствии с современными требованиями, тогда как тип данных LONG постоянен и не получает много обновлений.
Таким образом, всегда хорошо использовать тип данных LOB вместо типа данных LONG. Ниже приведены различные типы данных больших объектов. Они могут хранить до 128 терабайт.
Этот тип данных хранит данные больших объектов в двоичном формате до максимального размера 128 ТБ. Он не хранит данные, основанные на деталях набора символов, поэтому он может хранить неструктурированные данные, такие как мультимедийные объекты, изображения и т. Д.
Синтаксис Объяснение:
- Выше переменная ‘Binary_data’ объявлена как BLOB.
Тип данных CLOB сохраняет данные LOB в наборе символов, тогда как NCLOB сохраняет данные в собственном наборе символов. Поскольку эти типы данных используют хранилище на основе набора символов, они не могут хранить такие данные, как мультимедиа, изображения и т. Д., Которые нельзя поместить в строку символов. Максимальный размер этих типов данных составляет 128 ТБ.
Синтаксис Объяснение:
- В приведенном выше примере переменная Character_data объявлена как тип данных CLOB.
- BFILE — это типы данных, которые хранят данные неструктурированного двоичного формата вне базы данных в виде файла операционной системы.
- Размер BFILE для ограниченной операционной системы, и они являются файлами только для чтения и не могут быть изменены.
Резюме
Мы рассмотрели различные простые типы данных, доступные в PL / SQL, а также их синтаксис. Мы узнаем о сложных типах данных в следующих темах.
Читайте также: