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