Как удалить несколько столбцов с помощью одной инструкции ALTER TABLE в SQL Server?
Я хотел бы написать одну команду SQL, чтобы удалить несколько столбцов из одной таблицы в один ALTER TABLE заявление.
С документация по ALTER TABLE MSDN...
DROP { [CONSTRAINT] constraint_name | COLUMN column_name }
указывает, что constraint_name или column_name удаляется из таблицы. Удаление столбца не допускается, если уровень совместимости составляет 65 или более ранних версий. Можно перечислить несколько столбцов и ограничений.
Он говорит, что столбцы mutliple могут быть перечисленный в инструкции, но синтаксис не показывает необязательную запятую или что-либо, что даже намекает на синтаксис.
Как я должен написать свой SQL, чтобы удалить несколько столбцов в одном операторе (если это возможно)?
12 ответов:
для SQL Server:
alter table TableName drop column Column1, Column2синтаксис
DROP { [ CONSTRAINT ] constraint_name | COLUMN column } [ ,...n ]Для MySQL:
alter table TableName drop Column1, drop Column2
подводя итоги
ALTER TABLE table_name DROP (column_name1, column_name2);ALTER TABLE table_name DROP COLUMN column_name1, column_name2ALTER TABLE table_name DROP column_name1, DROP column_name2;ALTER TABLE table_name DROP COLUMN column_name1, DROP COLUMN column_name2;будьте в курсе
DROP COLUMN физически не удаляет данные для некоторых СУБД. Например, для MS SQL. Для типов фиксированной длины (int, numeric, float, datetime, uniqueidentifier и т. д.) пространство используется даже для записей, добавленных после столбцов были сброшены. Чтобы избавиться от потраченного впустую пространства, измените таблицу ... ВОССТАНОВИТЬ.
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.
Это может быть поздно, но поделиться им для новых пользователей, посещающих этот вопрос. Чтобы удалить несколько столбцов фактический синтаксис
alter table tablename drop column col1, drop column col2 , drop column col3 ....поэтому для каждого столбца вам нужно указать "drop column" в Mysql 5.0.45.
синтаксис, указанный 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 не восстанавливает пространство, занимаемое удаленными столбцами. Для типов данных, которые хранятся в строках inline (например, int), он может даже занимать место в новых строках, добавленных после инструкции alter. Чтобы обойти это, вам нужно создать кластеризованный индекс в таблице или перестроить кластеризованный индекс, если он уже есть. Перестроение индекса можно выполнить с помощью команды перестроить после изменения таблицы. Но будьте осторожны в этом может быть медленным на очень больших столах. Например:
ALTER TABLE Test REBUILD;
для MySQL (ver 5.6), вы не можете сделать несколько столбцов падение с одним единственным
drop- оператор, но скорее несколькоdropотчетность: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>кстати,
drop <col_name>не хватает дляdrop column <col_name>как вы можете видеть изdrop c3выше.
Если это просто один столбец, чтобы удалить ниже синтаксис работает
ALTER TABLE tablename DROP COLUMN column1;для удаления нескольких столбцов, используя
DROP COLUMNне работает, ниже синтаксис работает
ALTER TABLE tablename DROP (column1, column2, column3......);
Generic:
ALTER TABLE table_name DROP COLUMN column1,column2,column3;например:
ALTER TABLE Student DROP COLUMN Name, Number, City;
этот запрос изменит проверку нескольких столбцов.
create table test(a int,B int,C int); alter table test drop(a,B);
ALTER table table_name Drop column column1, Drop column column2,Drop column column3;для БД MySQL.
или вы можете добавить некоторый столбец при изменении в той же строке:
ALTER table table_name Drop column column1, ADD column column2 AFTER column7;
попробовать следующие запросы:
alter table table_name add field_name data_typeили
alter table table_name drop column field_nameили
alter table table_name drop field_name
Comments