tabla - modificar columna sql server
¿Cómo DROP varias columnas con una sola instrucción ALTER TABLE en SQL Server? (12)
Resumiendo
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;
ALTER TABLE table_name DROP COLUMN column_name1, DROP COLUMN column_name2;
Estar atentos
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, datetime, identificador único, etc.) el espacio se consume incluso para los registros agregados después de que se eliminaron las columnas. Para deshacerse del espacio desperdiciado, ALTER TABLE ... REBUILD.
Me gustaría escribir un solo comando SQL para eliminar varias columnas de una sola tabla en una instrucción ALTER TABLE
.
De la documentación de MSDN ALTER TABLE ...
DROP { [CONSTRAINT] constraint_name | COLUMN column_name }
Especifica que el nombre de la restricción o el nombre de la columna se eliminan de la tabla. DROP COLUMN no está permitido si el nivel de compatibilidad es 65 o anterior. Se pueden listar múltiples columnas y restricciones.
Dice que se pueden listar varias columnas en la declaración, pero la sintaxis no muestra una coma opcional ni nada que sugiera incluso la sintaxis.
¿Cómo debo escribir mi SQL para colocar varias columnas en una declaración (si es posible)?
Esta consulta alterará la columna múltiple de prueba.
create table test(a int,B int,C int);
alter table test drop(a,B);
Esto puede ser tarde, pero compartiéndolo para los nuevos usuarios que visitan esta pregunta. Para descartar múltiples columnas la sintaxis real es
alter table tablename drop column col1, drop column col2 , drop column col3 ....
Por lo tanto, para cada columna debe especificar "soltar columna" en Mysql 5.0.45.
La sintaxis especificada por Microsoft para eliminar una parte de columna de una declaración ALTER es la siguiente
DROP
{
[ CONSTRAINT ]
{
constraint_name
[ WITH
( <drop_clustered_constraint_option> [ ,...n ] )
]
} [ ,...n ]
| COLUMN
{
column_name
} [ ,...n ]
} [ ,...n ]
Observe que [, ... n] aparece después del nombre de la columna y al final de toda la cláusula de descarte. Lo que esto significa es que hay dos formas de eliminar varias columnas. Usted puede hacer esto:
ALTER TABLE TableName
DROP COLUMN Column1, Column2, Column3
o esto
ALTER TABLE TableName
DROP
COLUMN Column1,
COLUMN Column2,
COLUMN Column3
Esta segunda sintaxis es útil si desea combinar la caída de una columna con la eliminación de una restricción:
ALTER TBALE TableName
DROP
CONSTRAINT DF_TableName_Column1,
COLUMN Column1;
Al eliminar columnas, SQL Sever no recupera el espacio ocupado por las columnas eliminadas. 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 declaración de modificación. Para solucionar 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 ten en cuenta que esto puede ser lento en mesas muy grandes. Por ejemplo:
ALTER TABLE Test
REBUILD;
Para MySQL (ver 5.6), no puede hacer una caída de varias columnas con una sola declaración de drop
sino múltiples declaraciones de 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>
Por cierto, drop <col_name>
es una abreviatura de drop column <col_name>
como se puede ver en drop c3
arriba.
Si es solo una columna para eliminar los siguientes trabajos de sintaxis
ALTER TABLE tablename DROP COLUMN column1;
Para eliminar varias columnas, el uso de DROP COLUMN
funciona, la sintaxis a continuación funciona
ALTER TABLE tablename DROP (column1, column2, column3......);
Trate de seguir las consultas:
alter table table_name add field_name data_type
o
alter table table_name drop column field_name
o
alter table table_name drop field_name
Genérico:
ALTER TABLE table_name
DROP COLUMN column1,column2,column3;
P.ej:
ALTER TABLE Student
DROP COLUMN Name, Number, City;
Para SQL Server:
alter table TableName
drop column Column1, Column2
La sintaxis es
DROP { [ CONSTRAINT ] constraint_name | COLUMN column } [ ,...n ]
Para MySQL:
alter table TableName
drop Column1, drop Column2
ALTER table table_name Drop column column1, Drop column column2,Drop column column3;
para MySQL DB.
O puedes agregar alguna columna mientras alteras en la misma línea:
ALTER table table_name Drop column column1, ADD column column2 AFTER column7;
alter table tablename drop (column1, column2, column3......);
create table test (a int, b int , c int, d int);
alter table test drop column b, d;
Tenga en cuenta que DROP COLUMN no elimina físicamente los datos, y para los tipos de longitud fija (int, numeric, float, datetime, uniqueidentifier, etc.) el espacio se consume incluso para los registros agregados después de que se eliminaron las columnas. Para deshacerse del espacio desperdiciado, ALTER TABLE ... REBUILD
.