una - truncate table mysql
Eliminar, Truncar o Soltar para limpiar una tabla en MySQL (5)
Estoy intentando limpiar una tabla pero no deshacerme de la estructura real de la tabla. Tengo una columna de id
que se auto-incrementa; No necesito mantener el número de ID, pero sí lo necesito para mantener su característica de incremento automático. He encontrado eliminar y truncar, pero me preocupa que uno de estos eliminará completamente toda la tabla y los futuros comandos de inserción serán inútiles.
¿Cómo elimino todos los registros de la tabla para poder insertar nuevos datos?
Otra posibilidad consiste en crear una copia vacía de la tabla, configurar el AUTO_INCREMENT (con un poco de libertad para las inserciones durante la operación no atómica) y luego girar ambos
CREATE TABLE t2_new LIKE t2;
SELECT @newautoinc:=auto_increment /*+[leeway]*/
FROM information_schema.tables
WHERE table_name=''t2'';
SET @query = CONCAT("ALTER TABLE t2_new AUTO_INCREMENT = ", @newautoinc);
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
RENAME TABLE t2 TO t2_old, t2_new TO t2;
Y luego, tiene la ventaja adicional de poder cambiar de opinión antes de quitar la tabla anterior.
Si reconsidera su decisión, aún puede recuperar registros antiguos de la tabla antes de la operación:
INSERT /*IGNORE*/ INTO t2 SELECT * FROM t2_old /*WHERE [condition]*/;
Cuando seas bueno puedes dejar caer la vieja mesa:
DROP TABLE t2_old;
Truncate table es lo que está buscando http://www.1keydata.com/sql/sqltruncate.html
Drop hará justamente eso ... soltar la tabla en cuestión, a menos que la tabla sea un padre a otra tabla.
Eliminar eliminará todos los datos que cumplan la condición; Si no se especifica ninguna condición, eliminará todos los datos de la tabla.
Truncar es similar a eliminar ; sin embargo, restablece el contador auto_increment nuevamente a 1 (o al valor inicial inicial). Sin embargo, es mejor usar Truncate Over Delete porque Delete elimina los datos en cada fila, por lo que tiene un impacto en el rendimiento que en Truncate . Sin embargo, Truncate no funcionará en tablas InnoDB donde se aplica la integridad referencial a menos que se desactive antes de que se emita el comando Truncate.
Entonces, relájate; a menos que emita un comando drop en la tabla, no se eliminará.
TRUNCATE
restablecerá su semilla de incremento automático (al menos en las tablas de InnoDB), aunque podría anotar su valor antes de truncar y reajustar en consecuencia posteriormente utilizando la tabla alterar :
ALTER TABLE t2 AUTO_INCREMENT = value
drop table
eliminará toda la tabla con datos
delete * from table
eliminará los datos, dejando solo los valores de autoincremento. también toma un tiempo si hay muchos datos en la tabla.
truncate table
eliminará los datos, restablecerá los valores de autoincremento (pero los dejará como columnas de autoincremento, por lo que solo comenzará en 1 y volverá a subir desde allí) y es muy rápido.