Мы научились создавать таблицы в базе данных Oracle на предыдущем шаге. Таблицы и колонки таблиц, их названия, расположение, последовательность колонок, типы данных колонок называются структурой таблицы.
Структуру таблицы можно менять, то есть добавлять новые колонки в таблицу, удалять колонки из таблицы, менять типы данных у заданной колонки. Также, если таблица нам больше не нужна или просто надоела, существует возможность такую таблицу удалить.
Теория и практика
Существует несколько команд для изменения структуры таблицы, добавления, удаления или изменения типа данных колонки таблицы.
Все эти команды объединяет то, что они начинаются с ключевой команды ALTER TABLE
.
Добавление колонки
Добавляем новую колонку к нашей таблице.
Синтаксис:
ALTER TABLE TABLE_NAME ADD (column_NAME column_type);
TABLE_NAME
– наименование таблицы.
Column_NAME
– наименование колонки.
Column_type
– тип данных колонки (VARCHAR (n)
или NUMBER
или DATE
).
Примеры:
Пусть у нас есть таблица GOODS, необходимо добавить колонку itemprice
типа NUMBER
, цена изделия.
ALTER TABLE GOODS ADD (itemprice NUMBER);
Пусть у нас есть таблица MANS, необходимо добавить колонку DATEreg
типа DATE
, дата регистрации, и колонку patronymic
– отчество VARCHAR2 (50)
.
ALTER TABLE MANS ADD (DATEreg DATE);
ALTER TABLE MANS ADD (patronymic VARCHAR2 (50));
Удаление колонки
Также мы можем удалить колонку из заданной таблицы с помощью специальной SQL-команды DROP COLUMN
.
Синтаксис:
ALTER TABLE TABLE_NAME DROP COLUMN column_NAME;
Примеры:
Пусть у нас есть таблица GOODS, необходимо удалить колонку COLOR
.
ALTER TABLE GOODS DROP COLUMN COLOR;
Пусть у нас есть таблица MANS, необходимо удалить колонку YEAROLD
.
ALTER TABLE MANS DROP COLUMN YEAROLD;
Меняем тип данных для колонки таблицы.
Синтаксис изменения типа колонки:
ALTER TABLE TABLE_NAME MODIFY (column_NAME DATA_type);
Сolumn_NAME
– наименование колонки.
Data_type
– тип данных колонки (VARCHAR (n)
или NUMBER
или DATE
).
Примеры:
– заменить в таблице MANS тип поля NAME
на VARCHAR2 (90)
;
ALTER TABLE MANS MODIFY (NAME VARCHAR2 (90));
– заменить в таблице GOODS тип поля INSERT_DATE на DATE;
ALTER TABLE GOODS MODIFY (INSERT_DATE DATE);
Удаление таблицы из базы данных Oracle
Синтаксис команды SQL для удаления таблицы:
DROP TABLE TABLE_NAME;
Здесь TABLE_NAME
– наименование таблицы.
Примеры:
– удалить таблицу DOC
;
DROP TABLE doc;
– удалить таблицу ITEMS
;
DROP TABLE ITEMS;
– удалить таблицу BILLING_PERIOD со связанными данными в таблице PERIODS.
DROP TABLE BILLING_PERIODS CASCADE;
Важные замечания
- При выполнении действий по изменению структуры таблицы следует быть особенно осторожным, следует тщательно взвешивать свои действия: восстановление таблицы в прежнем виде может быть затруднительно или невозможно.
- Если вы используете команды изменения типов данных и встречаетесь с ошибкой
ORA-01439
, модифицируемый столбец при смене типа данных должен быть пуст. Сохраните данные в столбце и используйте специальные преобразования, о которых будет рассказано в следующих шагах. - В некоторых случаях удаление таблицы или колонки таблицы будет запрещено, поскольку могут быть еще таблицы со связанными данными. Требуется сначала удалить данные в связанных таблицах, а уже затем удалять таблицу либо колонку. Или же воспользоваться специальной командой DROP CASCADE.
Возможные вопросы
Можно ли переименовать таблицу?
Да, вполне, и для этого есть две команды:
ALTER TABLE TABLE_NAME RENAME TO new_TABLE_NAME;
или же
RENAME <old_TABLE> TO <new_TABLE>
Универсальный же синтаксис предполагает использование ALTER TABLE
.
Примеры:
Переименуем таблицу с названием STAFF в EMP:
ALTER TABLE STAFF RENAME TO emp;
Переименуем таблицу с названием TRADES в TRADE:
ALTER TABLE trades RENAME TO trade;
Можно ли переименовать столбец в таблице?
Да, синтаксис команды:
ALTER TABLE TABLE_NAME RENAME COLUMN old_column_NAME to new_column_NAME;
Пример:
Переименовать колонку с наименованием NAME
в таблице STAFF в колонку LASTNAME
:
ALTER TABLE STAFF RENAME COLUMN NAME TO LASTNAME;