Me gustaría escribir un solo comando SQL para soltar varias columnas de una sola tabla en una ALTER TABLE
declaración.
De la documentación de ALTER TABLE de MSDN ...
DROP { [CONSTRAINT] constraint_name | COLUMN column_name }
Especifica que restricción_nombre o columna_nombre se elimina de la tabla. DROP COLUMN no está permitido si el nivel de compatibilidad es 65 o anterior. Se pueden enumerar múltiples columnas y restricciones.
Dice que varias columnas se pueden enumerar en la declaración, pero la sintaxis no muestra una coma opcional ni nada que incluso sugiera la sintaxis.
¿Cómo debo escribir mi SQL para soltar varias columnas en una declaración (si es posible)?
fuente
Resumiendo
Oráculo :
Servidor MS SQL :
MySQL :
PostgreSQL
Se consciente
DROP COLUMN
no elimina físicamente los datos de algunos DBMS. Por ejemplo, para MS SQL. Para los tipos de longitud fija ( int , numérico , flotante , fecha y hora , identificador único , etc.), el espacio se consume incluso para los registros agregados después de que se descartaron las columnas. Para deshacerse del espacio desperdiciado hacerALTER TABLE ... REBUILD
.fuente
COLUMN
palabras clave como en MySql.Tenga en cuenta que DROP COLUMN no elimina físicamente los datos, y para los tipos de longitud fija (int, numérico, flotante, fecha-hora, identificador único, etc.) el espacio se consume incluso para los registros agregados después de que se descartaron las columnas. Para deshacerse del espacio desperdiciado hacer
ALTER TABLE ... REBUILD
.fuente
ALTER INDEX PK_IndexName ON TableName REBUILD
y recuperar el espacio. Esto se describe aquí: msdn.microsoft.com/en-us/library/ms189858.aspx en la sección "Reconstrucción de un índice".Esto puede llegar tarde, pero compartirlo con los nuevos usuarios que visiten esta pregunta. Para soltar varias columnas, la sintaxis real es
Entonces, para cada columna, debe especificar "soltar columna" en Mysql 5.0.45.
fuente
La sintaxis especificada por Microsoft para colocar una parte de columna de una instrucción ALTER es esta
Observe que el [, ... n] aparece después del nombre de la columna y al final de la cláusula drop completa. Lo que esto significa es que hay dos formas de eliminar varias columnas. Puedes hacer esto:
o esto
Esta segunda sintaxis es útil si desea combinar la caída de una columna con la caída de una restricción:
Al soltar columnas, SQL Sever no reclama el espacio ocupado por las columnas soltadas. Para los tipos de datos que se almacenan en línea en las filas (int, por ejemplo), incluso puede ocupar espacio en las nuevas filas agregadas después de la instrucción alter. Para evitar esto, debe crear un índice agrupado en la tabla o reconstruir el índice agrupado si ya tiene uno. La reconstrucción del índice se puede hacer con un comando REBUILD después de modificar la tabla. Pero tenga en cuenta que esto puede ser lento en mesas muy grandes. Por ejemplo:
fuente
Para MySQL (ver 5.6), no puede hacer soltar múltiples columnas con una sola
drop
declaración sino más bien con variasdrop
declaraciones:Por cierto,
drop <col_name>
es cortodrop column <col_name>
como se puede ver desdedrop c3
arriba.fuente
Si es solo una columna para eliminar, la sintaxis siguiente funciona
ALTER TABLE tablename DROP COLUMN column1;
Para eliminar varias columnas, el uso de no
DROP COLUMN
funciona, la sintaxis siguiente funcionaALTER TABLE tablename DROP (column1, column2, column3......);
fuente
fuente
Genérico:
P.ej:
fuente
esta consulta alterará la prueba de múltiples columnas.
fuente
para MySQL DB.
O puede agregar alguna columna mientras se modifica en la misma línea:
fuente