Create table oracle типы данных

Обновлено: 01.07.2024

Каждое значение, которым манипулирует база данных 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
Далее: Литералы

Таблицы представляют собой главный инструмент моделирования данных в БД , как построенных на основе SQL вообще, так и в Oracle в частности.

Предложение CREATE TABLE

Создание таблиц осуществляется предложением CREATE TABLE категории DDL.

Помимо указанных в этом примере предложение CREATE TABLE может включать чрезвычайно много других конструкций, большая часть которых связана с организацией хранения, а не с логикой данных. Полностью они приводятся в документации Oracle по SQL.

Типы данных в столбцах

Существующие в Oracle встроенные (предопределенные) типы позволяют указывать столбцам таблицы следующие виды данных:

  • Числа:
    • типы NUMBER, NUMBER ( n ), NUMBER ( n, m ) (в частности, NUMBER ( *, m ) )
    • типы FLOAT, REAL, NUMERIC, DECIMAL, INTEGER и другие совместимые с ANSI
    • типы BINARY_FLOAT(10.1-), BINARY_DOUBLE(10.1-)
    • DATE
    • TIMESTAMP(9.2-), TIMESTAMP ( n )(9.2-)
    • TIMESTAMP WITH TIME ZONE (9.2-), TIMESTAMP WITH LOCAL TIME ZONE(9.2-)
    • INTERVAL YEAR TO MONTH(9.2-), INTERVAL DAY TO SECOND(9.2-)

    (9.0-) начиная с версии 9.0.

    (9.2-) начиная с версии 9.2.

    (10.1-) начиная с версии 10.1.

    Помимо встроенных типов Oracle с версии 8 позволяет использовать в описании столбцов типы, создаваемые самостоятельно пользователями БД. Это объектные ("структурные") типы.

    Типы BLOB, CLOB , NCLOB и BFILE иногда объединяют в единую категорию типов "больших неструктурированных объектов" (объекты LOB ). Для работы с ними в SQL иногда требуется прибегать к функциям встроенного пакета DBMS_LOB , хотя с версии 9.2 поводов для этого стало меньше. Их употребление в SQL связано с определенными ограничениями. Например, столбцы этих типов не могут употребляться в формировании ключа таблицы и вообще индексироваться стандартным образом. Часть подобных ограничений употребления обязаны предположительно гигантским объемам значений, а часть — особенному способу хранения, отличному от принятого для "обычных" данных.

    Официально этого типа не существует, а следами его фактического наличия являются возможности указывать в обычных выражениях SQL значение времени суток, например, TIME '12:30:45' , и некоторые функции, например, TO_TIME и EXTRACT .

    Похожим путем в версии 8.1 можно активировать типы TIMESTAMP и INTERVAL (впоследствии ставшие штатными, в отличие от TIME ):

    Числовые типы
    Тип NUMBER
    • Исторически первым для Oracle числовым типом является NUMBER . Он существует в трех вариантах:
    • NUMBER — для хранения чисел "самого общего вида";
    • NUMBER (n) — для хранения целых с максимальной точностью мантиссы n десятичных позиций;
    • NUMBER (n, m) (в частности, NUMBER (*, m ) ) — для хранения чисел "с фиксированной десятичной точкой" с максимальной точностью мантиссы n десятичных позиций, из них m после десятичной точки.

    Формат хранения во всех случаях одинаков:

    • 1-й байт — знак числа и степень 100 в двоичном виде;
    • остальные байты — двоично-десятичное представление цифр мантиссы, по две десятичные цифры на байт, максимум 38 десятичных цифр.

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

    В выдачах Typ = 2 сообщает числовое внутреннее обозначение для типа NUMBER, Len сообщает занимаемую при хранении длину в байтах, а десятичные значения самих байтов перечисляются следом.

    Подтипы NUMBER

    Тип NUMBER в Oracle не входит в стандарт ANSI/ISO SQL. Следующие типы включены в диалект SQL Oracle для совместимости со стандартом и с решениями IBM:

    Содержательно эти типы в Oracle ничего не привносят и фактически являются подтипами типа NUMBER .

    6урок по oracle sql, типы данных и работа с таблицами

    --Числа:
    --NUMBER - числа общего вида, NUMBER (n) - n это точность мантиссы, NUMBER (n, m) - с фиксированной десятичной точкой
    --INTEGER, FLOAT, REAL, NUMERIC, DECIMAL
    --BINARY_FLOAT(), BINARY_DOUBLE()

    --Строки текста:
    --VARCHAR2 (n) - может хранить до 4000 байт, CHAR (n) - может хранить до 2000 байт
    --NVARCHAR2 (n), NCHAR (n)() - строки в национальной кодировке
    --CLOB(), NCLOB() - используются для хранения больших строк

    --Временные типы:
    --DATE
    --TIMESTAMP(), TIMESTAMP (n)()
    --TIMESTAMP WITH TIME ZONE(), TIMESTAMP WITH LOCAL TIME ZONE()

    --Строки байтов:
    --RAW (n)
    --BLOB()

    --Создание таблицы (столбцы с разными типами данных)
    --DEFAULT - значение по умолчанию, если при операции INSERT небыло введено значения
    --CHECK - условие(ограничение) для значений столбца

    CREATE TABLE any_table
    (
    id INTEGER
    ,name VARCHAR2 (14)
    ,d_time DATE DEFAULT TRUNC(SYSDATE)
    ,d_money NUMBER (10, 2) CHECK (d_money > 1000)
    );

    SELECT * FROM any_table;

    --Создание таблицы из существующей, данные перенесутся
    CREATE TABLE any_table_copy AS SELECT * FROM any_table;

    SELECT * FROM any_table_copy;

    --Добавление столбца
    ALTER TABLE any_table ADD(n_name VARCHAR2(10));
    --Изменение столбца
    ALTER TABLE any_table MODIFY(n_name VARCHAR2(20));
    --NULL значение
    ALTER TABLE any_table MODIFY (id NOT NULL);
    ALTER TABLE any_table MODIFY (id NULL);
    --Удаление столбца
    ALTER TABLE any_table DROP COLUMN n_name;
    --CASCADE CONSTRAINTS позволяет удалить столбец с ключами
    ALTER TABLE any_table DROP COLUMN n_name CASCADE CONSTRAINTS;
    --Переименовать таблицу
    ALTER TABLE any_table RENAME TO any_table_new;
    --Переименовать столбец
    ALTER TABLE any_table_new RENAME COLUMN name TO name_new;


    --Удаление таблицы
    --Если на столбцы таблицы определены ссылки внешними ключами из других таблиц, СУБД не позволит выполнить DROP TABLE
    --CASCADE CONSTRAINTS позволяет удалить таблицу с ключами, при этом удалит сначало правило внешнего ключа.
    DROP TABLE any_table_new;
    DROP TABLE any_table_copy CASCADE CONSTRAINTS;

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

    В базе данных Oracle пользователи могут создавать различные типы таблиц в соответствии со своими потребностями. Обычно используются следующие типы таблиц:

    Типы Описание
    Таблица кучи Данные организованы в виде кучи и хранятся в отдельном поле таблицы несвязанным образом. Это также стандартная таблица. Обычно мы используем таблицы кучи.
    диаграмма направления Данные хранятся в сегменте индекса, соответствующем ограничению первичного ключа в структуре B-дерева.
    Таблица кластеров Кластер состоит из набора таблиц, которые используют одну и ту же базу данных. В некоторых случаях использование кластерных таблиц может сэкономить место для хранения.
    Таблица разделов Данные разделены на более мелкие части и хранятся в соответствующих разделах. Каждый раздел может управляться и использоваться независимо.

    1.1 Тип данных

    n = от 1 до 2000 байт

    Символьная строка фиксированной длины, n байтов, если длина не указана, по умолчанию - 1 байт (китайский символ - 2 байта)

    n = от 1 до 4000 байт

    Строка символов переменной длины, укажите максимальную длину n в конкретном определении,
    Этот тип данных может помещать все символы в числа, буквы и наборы символов ASCII (или стандарты набора символов, принятые системами баз данных, такими как EBCDIC).
    Если длина данных не достигает максимального значения n, Oracle 8i автоматически корректирует длину поля в соответствии с размером данных,
    Если до и после ваших данных есть пробелы, Oracle 8i автоматически удалит их. VARCHAR2 - наиболее часто используемый тип данных.
    Максимальная длина индекса может быть 3209.

    m=1 to 38
    n=-84 to 127

    Числовой столбец переменной длины, допускающий 0, положительные и отрицательные значения, m - количество значащих цифр, а n - количество цифр после десятичной точки.
    Например: число (5,2), максимальное значение этого поля - 99 999, если значение превышает лимит цифр, лишние цифры будут усечены.
    Например: число (5,2), но введите 575,316 в это поле в строке данных, тогда фактически сохраненное значение в поле будет 575,32.
    Например: число (3,0), введите 575,316, фактически сохраненные данные - 575.

    Все юридические даты с 1 января 4712 г. до н.э. по 31 декабря 4712 г.

    Символьные столбцы переменной длины с максимальной длиной 2 ГБ используются для длинных строк данных, в которых не нужно искать строки. Если вы хотите искать символы, используйте тип varchar2.

    Для двоичных данных переменной длины при определении поля должна быть указана максимальная длина n. Oracle 8i использует этот формат для сохранения небольших графических файлов или отформатированных текстовых файлов, таких как документы Miceosoft Word.
    Raw - это более старый тип данных, который в будущем будет постепенно заменяться типами данных больших объектов, такими как BLOB, CLOB и NCLOB.

    Двоичные данные переменной длины, максимальная длина - 2 ГБ. Oracle 8i использует этот формат для сохранения больших графических файлов или форматированных текстовых файлов, таких как документы Miceosoft Word, и нетекстовых файлов, таких как аудио и видео.
    В одной таблице не может быть одновременно длинного типа и длинного необработанного типа.Длинное необработанное также является более старым типом данных и в будущем будет постепенно заменяться типами данных больших объектов, такими как BLOB, CLOB и NCLOB.

    Три типа больших объектов (LOB) используются для сохранения больших графических файлов или форматированных текстовых файлов, таких как документы Miceosoft Word, и нетекстовых файлов, таких как аудио и видео. Максимальная длина составляет 4 ГБ.
    Существует несколько типов LOB, в зависимости от типа используемых байтов Oracle 8i фактически хранит эти данные внутри базы данных.
    Могут выполняться специальные операции, такие как чтение, сохранение и запись.

    Максимальная длина большого двоичного объектного файла, хранящегося вне базы данных, составляет 4 ГБ.
    Этот тип внешних больших объектов записывает изменения в базе данных, но конкретное хранение данных осуществляется вне базы данных.
    Oracle 8i может читать и запрашивать BFILE, но не может писать.
    Размер определяется операционной системой.

    Я также поместил это в документ, который можно скачать в конце статьи!

    1.2 Синтаксис для создания таблицы

    Create table [schema,] table_name(

    column_name data_type [default express] [constraint]

    [,column_name data_type [default express] [constraint]]

    [,column_name data_type [default express] [constraint]]

    );

    Некоторые из приведенных выше объяснений необходимо понять, [] означает, что это необязательно при создании таблицы. А отсутствие [] означает, что он должен быть записан при создании. !

    Например, [ограничение] добавляет ограничения к текущему столбцу, тогда ограничения можно добавлять или не добавлять!

    Scheme:Укажите имя пользователя, которому принадлежит таблица, или имя пользовательского режима, которому она принадлежит.

    table_name:Как следует из названия, это имя таблицы.

    column_name:Название столбца

    data_type: Тип данных, как написано в 1.1.

    default express:По умолчанию.

    constraint:Ограничение на добавление столбца указывает правило, которому столбец должен удовлетворять.


    Нулевое значение означает непустое значение, то есть это поле не может быть пустым.

    1.3 Просмотр информации таблицы

    После того, как мы создадим таблицу, мы можем просмотреть структуру таблицы с помощью описания (для краткости desc). следующим образом:


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

    Конечно, мы также можем запросить релевантную информацию о таблице, запросив словарь данных, чтобы попробовать user_tables!


    Это просто указывает на то, что эта таблица существует. Что делать, если вы хотите просмотреть структуру таблицы, как и desc? Затем вы можете использовать словарь данных user_tab_columns следующим образом:


    1.4 Укажите режим таблицы

    В приведенном выше синтаксисе для создания таблицы есть поле схемы!

    , это режим указанной таблицы. Он используется для указания имени пользователя, которому он принадлежит, или имени пользовательского режима, которому он принадлежит. Как показано ниже:


    1.4 Укажите журнал повторов

    Если при создании таблицы используется формулировка «Ведение журнала», это означает, что все операции с таблицей будут записываться в журнал повторов.


    Затем мы проверяем user_tables в словаре данных, чтобы убедиться, что это так, как показано ниже:


    Конечно, вы также можете использовать логгирование, что означает, что логирование не требуется!

    1.5 Укажите кеш

    Если пользователь запросил данные, которые использовались только недавно, то эти данные, скорее всего, будут сохранены в буфере. Некоторые люди могут спросить, каковы преимущества буферизации? Фактически, выгода значительно увеличивается. Потому что в случае с буферизацией, если вы хотите прочитать данные в следующий раз, вам не нужно читать их с диска.Разве не удобно брать их прямо из буфера?

    При создании таблицы вы можете использовать ключ кеширования, чтобы изменить этот результат. О, кстати, Oracle использует LRU (Least Recently Userd) для управления буферизацией. Если кэш добавлен в конец таблицы, Oracle не будет выгружать данные, связанные с этой таблицей, при выполнении LRU. Как показано:


    После создания таблицы вам, конечно же, необходимо вести ее обслуживание!

    2.1 Добавление и удаление столбцов

    изменить имя таблицы таблицы добавить имя столбца тип данных


    изменить имя таблицы таблицы имя столбца drop column name

    Вы также можете удалить несколько одновременно, тогда нужно будет использовать имена столбцов ()

    изменить имя столбца таблицы имени таблицы (имя столбца 1, имя столбца 2 . )

    Например: изменить таблицу mybook3 drop column publicdata; просто удалите столбец прямо сейчас.

    2.2 Использовать неиспользованные

    Если из таблицы удаляется большой объем данных, скорость удаления может быть очень низкой из-за необходимости обрабатывать записи каждого столбца. В настоящее время мы можем использовать ключевое слово unused для замены этой операции!

    Что ты имеешь в виду? Фактически, с точки зрения пользователя, нет никакой разницы между этим и удалением, за исключением того, что поля, отмеченные как неиспользуемые, все еще остаются в базе данных, которую можно представить как аннотированные, и пространство фактически не освобождается.

    изменить неиспользуемое имя таблицы таблицы (имя столбца);


    С помощью словаря данных user_unused_col_tabs вы можете увидеть, какие поля в данных отмечены как неиспользуемые.

    Конечно, вы также можете удалить эту отметку, синтаксис следующий:

    изменить имя таблицы таблицы удалить неиспользуемое имя столбца

    2.2 Обновить столбец

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

    ① Изменить имя столбца

    Синтаксис для обновления столбцов:

    изменить имя таблицы таблицы переименовать столбец из старого имени столбца в новое имя столбца


    ② Измените тип данных столбца

    Когда мы изменяем тип данных, я хочу обратить внимание на 2 момента:

    ☆ В случае данных в таблице, при нормальных обстоятельствах нам не нужно изменять длину данных с короткой на длинную, почему? Все очень просто, точность будет потеряна!

    Но вы можете это сделать, но вы должны знать последствия.

    ☆ Если в таблице нет данных, их можно изменить в обратном порядке.

    изменить имя таблицы изменить имя столбца новый тип данных


    То же самое касается изменения точности столбца!

    ③ Измените значение столбца по умолчанию

    изменить имя таблицы изменить имя таблицы (значение по умолчанию для имени столбца)

    2.3 Переименовать таблицу

    изменить имя таблицы переименовать в новую таблицу


    Это очень просто.

    ПРИМЕЧАНИЕ. Переименовать таблицу легко, но не рекомендуется. Потому что последствия этого очень велики. Хотя Oracle может автоматически обновлять внешние ключи, ограничения и связи таблиц в словаре данных, он не может обновлять сохраненные коды в базе данных. Поэтому использовать его нужно с осторожностью.

    2.4 Удалить определение таблицы

    Если пользователю необходимо удалить определение созданной таблицы, можно использовать следующий синтаксис:

    удалить имя таблицы таблицы [каскадные ограничения | очистка]

    Что нам нужно знать, так это разницу между удалением определений таблиц и удалением данных таблицы.

    Удалите определение таблицы, структура и данные удаленной таблицы не существуют.

    Удалите данные таблицы, просто удалите данные, но структура останется.

    При использовании оператора drop table вы можете использовать следующие два параметра:

    ★cascade constraints

    Я создал 2 таблицы:

    Таблица классов: myclass


    Стол для студентов:


    Хорошо, после того, как у нас есть вышеуказанная среда, мы случайным образом вставляем некоторые данные в две таблицы. Затем я удаляю таблицу myclass, результат будет следующим:


    Теперь мы добавляем каскадные ограничения, и результат будет следующим:


    ★purge

    Указывает, что пространство ресурсов, занятое таблицей, освобождается сразу после удаления определения таблицы.

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