Перейти к содержимому

Как добавить столбец в таблицу sql oracle

  • автор:

Добавление столбца в oracle

@0xdb, да я сам был таким лет 10-15 назад. 🙂 Позже когда повозился с dbms_redefinition на больших таблицах исключительно по причине приступа нездорового перфектионизма понял что оно того не стоит. 😉

6 окт 2018 в 14:13

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

в Oracle 12c: это пример

CREATE TABLE CUSTOMER_DATA ( CD_ID INTEGER, CUST_NUMBER_ID INTEGER, FIRST_NAME NVARCHAR2(30), LAST_NAME NVARCHAR2(30), FLAG NVARCHAR2(10), CUST_ACTIVE INTEGER ); ALTER TABLE CUSTOMER_DATA ADD (FULL_NAME VARCHAR (50) NULL); ALTER TABLE CUSTOMER_DATA MODIFY (FLAG INVISIBLE, CUST_ACTIVE INVISIBLE); ALTER TABLE CUSTOMER_DATA MODIFY (FLAG VISIBLE, CUST_ACTIVE VISIBLE); 

Отслеживать
ответ дан 19 сен 2018 в 12:18
1,887 8 8 серебряных знаков 23 23 бронзовых знака

Порядок столбцов в таблице в нормальном случае не должен играть ни какой роли. То есть, если стоит такая задача, то ранее были допущены ошибки в дизайне БД или использующих её приложений.
Если бы порядок столбцов был бы важен и нужен, то оператор AFTER уже скорее всего был бы реализован в стандарте SQL.

Если всё-таки в редких случаях порядок столбцов желателен, например, для генераторов кода, то самое простое использовать представление вместо физической таблицы.
Изменение порядка столбцов в представлении не затрагивает структуры физической таблицы (indexes, constraints, triggers и пр.), то есть по-сути пройдёт «безболезнено»:

create table itemstab (id number, name varchar2 (32), changed timestamp); -- возникла необходимость добавить столбец alter table itemstab add (memo varchar2 (64)); create or replace view items as select id, name, memo, changed from itemstab; insert into items values (1, 'item 1', 'memo 1', systimestamp); select rowid, i.* from items i; ROWID ID NAME MEMO CHANGED ------------------ ---------- ---------- ---------- ----------------------------- AAAS+TAAQAAAFrHAAA 1 item 1 memo 1 2018-10-06 12:59:57,373961000 

И только в крайнем случае, можно воспользоваться многочисленными решениями, например, в этой ветке на enSO. Самый, по-моему мнению, правильный путь там отсутствует — выгрузить данные, пересоздать таблицу с «нуля», залить сохранённые данные.

В 12c появилась возможность изменить порядок столбцов изменением видимости уже существующих столбцов. Но основная цель введения невидимых столбцов — упростить миграцию старых, зависимых от порядка столбцов, приложений. Поэтому, этот способ добавить столбец в середину, иначе как «злоупотребленим» назвать нельзя — «от чего пытались уйти, туда и пришли». Подробнее в блоге Тома Кайта.

Добавление столбцов в набор данных

Добавляя столбцы, можно разработать собственные наборы данных. Например, можно создать новый столбец, объединяющий столбцы ADDRESS_LINE_1, ADDRESS_LINE_2 и ADDRESS_LINE_3.

  1. На главной странице выберите набор данных и в меню Действия выберите Открыть . На диаграмме данных или диаграмме объединения правой кнопкой мыши нажмите имя источника данных и нажмите Открыть , чтобы отобразить редактор преобразований.
  2. В редакторе преобразований нажмите Добавить этап подготовки .
  3. В разделе Создание запросов введите имя столбца и в поле «Выражение» определите выражение для добавления значений в столбец. Например, чтобы объединить значения в столбцах Категория и Подкатегория , можно указать выражение: CONCAT(Category, Sub Category) .

Используйте средство выбора функций f(x) для построения выражения с использованием операторов, математических, строковых функций и функций преобразования.

Oracle Analytics добавляет шаг на панель Сценарий подготовки.

Если вы работаете с одним набором данных таблицы или набором данных на основе файлов, нажмите Применить сценарий .

ALTER TABLE ОПЕРАТОР

В этом учебном пособии вы узнаете, как использовать в Oracle/PLSQL оператор ALTER TABLE, чтобы добавить столбец, изменить столбец, удалить столбец, переименовать столбец или переименовать таблицу (с синтаксисом, примерами и практическими упражнениями).

Описание

Оператор Oracle/PLSQL ALTER TABLE используется для добавления, изменения или удаления столбца в таблице. Оператор Oracle/PLSQL ALTER TABLE также используется для переименования таблиц.

Добавить столбец в таблицу

Синтаксис

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

ALTER TABLE table_name
ADD column_name column-definition;

Пример

Рассмотрим на примере, как добавить столбец в таблицу Oracle с помощью оператора ALTER TABLE.
Например:

Изменение порядка столбцов в таблице Oracle

Как правило это не является проблемой. С помощью SQL можно извлечь столбцы в любом порядке.

Если возникла потребность добавить столбец в таблицу в определенном порядке или поменять местами столбцы, то есть несколько способов:

1. Через создание промежуточной таблицы с переименование. После пересоздать все индексы и констрейны.

3. Через пакет DBMS_REDEFINITION

Нужны следующие привилегии:
# execute access on the dbms_redefinition package
# create any table # alter any table
# drop any table
# lock any table
# select any table

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *