- Удаление столбцов из таблицы
- Перед началом
- Ограничения
- безопасность
- Permissions
- Использование среды SQL Server Management Studio
- Удаление столбцов с помощью обозревателя объектов
- Удаление столбцов с использованием конструктора таблиц
- Использование Transact-SQL
- Удаление столбцов
- Манипуляции со столбцами
- ADD COLUMN
- DROP COLUMN
- RENAME COLUMN
- CLEAR COLUMN
- COMMENT COLUMN
- MODIFY COLUMN
- MODIFY COLUMN REMOVE
- MATERIALIZE COLUMN
- Ограничения запроса ALTER
- ALTER VIEW
- Название
- Синтаксис
- Описание
- Параметры
- Замечания
- Примеры
- Совместимость
- Alter view удаление колонки
- Синтаксис
- Описание
- Параметры
- Замечания
- Примеры
- Совместимость
Удаление столбцов из таблицы
Применимо к: SQL Server 2016 (13.x); и более поздние версии База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics Параллельное хранилище данных
В этом разделе приведены инструкции по удалению столбцов таблиц в SQL Server в среде SQL Server Management Studio или с помощью Transact-SQL.
При удалении столбца из таблицы удаляются сам столбец и все содержащиеся в нем данные.
В этом разделе
Перед началом работы
Удаление столбца из таблицы с помощью:
Перед началом
Ограничения
Нельзя удалить столбец, имеющий ограничение CHECK. В первую очередь необходимо удалить ограничение.
Удалить столбец, имеющий ограничения PRIMARY KEY, FOREIGN KEY или другие зависимости можно только с использованием конструктора таблиц. При использовании обозревателя объектов или Transact-SQLнеобходимо в первую очередь удалить зависимости столбца.
безопасность
Permissions
Требуется разрешение ALTER на таблицу.
Использование среды SQL Server Management Studio
Удаление столбцов с помощью обозревателя объектов
- В обозревателе объектов подключитесь к экземпляру компонента Компонент Database Engine.
- В обозревателе объектов найдите таблицу, из которой нужно удалить столбцы, и разверните ее, чтобы отобразить имена столбцов.
- Щелкните правой кнопкой мыши столбец, который необходимо удалить, и выберите команду Удалить.
- В диалоговом окне Удаление объекта нажмите кнопку ОК.
Если столбец содержит ограничения или другие зависимости, то в диалоговом окне Удаление объекта будет отображено сообщение об ошибке. Чтобы устранить проблему, удалите упомянутые ограничения.
Удаление столбцов с использованием конструктора таблиц
- В обозревателе объектов щелкните правой кнопкой мыши таблицу, из которой необходимо удалить столбцы, и выберите пункт Конструктор.
- Щелкните правой кнопкой мыши столбец, который надо удалить, и выберите из контекстного меню пункт Удалить столбец .
- Если столбец участвует в связи (FOREIGN KEY или PRIMARY KEY), то будет выдано сообщение с запросом на подтверждение удаления выбранных столбцов и их связей. выберите Yes (Да).
Использование Transact-SQL
Удаление столбцов
В следующем примере демонстрируется удаление столбца.
Если столбец содержит ограничения или другие зависимости, то будет возвращено сообщение об ошибке. Чтобы устранить проблему, удалите упомянутые ограничения.
Дополнительные примеры см. в статье ALTER TABLE (Transact-SQL).
Источник
Манипуляции со столбцами
Набор действий, позволяющих изменять структуру таблицы.
В запросе можно указать сразу несколько действий над одной таблицей через запятую.
Каждое действие — это манипуляция над столбцом.
Существуют следующие действия:
- ADD COLUMN — добавляет столбец в таблицу;
- DROP COLUMN — удаляет столбец;
- RENAME COLUMN — переименовывает существующий столбец;
- CLEAR COLUMN — сбрасывает все значения в столбце для заданной партиции;
- COMMENT COLUMN — добавляет комментарий к столбцу;
- MODIFY COLUMN — изменяет тип столбца, выражение для значения по умолчанию и TTL;
- MODIFY COLUMN REMOVE — удаляет какое-либо из свойств столбца;
- MATERIALIZE COLUMN — делает столбец материализованным ( MATERIALIZED ) в кусках, в которых отсутствуют значения.
Подробное описание для каждого действия приведено ниже.
ADD COLUMN
Добавляет в таблицу новый столбец с именем name , типом type , кодеком codec и выражением для умолчания default_expr (смотрите раздел Значения по умолчанию).
Если указано IF NOT EXISTS , запрос не будет возвращать ошибку, если столбец уже существует. Если указано AFTER name_after (имя другого столбца), то столбец добавляется (в список столбцов таблицы) после указанного. Если вы хотите добавить столбец в начало таблицы, используйте FIRST . Иначе столбец добавляется в конец таблицы. Для цепочки действий name_after может быть именем столбца, который добавляется в одном из предыдущих действий.
Добавление столбца всего лишь меняет структуру таблицы, и не производит никаких действий с данными — соответствующие данные не появляются на диске после ALTER-а. При чтении из таблицы, если для какого-либо столбца отсутствуют данные, то он заполняется значениями по умолчанию (выполняя выражение по умолчанию, если такое есть, или нулями, пустыми строками). Также, столбец появляется на диске при слиянии кусков данных (см. MergeTree).
Такая схема позволяет добиться мгновенной работы запроса ALTER и отсутствия необходимости увеличивать объём старых данных.
DROP COLUMN
Удаляет столбец с именем name . Если указано IF EXISTS , запрос не будет возвращать ошибку, если столбца не существует.
Запрос удаляет данные из файловой системы. Так как это представляет собой удаление целых файлов, запрос выполняется почти мгновенно.
Вы не можете удалить столбец, используемый в материализованном представлениии. В противном случае будет ошибка.
RENAME COLUMN
Переименовывает столбец name в new_name . Если указано выражение IF EXISTS , то запрос не будет возвращать ошибку при условии, что столбец name не существует. Поскольку переименование не затрагивает физические данные колонки, запрос выполняется практически мгновенно.
ЗАМЕЧЕНИЕ: Столбцы, являющиеся частью основного ключа или ключа сортировки (заданные с помощью ORDER BY или PRIMARY KEY ), не могут быть переименованы. Попытка переименовать эти слобцы приведет к SQL Error [524] .
CLEAR COLUMN
Сбрасывает все значения в столбце для заданной партиции. Если указано IF EXISTS , запрос не будет возвращать ошибку, если столбца не существует.
Как корректно задать имя партиции, см. в разделе Как задавать имя партиции в запросах ALTER.
COMMENT COLUMN
Добавляет комментарий к таблице. Если указано IF EXISTS , запрос не будет возвращать ошибку, если столбца не существует.
Каждый столбец может содержать только один комментарий. При выполнении запроса существующий комментарий заменяется на новый.
Посмотреть комментарии можно в столбце comment_expression из запроса DESCRIBE TABLE.
MODIFY COLUMN
Запрос изменяет следующие свойства столбца name :
Значение по умолчанию
Примеры изменения кодеков сжатия смотрите в разделе Кодеки сжатия столбцов.
Примеры изменения TTL столбца смотрите в разделе TTL столбца.
Если указано IF EXISTS , запрос не возвращает ошибку при условии, что столбец не существует.
Запрос также может изменять порядок столбцов при помощи FIRST | AFTER , смотрите описание ADD COLUMN.
При изменении типа, значения преобразуются так, как если бы к ним была применена функция toType. Если изменяется только выражение для умолчания, запрос не делает никакой сложной работы и выполняется мгновенно.
Изменение типа столбца — это единственное действие, которое выполняет сложную работу — меняет содержимое файлов с данными. Для больших таблиц, выполнение может занять длительное время.
Выполнение запроса ALTER атомарно.
Запрос ALTER на изменение столбцов реплицируется. Соответствующие инструкции сохраняются в ZooKeeper, и затем каждая реплика их применяет. Все запросы ALTER выполняются в одном и том же порядке. Запрос ждёт выполнения соответствующих действий на всех репликах. Но при этом, запрос на изменение столбцов в реплицируемой таблице можно прервать, и все действия будут осуществлены асинхронно.
MODIFY COLUMN REMOVE
Удаляет какое-либо из свойств столбца: DEFAULT , ALIAS , MATERIALIZED , CODEC , COMMENT , TTL .
Пример
Удаление свойства TTL:
Смотрите также
MATERIALIZE COLUMN
Материализует столбец таблицы в кусках, в которых отсутствуют значения. Используется, если необходимо создать новый столбец со сложным материализованным выражением или выражением для заполнения по умолчанию ( DEFAULT ), потому как вычисление такого столбца прямо во время выполнения запроса SELECT оказывается ощутимо затратным. Чтобы совершить ту же операцию для существующего столбца, используйте модификатор FINAL .
Пример
Результат:
Ограничения запроса ALTER
Запрос ALTER позволяет создавать и удалять отдельные элементы (столбцы) вложенных структур данных, но не вложенные структуры данных целиком. Для добавления вложенной структуры данных, вы можете добавить столбцы с именем вида name.nested_name и типом Array(T) — вложенная структура данных полностью эквивалентна нескольким столбцам-массивам с именем, имеющим одинаковый префикс до точки.
Отсутствует возможность удалять столбцы, входящие в первичный ключ или ключ для сэмплирования (в общем, входящие в выражение ENGINE ). Изменение типа у столбцов, входящих в первичный ключ возможно только в том случае, если это изменение не приводит к изменению данных (например, разрешено добавление значения в Enum или изменение типа с DateTime на UInt32 ).
Если возможностей запроса ALTER не хватает для нужного изменения таблицы, вы можете создать новую таблицу, скопировать туда данные с помощью запроса INSERT SELECT, затем поменять таблицы местами с помощью запроса RENAME, и удалить старую таблицу. В качестве альтернативы для запроса INSERT SELECT , можно использовать инструмент clickhouse-copier.
Запрос ALTER блокирует все чтения и записи для таблицы. То есть если на момент запроса ALTER выполнялся долгий SELECT , то запрос ALTER сначала дождётся его выполнения. И в это время все новые запросы к той же таблице будут ждать, пока завершится этот ALTER .
Для таблиц, которые не хранят данные самостоятельно (типа Merge и Distributed), ALTER всего лишь меняет структуру таблицы, но не меняет структуру подчинённых таблиц. Для примера, при ALTER-е таблицы типа Distributed , вам также потребуется выполнить запрос ALTER для таблиц на всех удалённых серверах.
Источник
ALTER VIEW
Название
Синтаксис
Описание
ALTER VIEW изменяет различные дополнительные свойства представления. (Для изменения запроса, определяющего представление, используйте команду CREATE OR REPLACE VIEW.)
Выполнить ALTER VIEW может только владелец представления. Чтобы сменить схему представления, необходимо также иметь право CREATE в новой схеме. Чтобы сменить владельца, требуется также быть непосредственным или опосредованным членом новой роли, а эта роль должна иметь право CREATE в схеме представления. (С такими ограничениями при смене владельца не происходит ничего такого, что нельзя было бы сделать, имея право удалить и вновь создать представление. Однако суперпользователь может сменить владельца представления в любом случае.)
Параметры
Имя (возможно, дополненное схемой) существующего представления. IF EXISTS
Не считать ошибкой, если представление не существует. В этом случае будет выдано замечание. SET/ DROP DEFAULT
Эти формы устанавливают или удаляют значение по умолчанию в заданной колонке. Значение по умолчанию подставляется в команды INSERT и UPDATE, вносящие данные в представление, до применения каких-либо правил или триггеров в этом представлении. Таким образом, значения по умолчанию в представлении имеют приоритет перед значениями по умолчанию в нижележащих отношениях. новый_владелец
Имя пользователя, назначаемого новым владельцем представления. новое_имя
Новое имя представления. новая_схема
Новая схема представления. SET ( имя_параметра_представления [= значение_параметра_представления] [, . ] )
RESET ( имя_параметра_представления [, . ] )
Устанавливает или сбрасывает параметры представления. В настоящее время поддерживаются параметры:
Изменяет параметр проверки представления. Допустимые значения: local (локальная) или cascaded (каскадная). security_barrier ( boolean)
Изменяет свойство представления, включающее барьер безопасности. Значение должно быть логическим: true или false.
Замечания
По историческим причинам команду ALTER TABLE можно использовать и с представлениями; но единственно допустимые для работы с представлениями вариации ALTER TABLE равносильны вышеперечисленным командам.
Примеры
Переименование представления foo в bar:
Добавление значения колонки по умолчанию в изменяемое представление:
Совместимость
ALTER VIEW — реализованное в PostgreSQL расширение стандарта SQL.
Источник
Alter view удаление колонки
ALTER VIEW — изменить определение представления
Синтаксис
Описание
ALTER VIEW изменяет различные дополнительные свойства представления. (Для изменения запроса, определяющего представление, используйте команду CREATE OR REPLACE VIEW .)
Выполнить ALTER VIEW может только владелец представления. Чтобы сменить схему представления, необходимо также иметь право CREATE в новой схеме. Чтобы сменить владельца, требуется также быть непосредственным или опосредованным членом новой роли, а эта роль должна иметь право CREATE в схеме представления. (С такими ограничениями при смене владельца не происходит ничего такого, что нельзя было бы сделать, имея право удалить и вновь создать представление. Однако суперпользователь может сменить владельца представления в любом случае.)
Параметры
Имя существующего представления (возможно, дополненное схемой). IF EXISTS
Не считать ошибкой, если представление не существует. В этом случае будет выдано замечание. SET / DROP DEFAULT
Эти формы устанавливают или удаляют значение по умолчанию в заданном столбце. Значение по умолчанию подставляется в команды INSERT и UPDATE , вносящие данные в представление, до применения каких-либо правил или триггеров в этом представлении. Таким образом, значения по умолчанию в представлении имеют приоритет перед значениями по умолчанию в нижележащих отношениях. новый_владелец
Имя пользователя, назначаемого новым владельцем представления. новое_имя
Новое имя представления. новая_схема
Новая схема представления. SET ( имя_параметра_представления [= значение_параметра_представления ] [, . ] )
RESET ( имя_параметра_представления [, . ] )
Устанавливает или сбрасывает параметры представления. В настоящее время поддерживаются параметры:
Изменяет параметр проверки представления. Допустимые значения: local (локальная) или cascaded (каскадная). security_barrier ( boolean )
Изменяет свойство представления, включающее барьер безопасности. Значение должно быть логическим: true или false .
Замечания
По историческим причинам команду ALTER TABLE можно использовать и с представлениями; но единственно допустимые для работы с представлениями вариации ALTER TABLE равносильны вышеперечисленным командам.
Примеры
Переименование представления foo в bar :
Добавление значения столбца по умолчанию в изменяемое представление:
Совместимость
ALTER VIEW — реализованное в Postgres Pro расширение стандарта SQL.
Источник