Создание таблицы в оракуле
Обновлено: 21.11.2024
В базе данных Oracle могут быть десятки или даже сотни таблиц, каждая из которых содержит сотни или тысячи строк данных. Если вы хотите сохранить дополнительные пользовательские данные в базе данных Oracle, часто лучше создать новую таблицу для добавляемых данных. Вы также можете определить столбцы данных, которые будут храниться в новой таблице.
Создание базовой таблицы
Для создания таблицы необходимо использовать программный код Oracle SQL. При определении новой таблицы вы должны указать имя таблицы, а также определить по крайней мере один столбец, который будет включен в таблицу. Пример оператора SQL для создания таблицы показан ниже.
Строка CREATE TABLE указывает базе данных создать новую таблицу с именем "mytable". Таблица определена как имеющая два столбца. После строки CREATE TABLE определяются столбцы в таблице, а код определения столбца заключен в круглые скобки.
Первый определенный столбец с именем "column1" определен как столбец типа VARCHAR(30), что означает, что он может хранить буквенно-цифровые данные до 30 символов, которые будут храниться в этом столбце для каждой строки данных. Второй определенный столбец с именем «column2» определяется как столбец типа DATE, что означает, что он может хранить значения даты.
Типы данных для столбцов
Для каждого столбца в таблице определен тип данных. Наиболее распространенные типы данных, используемые в таблице базы данных, включают следующие.
-
- позволяет сохранять значения TRUE или FALSE
- DATE — позволяет сохранять значения даты.
- INT — позволяет хранить целые значения, без десятичных знаков.
- ВРЕМЯ – позволяет сохранять значения времени (часы, минуты, секунды) – позволяет сохранять значения даты и времени.
- VARCHAR(n) — позволяет хранить буквенно-цифровые значения с максимальной длиной символа, определенной как n
Определение столбца как NOT NULL
Столбец также может быть определен как NOT NULL, что означает, что он не может быть пустым и всегда должен иметь значение. Ниже приведен пример создания таблицы со столбцом, определенным как NOT NULL.
Приведенный выше пример определяет "column3" как NOT NULL, требуя ввода в него значения для каждой строки данных.
Первичный ключевой столбец в таблице
Таблица в базе данных Oracle может содержать множество столбцов данных. Каждая таблица обычно имеет один столбец, определенный как ПЕРВИЧНЫЙ КЛЮЧ, в котором хранятся уникальные значения, идентифицирующие каждую строку данных. Первичный ключ также позволяет одной таблице связать другую таблицу, так что данные в одной таблице могут совпадать с данными в другой таблице.
Первичный ключ часто представляет собой числовое значение, но может быть и буквенно-цифровым. Приведенный ниже пример инструкции SQL создает таблицу со столбцом, назначенным первичным ключом.
Таблица, созданная с помощью приведенного выше примера инструкции SQL, включает столбец с именем «pk_ID», определенный как PRIMARY KEY и как целочисленный тип данных, что означает, что он может содержать только числовые значения. По умолчанию, будучи столбцом первичного ключа, он также не может быть пустым или нулевым.
Чтобы создать новую таблицу в вашей схеме, вы должны иметь системную привилегию CREATE TABLE. Чтобы создать таблицу в схеме другого пользователя, вы должны иметь системную привилегию CREATE ANY TABLE. Кроме того, владелец таблицы должен иметь квоту на табличное пространство, содержащее таблицу, или системную привилегию UNLIMITED TABLESPACE.
Создавайте таблицы с помощью оператора SQL CREATE TABLE .
Этот раздел содержит следующие темы:
Справочник по языку Oracle Database SQL для точного синтаксиса оператора CREATE TABLE и других операторов SQL, обсуждаемых в этой главе
Пример: создание таблицы
Выполняя следующий оператор, вы создаете таблицу с именем admin_emp в схеме hr и сохраняете ее в табличном пространстве admin_tbs:
Об этом примере обратите внимание на следующее:
Ограничения целостности определены для нескольких столбцов таблицы.
Предложение STORAGE указывает размер первого экстента. Подробнее об этом пункте см. в Справочнике по языку Oracle Database SQL.
Шифрование определяется для одного столбца ( ssn ) с помощью функции прозрачного шифрования данных Oracle Database. Таким образом, Oracle Wallet должен быть открыт для выполнения этого оператора CREATE TABLE.
Столбец фотографий имеет тип данных BLOB , который входит в набор типов данных, называемых большими объектами (LOB). Большие объекты используются для хранения частично структурированных данных (таких как дерево XML) и неструктурированных данных (таких как поток битов в цветном изображении).
Один столбец определяется как виртуальный столбец ( hrly_rate ). В этом столбце почасовая ставка работника рассчитывается как годовая зарплата, деленная на 2080. См. Справочник по языку Oracle Database SQL для обсуждения правил для виртуальных столбцов.
Комментарий COMMENT используется для хранения комментария к таблице. Вы запрашиваете представления словаря данных *_TAB_COMMENTS, чтобы получить такие комментарии. Дополнительную информацию см. в Справочнике по языку Oracle Database SQL.
Справочник по языку Oracle Database SQL для описания типов данных, которые можно указать для столбцов таблицы
Руководство администратора Oracle Database Advanced Security для получения информации о прозрачном шифровании данных и Oracle Wallet
Создание временной таблицы
Временные таблицы полезны в приложениях, в которых результирующий набор должен буферизоваться (временно сохраняться), возможно, потому, что он создается путем выполнения нескольких операций DML. Например, рассмотрим следующее:
Интернет-приложение для бронирования авиабилетов позволяет клиенту создавать несколько дополнительных маршрутов. Каждый маршрут представлен строкой во временной таблице. Приложение обновляет строки, чтобы отразить изменения в маршрутах. Когда клиент решает, какой маршрут он хочет использовать, приложение перемещает строку для этого маршрута в постоянную таблицу.
Во время сеанса данные маршрута являются конфиденциальными. В конце сеанса дополнительные маршруты удаляются.
Определение временной таблицы видно всем сеансам, но данные во временной таблице видны только сеансу, который вставляет данные в таблицу.
Используйте оператор CREATE GLOBAL TEMPORARY TABLE, чтобы создать временную таблицу. Предложение ON COMMIT указывает, являются ли данные в таблице специфичными для транзакции (по умолчанию) или для сеанса, последствия которых следующие:
Настройка ON COMMIT | Последствия |
---|---|
УДАЛИТЬ СТРОКИ | Это создает временную таблицу, специфичную для транзакции. Сеанс привязывается к временной таблице с транзакциями, которые сначала вставляются в таблицу. Привязка исчезает в конце транзакции. База данных усекает таблицу (удаляет все строки) после каждой фиксации. |
СОХРАНИТЬ СТРОКИ | Это создает временную таблицу, специфичную для сеанса. Сеанс привязывается к временной таблице с первой вставкой в таблицу в сеансе. Эта привязка удаляется в конце сеанса или путем выдачи TRUNCATE таблицы в сеансе. База данных усекает таблицу, когда вы завершаете сеанс. |
Этот оператор создает временную таблицу для конкретной транзакции:
Индексы можно создавать для временных таблиц. Они также являются временными, и данные в индексе имеют ту же область сеанса или транзакции, что и данные в базовой таблице.
По умолчанию строки во временной таблице хранятся во временном табличном пространстве по умолчанию пользователя, который ее создает. Однако вы можете назначить временную таблицу другому табличному пространству после создания временной таблицы, используя предложение TABLESPACE команды CREATE GLOBAL TEMPORARY TABLE. Вы можете использовать эту функцию для экономии места, используемого временными таблицами. Например, если вам нужно выполнить много небольших операций с временными таблицами, а временное табличное пространство по умолчанию сконфигурировано для операций сортировки и, следовательно, использует большой размер экстента, эти небольшие операции займут много ненужного дискового пространства. В этом случае лучше выделить второе временное табличное пространство с меньшим размером экстента.
Следующие два оператора создают временное табличное пространство с размером экстента 64 КБ, а затем новую временную таблицу в этом табличном пространстве.
В отличие от постоянных таблиц временные таблицы и их индексы не выделяют сегмент автоматически при создании. Вместо этого сегменты выделяются при выполнении первой команды INSERT (или CREATE TABLE AS SELECT). Это означает, что если SELECT , UPDATE или DELETE выполняются до первого INSERT , таблица выглядит пустой.
Операции DDL (кроме TRUNCATE ) разрешены для существующей временной таблицы только в том случае, если ни один сеанс в настоящее время не привязан к этой временной таблице.
Если вы откатываете транзакцию, введенные вами данные теряются, хотя определение таблицы сохраняется.
Временная таблица для конкретной транзакции допускает только одну транзакцию за раз. Если в одной области транзакции есть несколько автономных транзакций, каждая автономная транзакция может использовать таблицу только после фиксации предыдущей.
Поскольку данные во временной таблице по определению являются временными, резервное копирование и восстановление данных временной таблицы недоступны в случае сбоя системы. Чтобы подготовиться к такому сбою, следует разработать альтернативные методы сохранения данных временной таблицы.
Распараллеливание создания таблиц
Когда вы указываете предложение AS SELECT для создания таблицы и заполнения ее данными из другой таблицы, вы можете использовать параллельное выполнение. СОЗДАТЬ ТАБЛИЦУ.Оператор AS SELECT состоит из двух частей: части CREATE (DDL) и части SELECT (запрос). Oracle Database может распараллелить обе части оператора. Часть CREATE распараллеливается, если выполняется одно из следующих условий:
Предложение PARALLEL включено в CREATE TABLE. Оператор AS SELECT
Указана инструкция ALTER SESSION FORCE PARALLEL DDL
Часть запроса распараллеливается, если выполняются все следующие условия:
Запрос включает спецификацию параллельной подсказки ( PARALLEL или PARALLEL_INDEX ), или часть CREATE включает предложение PARALLEL, или объекты схемы, на которые ссылается запрос, имеют связанное с ними объявление PARALLEL.
По крайней мере для одной из таблиц, указанных в запросе, требуется либо полное сканирование таблицы, либо сканирование диапазона индекса, охватывающего несколько разделов.
Если вы распараллеливаете создание таблицы, с этой таблицей связано параллельное объявление (предложение PARALLEL). Любые последующие DML или запросы к таблице, для которых возможно распараллеливание, будут пытаться использовать параллельное выполнение.
Следующий простой оператор распараллеливает создание таблицы и сохраняет результат в сжатом формате, используя сжатие таблицы:
В этом случае предложение PARALLEL указывает базе данных выбрать оптимальное количество серверов параллельного выполнения при создании таблицы.
Руководство по Oracle Database Data Warehousing для подробного обсуждения использования параллельного выполнения
Вывод: в этом руководстве вы узнаете, как использовать оператор Oracle CREATE TABLE для создания новой таблицы в базе данных Oracle.
Введение в оператор Oracle CREATE TABLE
Чтобы создать новую таблицу в базе данных Oracle, используйте оператор CREATE TABLE. Ниже показан основной синтаксис инструкции CREATE TABLE:
- Сначала укажите имя таблицы и имя схемы, к которой принадлежит новая таблица, в предложении CREATE TABLE.
- Во-вторых, перечислите все столбцы таблицы в скобках. Если в таблице несколько столбцов, их необходимо разделить запятыми (,). Определение столбца включает имя столбца, за которым следует его тип данных, например NUMBER , VARCHAR2 , и ограничение столбца, такое как NOT NULL , первичный ключ, проверка.
- В-третьих, добавьте ограничения таблицы, если применимо, например первичный ключ, внешний ключ, проверка.
Обратите внимание, что у вас должна быть системная привилегия CREATE TABLE для создания новой таблицы в вашей схеме и системная привилегия CREATE ANY TABLE для создания новой таблицы в схеме другого пользователя. Кроме того, владелец новой таблицы должен иметь квоту на табличное пространство, содержащее новую таблицу, или системную привилегию UNLIMITED TABLESPACE.
Пример инструкции Oracle CREATE TABLE
В следующем примере показано, как создать новую таблицу с именем person в схеме ot:
В этом примере таблица person содержит три столбца: person_id , first_name и last_name .
Person_id — это столбец идентификаторов, определяющий уникальные строки в таблице. Тип данных столбца person_id — NUMBER. Предложение GENERATED BY DEFAULT AS IDENTITY указывает Oracle генерировать новое целое число для столбца всякий раз, когда в таблицу вставляется новая строка.
Столбец first_name имеет тип данных VARCHAR2 с максимальной длиной 50. Это означает, что вы не можете вставить имя, длина которого больше 50, в столбец first_name. Кроме того, ограничение столбца NOT NULL не позволяет столбцу first_name иметь значения NULL.
Столбец last_name имеет те же характеристики, что и столбец first_name.
Предложение PRIMARY KEY указывает столбец person_id в качестве столбца первичного ключа, который используется для идентификации уникальной строки в таблице person.
В этом руководстве вы узнали, как использовать оператор Oracle CREATE TABLE для создания новой таблицы.
В этом учебном пособии Oracle объясняется, как использовать инструкцию Oracle CREATE TABLE с синтаксисом, примерами и практическими упражнениями.
Описание
Инструкция Oracle CREATE TABLE позволяет создать и определить таблицу.
Синтаксис
Синтаксис инструкции CREATE TABLE в Oracle/PLSQL:
Параметры или аргументы
table_name Имя таблицы, которую вы хотите создать. столбец1, столбец2, . column_n Столбцы, которые вы хотите создать в таблице. Каждый столбец должен иметь тип данных. Столбец должен быть определен как «нулевой» или «не нулевой», и если это значение оставить пустым, база данных принимает значение «нуль» по умолчанию.
Пример
Давайте рассмотрим пример Oracle CREATE TABLE.
В этом примере Oracle CREATE TABLE создается таблица с именем customers, которая имеет 3 столбца.
- Первый столбец называется customer_id и создается как числовой тип данных (максимум 10 цифр в длину) и не может содержать пустых значений.
- Второй столбец называется customer_name и относится к типу данных varchar2 (длина не более 50 символов) и также не может содержать пустых значений.
- Третий столбец называется city и относится к типу данных varchar2, но может содержать нулевые значения.
Теперь единственная проблема с этой инструкцией Oracle CREATE TABLE заключается в том, что вы не определили первичный ключ для таблицы. Мы могли бы изменить этот оператор CREATE TABLE и определить customer_id в качестве первичного ключа следующим образом:
Создайте таблицу Oracle с именем suppliers, в которой хранится информация об идентификаторе, имени и адресе поставщика.
Инструкция Oracle CREATE TABLE для таблицы suppliers выглядит следующим образом:
Создайте таблицу Oracle с именем customers, в которой хранится информация об идентификаторе, имени и адресе клиента.
Но на этот раз идентификатор клиента должен быть первичным ключом для таблицы.
Инструкция Oracle CREATE TABLE для таблицы customers выглядит следующим образом:
На основе приведенной ниже таблицы departments создайте таблицу Oracle с именем employees, в которой будет храниться номер сотрудника, имя сотрудника, отдел и сведения о зарплате. Первичным ключом для таблицы employees должен быть номер сотрудника. Создайте внешний ключ в таблице employees, который ссылается на таблицу departments на основе поляdepartment_id.
Читайте также: