una - restriccion check sql server




¿Cómo DROP varias columnas con una sola instrucción ALTER TABLE en SQL Server? (8)

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;

Postgre SQL

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);

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.


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;

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......);




alter