Я хотел бы написать одну команду SQL для удаления нескольких столбцов из одной таблицы в одном ALTER TABLE
операторе.
Из документации ALTER TABLE MSDN ...
DROP { [CONSTRAINT] constraint_name | COLUMN column_name }
Указывает, что имя-ограничения или имя-столбца удаляется из таблицы. DROP COLUMN не допускается, если уровень совместимости равен 65 или выше. Можно указать несколько столбцов и ограничений.
В нем говорится, что в выражении могут быть указаны столбцы с множественными значениями, но синтаксис не показывает необязательную запятую или что-либо, что даже намекает на синтаксис.
Как мне написать свой SQL, чтобы отбрасывать несколько столбцов в одном выражении (если это возможно)?
источник
Подведение итогов
Оракул :
MS SQL Server :
MySQL :
PostgreSQL
Знать
DROP COLUMN
физически не удаляет данные для некоторых СУБД. Например, для MS SQL. Для типов фиксированной длины ( int , numeric , float , datetime , uniqueidentifier и т. Д.) Пространство используется даже для записей, добавленных после удаления столбцов. Чтобы избавиться от потерянного пространства, сделайтеALTER TABLE ... REBUILD
.источник
COLUMN
ключевое слово, как в MySql.Помните, что DROP COLUMN физически не удаляет данные, а для типов фиксированной длины (int, numeric, float, datetime, uniqueidentifier и т. Д.) Пространство используется даже для записей, добавленных после удаления столбцов. Чтобы избавиться от потерянного пространства, сделайте
ALTER TABLE ... REBUILD
.источник
ALTER INDEX PK_IndexName ON TableName REBUILD
и он освободит место. Это несколько описано здесь: msdn.microsoft.com/en-us/library/ms189858.aspx в разделе «Перестройка индекса».Это может быть поздно, но делиться этим для новых пользователей, посещающих этот вопрос. Чтобы удалить несколько столбцов, фактический синтаксис
Таким образом, для каждого столбца необходимо указать «отбрасывать столбец» в Mysql 5.0.45.
источник
Синтаксис, определенный Microsoft для отбрасывания части столбца оператора ALTER, таков :
Обратите внимание, что [, ... n] появляется после имени столбца и в конце всего предложения удаления. Это означает, что существует два способа удаления нескольких столбцов. Вы можете сделать это:
или это
Этот второй синтаксис полезен, если вы хотите объединить удаление столбца с удалением ограничения:
При удалении столбцов SQL Sever не восстанавливает пространство, занимаемое удаленными столбцами. Для типов данных, которые хранятся в строках в строках (например, int), он может даже занимать место в новых строках, добавленных после оператора alter. Чтобы обойти это, вам нужно создать кластеризованный индекс в таблице или перестроить кластеризованный индекс, если он уже есть. Восстановление индекса может быть выполнено с помощью команды REBUILD после изменения таблицы. Но имейте в виду, что это может быть медленно на очень больших столах. Например:
источник
Для MySQL (версия 5.6) вы не можете сделать несколько отбрасываний столбцов с одним,
drop
а скорее с несколькимиdrop
утверждениями:Кстати,
drop <col_name>
сокращенно,drop column <col_name>
как вы можете видетьdrop c3
сверху.источник
Если это просто один столбец для удаления, ниже работает синтаксис
ALTER TABLE tablename DROP COLUMN column1;
Для удаления нескольких столбцов, используя не
DROP COLUMN
работает, работает синтаксис нижеALTER TABLE tablename DROP (column1, column2, column3......);
источник
источник
Общий:
Например:
источник
этот запрос изменит многостолбцовый тест.
источник
для БД MySQL.
Или вы можете добавить некоторые столбцы, изменяя в той же строке:
источник