una tablas tabla sentencia registros fila eliminar delete datos como borrar mysql ddl mysql4

tablas - sentencia delete mysql



MySQL Alte la sintaxis para soltar una columna si existe (5)

¿Cuál es la sintaxis para soltar una columna en una tabla MySQL, si esa columna existe en la versión 4.0.18?


La respuesta de Chase Seibert funciona, pero agregaría que si tiene varios esquemas, quiere alterar el SELECTO así:

select * from information_schema.columns where table_schema in (select schema()) and table_name=...


Me doy cuenta de que este hilo es bastante viejo ahora, pero estaba teniendo el mismo problema. Esta fue mi solución más básica usando MySQL Workbench, pero funcionó bien ...

  1. obtener un nuevo editor de sql y ejecutar SHOW TABLES para obtener una lista de tus tablas
  2. seleccione todas las filas y elija copiar al portapapeles (sin comillas) desde el menú contextual
  3. pegue la lista de nombres en otra pestaña del editor
  4. escriba su consulta, es decir, ALTER TABLE x DROP a ;
  5. hacer algunas copias y pegar, por lo que terminas con consultas separadas para cada tabla
  6. Alternar si el banco de trabajo debe detenerse cuando ocurre un error
  7. Hit ejecutar y mirar a través del registro de salida

las tablas que tenían la tabla ahora no tienen ninguna tabla que no haya mostrado un error en los registros

entonces puedes encontrar / reemplazar ''drop a '' cambiarlo a ''ADD COLUMN b INT NULL'', etc. y ejecutar todo de nuevo ...

un poco torpe, pero al final obtienes el resultado final y puedes controlar / monitorear todo el proceso y recuerda guardar tus scripts sql en caso de que los necesites nuevamente.


No hay soporte de nivel de idioma para esto en MySQL. Aquí hay una solución temporal que involucra los metadatos MySQL information_schema en 5.0+, pero no abordará su problema en 4.0.18.

drop procedure if exists schema_change; delimiter '';;'' create procedure schema_change() begin /* delete columns if they exist */ if exists (select * from information_schema.columns where table_schema = schema() and table_name = ''table1'' and column_name = ''column1'') then alter table table1 drop column `column1`; end if; if exists (select * from information_schema.columns where table_schema = schema() and table_name = ''table1'' and column_name = ''column2'') then alter table table1 drop column `column2`; end if; /* add columns */ alter table table1 add column `column1` varchar(255) NULL; alter table table1 add column `column2` varchar(255) NULL; end;; delimiter '';'' call schema_change(); drop procedure if exists schema_change;

Escribí información más detallada en una publicación de blog .


Sé que este es un hilo viejo, pero hay una manera simple de manejar este requisito sin usar procedimientos almacenados. Esto puede ayudar a alguien.

set @exist_Check := ( select count(*) from information_schema.columns where TABLE_NAME=''YOUR_TABLE'' and COLUMN_NAME=''YOUR_COLUMN'' and TABLE_SCHEMA=database() ) ; set @sqlstmt := if(@exist_Check>0,''alter table YOUR_TABLE drop column YOUR_COLUMN'', ''select '''''''''') ; prepare stmt from @sqlstmt ; execute stmt ;

Espero que esto ayude a alguien, como a mí (después de muchas pruebas y errores).


Para MySQL, no hay ninguno: solicitud de funciones de MySQL .

Permitir esto posiblemente sea una mala idea, IF EXISTS indica que está ejecutando operaciones destructivas en una base de datos con (para usted) una estructura desconocida. Puede haber situaciones en las que esto sea aceptable para el trabajo local rápido y sucio, pero si tiene la tentación de ejecutar una declaración de este tipo contra datos de producción (en una migración, etc.), está jugando con fuego.

Pero si insistes, no es difícil simplemente verificar la existencia primero en el cliente o detectar el error.

MariaDB también es compatible con lo siguiente a partir de 10.0.2:

DROP [COLUMN] [IF EXISTS] col_name

es decir

ALTER TABLE my_table DROP SI EXISTE my_column;

Pero podría decirse que es una mala idea confiar en una característica no estándar respaldada solo por una de las varias características de MySQL.