Alter (SQL)
ALTER - оператор DDL мови SQL, що використовується для зміни властивостей об'єктів баз даних. Типи об'єктів, які можуть бути змінені, залежать від використовуваної СКБД.
ALTER TABLE
ред.Оператор ALTER TABLE використовується для додавання, зміни чи вилучення стовпчиків або обмежень у наявній таблиці. Оператор не працюватиме, коли наявні в таблиці записи порушують обмеження первинного ключа чи унікальності, а також якщо стовпчик, який намагаються вилучити, входить до обмежень UNIQUE
, PRIMARY KEY
, FOREIGN KEY
чи CHECK
, або застосовується для обчислення іншого стовпчика.
Повноваження
ред.У користувача мають бути повноваження на внесення відповідних змін. Потрібні повноваження залежать від конкретної СКБД та від того, які саме зміни робляться.
Oracle
ред.Користувач має бути власником (англ. owner) таблиці, яку він намагається змінити, або ж користувачеві має бути надано повноваження на зміни в цій таблиці (ALTER
) чи повноваження на зміну будь-якої таблиці на рівні всієї системи (ALTER ANY TABLE
).
- Додаткові передумови для операцій з розділами
- Якщо користувач не є власником таблиці, то для використання функцій
drop_table_partition
іtruncate_table_partition
у нього мають бути повноваженняDROP ANY TABLE
, а для використання функційadd_table_partition
,modify_table_partition
,move_table_partition
іsplit_table_partition
у нього має бути квота в табличному просторі. - Додаткові передумови для обмежень і тригерів
- Для увімкнення режиму батьківського контролю унікального або первинного ключа у користувач мають бути повноваження на створення індексів у таблиці. Ці повноваження необхідні, оскільки Oracle Database створює індекси в межах унікального або первинного ключа у схемі, що містить дану таблицю. Для увімкнення чи вимкнення тригерів користувач має бути їх власником або ж у нього мають бути системні повноваження
ALTER ANY TRIGGER
. - Додаткові передумови при використанні типів об'єктів
- Для використання типу об'єкта у визначенні стовпчика при зміні таблиці власником такого об'єкта має бути власник змінюваної таблиці або ж у користувача мають бути системні повноваження
EXECUTE ANY TYPE
чи повноваженняEXECUTE
для такого об'єкта. - Додаткові передумови для операцій архівування ретроспективних даних
- Для використання функції
flashback_archive_clause
з метою ввімкнення відстеження історії для таблиці користувач повинен мати повноваженняFLASHBACK ARCHIVE
в архіві даних ретроспективного аналізу, який міститиме історичні дані. Для вимкнення відстеження історії для таблиці у користувача мають бути системні повноваженняFLASHBACK ARCHIVE ADMINSTER
.
Синтаксис
ред.Загальний синтаксис оператора ALTER TABLE
має вигляд:
ALTER TABLE "table_name"
[Alter specification];
- Додавання стовпчика
ALTER TABLE "table_name" ADD "column_name" "data_type";
- Зміна типу даних стовпчика
- MySQL і Oracle
ALTER TABLE "table_name" MODIFY "column_name" "new_data_type";
- SQL Server
ALTER TABLE "table_name" ALTER COLUMN "column_name" "new_data_type";
- Перейменування стовпчика
- MySQL
ALTER TABLE "table_name" CHANGE "column_1" "column_2" "data_type";
- Oracle
ALTER TABLE "table_name" RENAME COLUMN "column_1" TO "column_2";
- Видалення стовпчика
- MySQL
ALTER TABLE "table_name" DROP "column_name";
- Oracle
ALTER TABLE "table_name" DROP COLUMN "column_name";
- Додавання індексу
ALTER TABLE "table_name" ADD INDEX "index_name" (column_name);
- Видалення індексу
ALTER TABLE "table_name" DROP INDEX "index_name";
- Додавання обмеження
ALTER TABLE "table_name" ADD "CONSTRAINT_NAME" "CONSTRAINT_TYPE" "CONSTRAINT_CONDITION";
- Видалення обмеження
ALTER TABLE "table_name" DROP [CONSTRAINT | INDEX] "CONSTRAINT_NAME";
Посилання
ред.- Alter Table. Архів оригіналу за 16 травня 2017. Процитовано 22 травня 2017.
- Alter Table. Oracle Corporation. Архів оригіналу за 25 травня 2017. Процитовано 22 травня 2017.