Je voudrais écrire une seule commande SQL pour supprimer plusieurs colonnes d'une même table dans une seule ALTER TABLE
instruction.
À partir de la documentation ALTER TABLE de MSDN ...
DROP { [CONSTRAINT] constraint_name | COLUMN column_name }
Spécifie que nom_contrainte 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 répertoriées.
Il indique que plusieurs colonnes peuvent être répertoriées dans l'instruction, mais la syntaxe n'affiche pas de virgule facultative ou tout ce qui pourrait même faire allusion à la syntaxe.
Comment dois-je écrire mon SQL pour supprimer plusieurs colonnes dans une seule instruction (si possible)?
la source
Résumer
Oracle :
MS SQL Server :
MySQL :
PostgreSQL
Être conscient
DROP COLUMN
ne supprime pas physiquement les données de certains SGBD. Par exemple pour MS SQL. Pour les types de longueur fixe ( int , numérique , 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 perdu, faites-leALTER TABLE ... REBUILD
.la source
COLUMN
mots clés comme dans MySql.Sachez que DROP COLUMN ne supprime pas physiquement les données et que pour les types de longueur fixe (int, numérique, 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 perdu, faites-le
ALTER TABLE ... REBUILD
.la source
ALTER INDEX PK_IndexName ON TableName REBUILD
et il récupérerait l'espace. Ceci est quelque peu décrit ici: msdn.microsoft.com/en-us/library/ms189858.aspx dans la section "Reconstruction d'un index".Cela peut être en retard, mais le partager pour les nouveaux utilisateurs visitant cette question. Pour supprimer plusieurs colonnes, la syntaxe réelle est
Donc, pour chaque colonne, vous devez spécifier "drop column" dans Mysql 5.0.45.
la source
La syntaxe spécifiée par Microsoft pour la suppression d'une partie de colonne d'une instruction ALTER est la suivante
Notez que le [, ... n] apparaît après le nom de la colonne et à la fin de la clause drop complète. Cela signifie qu'il existe deux façons de supprimer plusieurs colonnes. Vous pouvez soit le faire:
ou ca
Cette deuxième syntaxe est utile si vous souhaitez combiner la suppression d'une colonne avec la suppression d'une contrainte:
Lors de la suppression de colonnes, SQL Sever ne récupère pas l'espace occupé par les colonnes supprimées. Pour les types de données qui sont stockés en ligne dans les lignes (int par exemple), il peut même occuper de l'espace sur les nouvelles lignes ajoutées après l'instruction alter. Pour contourner ce problème, vous devez créer un index cluster sur la table ou reconstruire l'index cluster s'il en a déjà un. La reconstruction de l'index peut être effectuée avec une commande REBUILD après avoir modifié la table. Mais attention, cela peut être lent sur de très grandes tables. Par exemple:
la source
Pour MySQL (ver 5.6), vous ne pouvez pas faire de
drop
saut de colonnes multiples avec une seule déclaration mais plutôt plusieursdrop
déclarations:BTW,
drop <col_name>
est un raccourcidrop column <col_name>
comme vous pouvez le voirdrop c3
ci-dessus.la source
S'il ne s'agit que d'une seule colonne pour supprimer les travaux de syntaxe ci-dessous
ALTER TABLE tablename DROP COLUMN column1;
Pour supprimer plusieurs colonnes, en utilisant le ne
DROP COLUMN
fonctionne pas, la syntaxe ci-dessous fonctionneALTER TABLE tablename DROP (column1, column2, column3......);
la source
la source
Générique:
Par exemple:
la source
cette requête modifiera le test sur plusieurs colonnes.
la source
pour MySQL DB.
Ou vous pouvez ajouter une colonne tout en modifiant dans la même ligne:
la source