Как DROP несколько столбцов с одним выражением ALTER TABLE?

Я хотел бы написать одну команду SQL, чтобы удалить несколько столбцов из одной таблицы в один оператор ALTER TABLE.

От Документация MSDN ALTER TABLE...

DROP { [CONSTRAINT] constraint_name | COLUMN column_name }

Указывает, что имя_имя или имя_столбца удаляется из таблицы. DROP COLUMN не допускается, если уровень совместимости равен 65 или более ранним. Можно указать несколько столбцов и ограничений.

В нем говорится, что в заявлении могут быть указаны несколько столбцов, но синтаксис не показывает необязательную запятую или что-либо, что даже намекает на синтаксис.

Как мне написать мой SQL, чтобы удалить несколько столбцов в одном из операторов (если это возможно)?

Ответ 1

alter table TableName
    drop column Column1, Column2

Синтаксис

DROP { [ CONSTRAINT ] constraint_name | COLUMN column } [ ,...n ] 

Для MySQL

alter table TableName
    drop Column1, drop Column2

Ответ 2

Итак, суммируя

Oracle:

ALTER TABLE table_name DROP (column_name1, column_name2);

MS SQL:

ALTER TABLE table_name DROP COLUMN column_name1, column_name2

MySql:

ALTER TABLE table_name DROP column_name1, DROP column_name2;

Postgre SQL

ALTER TABLE table_name DROP COLUMN column_name1, DROP COLUMN column_name2;

Ответ 3

create table test (a int, b int , c int, d int);
alter table test drop column b, d;

Помните, что DROP COLUMN физически не удаляет данные, а для типов фиксированной длины (int, numeric, float, datetime, uniqueidentifier и т.д.) пространство потребляется даже для записей, добавленных после удаления столбцов. Чтобы избавиться от потерянного пространства, сделайте ALTER TABLE ... REBUILD.

Ответ 4

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

alter table tablename drop column col1, drop column col2 , drop column col3 ....

Итак, для каждого столбца вам нужно указать "drop column" в Mysql 5.0.45.

Ответ 5

Синтаксис, указанный Microsoft для удаления части столбца ALTER, это

 DROP 
 {
     [ CONSTRAINT ] 
     { 
          constraint_name 
          [ WITH 
           ( <drop_clustered_constraint_option> [ ,...n ] ) 
          ] 
      } [ ,...n ]
      | COLUMN 
      {
          column_name 
      } [ ,...n ]
 } [ ,...n ]

Обратите внимание, что [,... n] появляется после имени столбца и в конце всего предложения drop. Это означает, что существует два способа удаления нескольких столбцов. Вы можете сделать это:

ALTER TABLE TableName
    DROP COLUMN Column1, Column2, Column3

или

ALTER TABLE TableName
    DROP 
        COLUMN Column1,
        COLUMN Column2,
        COLUMN Column3

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

ALTER TBALE TableName
    DROP
        CONSTRAINT DF_TableName_Column1,
        COLUMN Column1;

При отбрасывании столбцов SQL Sever не возвращает пространство, занятое столбцами. Для типов данных, которые хранятся в строках в строках (например, int), он может даже занимать место в новых строках, добавленных после инструкции alter. Чтобы обойти это, вам нужно создать кластерный индекс в таблице или перестроить кластеризованный индекс, если он уже есть. Восстановление индекса можно выполнить командой REBUILD после изменения таблицы. Но будьте осторожны, это может быть медленным на очень больших таблицах. Например:

ALTER TABLE Test
    REBUILD;

Ответ 6

Если только один столбец удаляет приведенные ниже синтаксисы

ALTER TABLE tablename DROP COLUMN column1;

Для удаления нескольких столбцов использование DROP COLUMN не работает, синтаксис ниже работает

ALTER TABLE tablename DROP (column1, column2, column3......);

Ответ 7

Для MySQL (версия 5.6) вы не можете выполнять несколько столбцов с одним единственным drop -statement, но несколько несколькими drop -statements:

mysql> alter table test2 drop column (c1,c2,c3);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(c1,c2,c3)' at line 1
mysql> alter table test2 drop column c1,c2,c3;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'c2,c3' at line 1
mysql> alter table test2 drop column c1, drop column c2, drop c3;
Query OK, 0 rows affected (0.64 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> 

BTW, drop <col_name> сокращен для drop column <col_name>, как вы можете видеть из drop c3 выше.

Ответ 8

alter table tablename drop (column1, column2, column3......);

Ответ 9

Generic:

ALTER TABLE table_name 
DROP COLUMN column1,column2,column3;

Например:

ALTER TABLE Student 
DROP COLUMN Name, Number, City;

Ответ 10

этот запрос изменит проверку нескольких столбцов.

create table test(a int,B int,C int);

alter table test drop(a,B);

Ответ 11

ALTER table table_name Drop column column1, Drop column column2,Drop column column3;

для MySQL DB.

Или вы можете добавить некоторый столбец при изменении в той же строке:

ALTER table table_name Drop column column1, ADD column column2 AFTER column7;

Ответ 12

Попробуйте выполнить следующие запросы:

alter table table_name add field_name data_type

или

alter table table_name drop column field_name

или

alter table table_name drop field_name