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.
|