Ответ 1
alter table TableName
drop column Column1, Column2
Синтаксис
DROP { [ CONSTRAINT ] constraint_name | COLUMN column } [ ,...n ]
Для MySQL
alter table TableName
drop Column1, drop Column2
Я хотел бы написать одну команду SQL, чтобы удалить несколько столбцов из одной таблицы в один оператор ALTER TABLE
.
От Документация MSDN ALTER TABLE...
DROP { [CONSTRAINT] constraint_name | COLUMN column_name }
Указывает, что имя_имя или имя_столбца удаляется из таблицы. DROP COLUMN не допускается, если уровень совместимости равен 65 или более ранним. Можно указать несколько столбцов и ограничений.
В нем говорится, что в заявлении могут быть указаны несколько столбцов, но синтаксис не показывает необязательную запятую или что-либо, что даже намекает на синтаксис.
Как мне написать мой SQL, чтобы удалить несколько столбцов в одном из операторов (если это возможно)?
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_name2
ALTER TABLE table_name DROP column_name1, DROP column_name2;
ALTER TABLE table_name DROP COLUMN column_name1, DROP COLUMN column_name2;
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 не возвращает пространство, занятое столбцами. Для типов данных, которые хранятся в строках в строках (например, int), он может даже занимать место в новых строках, добавленных после инструкции alter. Чтобы обойти это, вам нужно создать кластерный индекс в таблице или перестроить кластеризованный индекс, если он уже есть. Восстановление индекса можно выполнить командой REBUILD после изменения таблицы. Но будьте осторожны, это может быть медленным на очень больших таблицах. Например:
ALTER TABLE Test
REBUILD;
Если только один столбец удаляет приведенные ниже синтаксисы
ALTER TABLE tablename DROP COLUMN column1;
Для удаления нескольких столбцов использование DROP COLUMN
не работает, синтаксис ниже работает
ALTER TABLE tablename DROP (column1, column2, column3......);
Для 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
выше.
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 DB.
Или вы можете добавить некоторый столбец при изменении в той же строке:
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