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 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 AUTHORIZATION#

Изменяет владельца таблицы.

SET PROPERTIES#

Изменяет свойства таблицы. Существующие свойства таблицы, которые не указаны в команде, не будут удалены.

Свойство может быть установлено в DEFAULT, что возвращает его значение к значению по умолчанию.

Чтобы получить список доступных свойств таблицы для всех каталогов, выполните следующий запрос:

SELECT * FROM system.metadata.table_properties;

Данный запрос может вернуть пустой результат, если ни один из сконфигурированных каталогов не имеет доступных свойств.

EXECUTE#

Изменяет таблицу в соответствии с указанной командой и параметрами. ALTER TABLE EXECUTE поддерживает разные команды для каждого коннектора.

Вы можете использовать оператор => для передачи именованных значений параметров.

Примеры#

Переименовывает таблицу 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;

Изменяет владельца таблицы 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 мегабайт (согласно поддержке Hive-коннектора):

ALTER TABLE hive.schema.test_table EXECUTE optimize(file_size_threshold => '10MB');

См. также#

CREATE TABLE, CREATE TABLE AS, DROP TABLE, SHOW TABLES, SHOW CREATE TABLE