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";

Посилання[ред. | ред. код]