Maybaygiare.org

Blog Network

Eliminar todos los datos en una tabla MySQL

MySQL es la base de datos de código abierto más popular del mundo, reconocida por su velocidad y fiabilidad. Este artículo analiza cómo eliminar todos los datos de una tabla de base de datos MySQL y cómo afecta a los campos incrementales automáticos.

Eliminar y Truncar

Hay dos maneras de eliminar todos los datos en una tabla MySQL base de datos.

TRUNCATE TABLE tablename; Esto eliminará todos los datos en la tabla muy rápidamente. En MySQL, la tabla se elimina y se vuelve a crear, de ahí la velocidad de la consulta. El número de filas eliminadas para las tablas MyISAM devueltas es cero; para INNODB devuelve el número real eliminado.

DELETE FROM tablename; Esto también elimina todos los datos de la tabla, pero no es tan rápido como usar el método» TRUNCAR TABLA». En MySQL > = 4.0 se devuelve el número de filas eliminadas; en MySQL 3.23 el número devuelto es siempre cero.

Columnas de incremento automático para tablas MyISAM

Si tiene una columna de clave primaria de incremento automático en su tabla MyISAM, el resultado será ligeramente diferente según el método de eliminación que utilice. Cuando se utiliza el método «TABLA TRUNCADA», el valor inicial de incremento automático se restablecerá a 1. Al usar el método «ELIMINAR DE», la semilla de incremento automático se dejará como estaba antes (por ejemplo, si el campo de incremento automático del último registro insertado fue 123, el siguiente registro insertado se establecerá en 124).

Tenga en cuenta que esto es cierto para MySQL > = 4.0; de mi lectura de la página de manual TRUNCATE en MySQL 3.23 TRUNCATE funciona igual que DELETE, lo que significaría que la semilla de incremento automático no se restablece. Actualmente no tengo una base de datos 3.23 configurada para probarlo, por lo que no puedo confirmarlo.

Columnas de incremento automático para tablas INNODB

Para tablas INNODB, ya sea que utilice los métodos» TRUNCAR TABLA «o» ELIMINAR DE», el campo de incremento automático no se restablecerá. Si insertó 5 registros en una tabla nueva, luego eliminó todos los registros e insertó otro registro, el campo tendría un valor de 6, independientemente del método que haya utilizado.

Actualización del 17 de febrero de 2009: Originalmente escribí este post cuando MySQL 4.0 era la versión actual. Acabo de probar lo anterior ahora en una tabla INNODB usando MySQL 5.0 y usando TRUNCATE restablece el campo de incremento automático al valor predeterminado. Así que, o el comportamiento cambió en algún momento o estaba equivocado al hacer la declaración anterior.

¿Está realmente seguro de que desea eliminar todos los datos?

Antes de eliminar todos los datos de una base de datos, debe asegurarse de que realmente tiene la intención de eliminar todos los datos. A menudo paga primero «SELECCIONAR * DESDE el nombre de la tabla» o «SELECCIONAR RECUENTO(*) DESDE el nombre de la tabla» antes de hacerlo para verificar que realmente es seguro eliminar todos los datos. Tal vez realmente quieras hacer algo como «ELIMINAR DEL nombre de la tabla DONDE foo = ‘bar'» en su lugar.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.