Как удалить столбец в sql
Перейти к содержимому

Как удалить столбец в sql

  • автор:

Удаление столбцов из результатов запроса (визуальные инструменты для баз данных)

Если столбец используется в запросе SELECT, однако его отображение в результирующем наборе нежелательно (то есть если его не следует выводить в списке выборки), столбец можно убрать из вывода запроса. После удаления столбца из вывода запроса его все еще можно использовать в условиях поиска или как поле сортировки.

Чтобы получить сведения о полном удалении столбца из запроса, см. раздел Удаление столбцов из запросов (визуальные инструменты для баз данных).

Удаление столбца из вывода запроса

  • На панели критериевснимите флажок в столбце Выход для столбца данных, который необходимо удалить. (Если понадобится вернуть столбец в вывод запроса, можно снова установить флажок в столбце Вывод .) -или-
  • Удалите столбец из списка вывода на панели SQL.

Удаление столбцов из таблицы

В этой статье описывается удаление столбцов таблицы в SQL Server с помощью SQL Server Management Studio (SSMS) или Transact-SQL.

При удалении столбца из таблицы удаляется сам столбец и все содержащиеся в нем данные.

ограничения

Нельзя удалить столбец с ограничением CHECK. В первую очередь необходимо удалить ограничение.

Удалить столбец с ограничениями PRIMARY KEY, FOREIGN KEY или другими зависимостями можно только с использованием конструктора таблиц в SSMS. При использовании обозревателя объектов в SSMS или Transact-SQL необходимо сначала удалить все зависимости от столбца.

Разрешения

Требуется разрешение ALTER на таблицу.

Удаление столбцов с помощью обозревателя объектов

Ниже описаны действия по удалению столбцов с помощью обозревателя объектов в SSMS.

  1. Подключитесь к экземпляру ядра СУБД.
  2. В обозревателе объектов найдите таблицу, из которой требуется удалить столбцы, и разверните таблицу, чтобы предоставить имена столбцов.
  3. Щелкните правой кнопкой мыши столбец, который необходимо удалить, и выберите команду Удалить.
  4. В диалоговом окне Удаление объекта нажмите кнопку ОК.

Если столбец содержит ограничения или другие зависимости, в диалоговом окне «Удалить объект» появится сообщение об ошибке. Чтобы устранить проблему, удалите упомянутые ограничения.

Удаление столбцов с помощью конструктора таблиц

Ниже описаны действия по удалению столбцов с помощью конструктора таблиц в SSMS.

  1. В обозревателе объектовщелкните правой кнопкой мыши таблицу, из которой необходимо удалить столбцы, и выберите пункт Конструктор.
  2. Щелкните правой кнопкой мыши столбец, который надо удалить, и выберите из контекстного меню пункт Удалить столбец .
  3. Если столбец участвует в связи (FOREIGN KEY или PRIMARY KEY), то будет выдано сообщение с запросом на подтверждение удаления выбранных столбцов и их связей. Выберите Да.

Удаление столбцов с помощью Transact-SQL

Вы можете удалять столбцы с помощью Transact-SQL в SSMS, Azure Data Studio или средств командной строки, таких как служебная программа sqlcmd.

В следующем примере демонстрируется удаление столбца.

ALTER TABLE dbo.doc_exb DROP COLUMN column_b; GO 

Если столбец содержит ограничения или другие зависимости, то будет возвращено сообщение об ошибке. Чтобы устранить проблему, удалите упомянутые ограничения.

Дополнительные примеры см. в статье ALTER TABLE (Transact-SQL).

Далее

Дополнительные сведения об изменении таблиц, общих задачах и связанных с ними инструментах см. в следующих статьях:

  • Инструкция ALTER TABLE (Transact-SQL)
  • Среда SQL Server Management Studio
  • Azure Data Studio
  • Обозреватель объектов
  • конструктор таблиц

Обратная связь

Были ли сведения на этой странице полезными?

Удаление столбца из таблицы

ALTER TABLE TABLE_NAME DROP COLUMN_NAME Не катит.

Не хватает слова «COLUMN», запрос должен выглядеть так:

alter table 'table_name' drop column 'column_name' 

Отслеживать
user177221
ответ дан 17 авг 2011 в 10:39
1,382 12 12 серебряных знаков 22 22 бронзовых знака

Гм. А что оно это слово дает? Разве тут может быть неопределенность? Если надо уронить индекс, добавляем индекс, если всю колонку — просто название колонки. Я не прав? Необязательное слово COLUMN представляет собой «белый шум» и может быть опущено. mysql.ru/docs/man/ALTER_TABLE.html По крайней мере, если речь идет о Mysql

17 авг 2011 в 10:41

Если при удалении столбца не указать ключевое слово «column» то SQL Server решит что мы хотим удалить constraint. Автор вопроса спрашивал конкретно про SQL Server.

Избегая ошибок: как безопасно удалять столбец из SQL

Для удаления столбца, на который указывают ссылки, вначале найдите и устраните все зависимости: ограничения и индексы.

Скопировать код

DECLARE @Table NVARCHAR(256) = N'НазваниеТаблицы'; DECLARE @Column NVARCHAR(256) = N'НазваниеСтолбца'; -- Формируем команды для удаления ограничений SELECT 'ALTER TABLE ' + QUOTENAME(OBJECT_SCHEMA_NAME(fk.parent_object_id)) + ' DROP CONSTRAINT ' + QUOTENAME(fk.name) + ';' AS DropCommand FROM sys.foreign_keys AS fk INNER JOIN sys.foreign_key_columns AS fkc ON fk.object_id = fkc.constraint_object_id INNER JOIN sys.columns AS c ON fkc.parent_column_id = c.column_id AND fkc.parent_object_id = c.object_id WHERE c.name = @Column AND OBJECT_NAME(fkc.parent_object_id) = @Table; -- Удаляем столбец ALTER TABLE НазваниеТаблицы DROP COLUMN НазваниеСтолбца;

Замените НазваниеТаблицы и НазваниеСтолбца на реальные названия таблицы и столбца. После удаления связанных ограничений вы безопасно сможете удалить столбец. Удостоверьтесь в отсутствии остальных зависимостей, например в индексах, представлениях и хранимых процедурах.

Удаление зависимостей

Перед тем как приступить к удалению столбца с зависимостями, необходимо идентифицировать все существующие связи. Ограничения может быть сложно обнаружить, особенно если они не были явно именованы. Следуйте практике присвоения ограничениям понятных имен, что облегчит их последующее удаление.

Распознание зависимостей в хранимых процедурах и представлениях может оказаться сложным. Используйте Microsoft SQL Server Management Studio или системные представления, чтобы упростить этот процесс.

Мастерская работы с зависимостями с использованием динамического SQL

Динамический SQL может быть полезен при наличии множества связанных ограничений:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *