ALTER TABLE#
Синтаксис#
ALTER TABLE [ IF EXISTS ] name RENAME TO new_name
ALTER TABLE [ IF EXISTS ] name ADD COLUMN [ IF NOT EXISTS ] column_name data_type
[ NOT NULL ] [ COMMENT comment ]
[ WITH ( property_name = expression [, ...] ) ]
ALTER TABLE [ IF EXISTS ] name DROP COLUMN [ IF EXISTS ] column_name
ALTER TABLE [ IF EXISTS ] name RENAME COLUMN [ IF EXISTS ] old_name TO new_name
ALTER TABLE [ IF EXISTS ] name ALTER COLUMN column_name SET DATA TYPE new_type
ALTER TABLE [ IF EXISTS ] name ALTER COLUMN column_name DROP NOT NULL
ALTER TABLE name SET AUTHORIZATION ( user | USER user | ROLE role )
ALTER TABLE name SET PROPERTIES property_name = expression [, ...]
ALTER TABLE name EXECUTE command [ ( parameter => expression [, ... ] ) ]
[ WHERE expression ]
Описание#
Изменяет определение существующей таблицы.
Необязательное выражение IF EXISTS позволяет завершить выполнение
команды без ошибки, если таблица не существуют.
Поддержка тех или команд ALTER TABLE зависит от конкретного
коннектора.
RENAME TO#
Переименовывает таблицу.
ADD COLUMN#
Добавляет колонку в таблицу.
Необязательное выражение IF NOT EXISTS позволяет завершить выполнение
команды без ошибки, если колонка с таким именем уже существует.
Существующая колонка при этом не будет пересоздана.
DROP COLUMN#
Удаляет колонку таблицы.
Необязательное выражение IF EXISTS позволяет завершить выполнение
команды без ошибки, если колонка с таким именем не существует.
RENAME COLUMN#
Переименовывает колонку таблицы.
Необязательное выражение IF EXISTS позволяет завершить выполнение
команды без ошибки, если колонка с таким именем не существует.
ALTER COLUMN … SET DATA TYPE#
Изменяет тип данных колонки.
ALTER COLUMN … DROP NOT NULL#
Удаляет NOT NULL constraint колонки.
SET PROPERTIES#
Изменяет свойства таблицы. Существующие свойства таблицы, которые не указаны в команде, не будут удалены.
Свойство может быть установлено в DEFAULT, что возвращает его значение
к значению по умолчанию.
Чтобы получить список доступных свойств таблицы для всех каталогов, выполните следующий запрос:
SELECT * FROM system.metadata.table_properties;
Данный запрос может вернуть пустой результат, если ни один из сконфигурированных каталогов не имеет доступных свойств.
EXECUTE#
Изменяет таблицу в соответствии с указанной командой и параметрами. ALTER TABLE EXECUTE поддерживает разные команды для каждого коннектора.
Вы можете использовать оператор => для передачи именованных значений параметров. Например:
ALTER TABLE hive.schema.test_table EXECUTE optimize(file_size_threshold => '128MB')
Примеры#
Переименовывает таблицу users в people:
ALTER TABLE users RENAME TO people;
Переименовывает таблицу users в people, если таблица users
существует:
ALTER TABLE IF EXISTS users RENAME TO people;
Добавляет столбец zip в таблицу users:
ALTER TABLE users ADD COLUMN zip varchar;
Добавляет столбец zip в таблицу users, если таблица существует, а
столбец не существует:
ALTER TABLE IF EXISTS users ADD COLUMN IF NOT EXISTS zip varchar;
Удаляет столбец zip из таблицы users:
ALTER TABLE users DROP COLUMN zip;
Удаляет столбец zip из таблицы users, если таблица и столбец
существуют:
ALTER TABLE IF EXISTS users DROP COLUMN IF EXISTS zip;
Переименовывает столбец id в user_id в таблице users:
ALTER TABLE users RENAME COLUMN id TO user_id;
Переименовывает столбец id в user_id в таблице users, если таблица
и столбец существуют:
ALTER TABLE IF EXISTS users RENAME column IF EXISTS id to user_id;
Изменяет тип столбца id на bigint в таблице users:
ALTER TABLE users ALTER COLUMN id SET DATA TYPE bigint;
Удаляет NOT NULL constraint колонки id в таблице users:
ALTER TABLE users ALTER COLUMN id DROP NOT NULL;
Изменяет владельца таблицы people на пользователя alice:
ALTER TABLE people SET AUTHORIZATION alice;
Разрешает пользователям с ролью public удалять и изменять таблицу people:
ALTER TABLE people SET AUTHORIZATION ROLE PUBLIC;
Устанавливает свойство x = y в таблице people:
ALTER TABLE people SET PROPERTIES x = 'y';
Устанавливает несколько свойств (foo = 123 и foo bar = 456) в таблице people:
ALTER TABLE people SET PROPERTIES foo = 123, "foo bar" = 456;
Устанавливает значение по умолчанию для свойства x в таблице people:
ALTER TABLE people SET PROPERTIES x = DEFAULT;
Объединяет файлы размером менее 10 мегабайт в таблице people с помощью процедуры optimize
(коннекторы Hive, Delta Lake и Iceberg):
ALTER TABLE people EXECUTE optimize(file_size_threshold => '10MB');
См. также#
CREATE TABLE, CREATE TABLE AS, DROP TABLE, SHOW TABLES, SHOW CREATE TABLE