277 votes

Comment supprimer plusieurs colonnes avec une seule instruction ALTER TABLE ?

J'aimerais écrire une seule commande SQL pour supprimer plusieurs colonnes d'une même table en une seule fois. ALTER TABLE déclaration.

De La documentation ALTER TABLE de MSDN ...

DROP { [CONSTRAINT] constraint_name | COLUMN column_name }

Spécifie que nom_contraint ou nom_colonne est supprimé de la table. DROP COLUMN n'est pas autorisé si le niveau de compatibilité est 65 ou antérieur. Plusieurs colonnes et contraintes peuvent être listées.

Il est indiqué que plusieurs colonnes peuvent être énumérées dans l'instruction, mais la syntaxe n'indique pas de virgule facultative ou quoi que ce soit qui puisse donner une idée de la syntaxe.

Comment dois-je écrire mon SQL pour déposer plusieurs colonnes dans une seule déclaration (si possible) ?

412voto

Alex Aza Points 29204
alter table TableName
    drop column Column1, Column2

La syntaxe est la suivante

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

189voto

Dir Points 331

Donc, pour résumer

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;

39voto

Remus Rusanu Points 159382
create table test (a int, b int , c int, d int);
alter table test drop column b, d;

Sachez que DROP COLUMN ne supprime pas physiquement les données, et pour les types de longueur fixe (int, numeric, float, datetime, uniqueidentifier etc.) l'espace est consommé même pour les enregistrements ajoutés après la suppression des colonnes. Pour se débarrasser de l'espace gaspillé, procédez comme suit ALTER TABLE ... REBUILD .

13voto

MANISH ZOPE Points 326

C'est peut-être un peu tard, mais je le partage pour les nouveaux utilisateurs qui visitent cette question. Pour déposer plusieurs colonnes, la syntaxe actuelle est

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

Ainsi, pour chaque colonne, vous devez spécifier "drop column" dans Mysql 5.0.45.

2voto

kk250040 Points 19

S'il s'agit de supprimer une seule colonne, la syntaxe ci-dessous fonctionne.

ALTER TABLE tablename DROP COLUMN column1;

Pour supprimer plusieurs colonnes, utilisez la fonction DROP COLUMN ne fonctionne pas, la syntaxe suivante fonctionne

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X