¿Cuál es la diferencia entre DELETE, TRUNCATE y DROP?
Opciones
- Son comandos idénticos y solo cambian sus nombres
- DELETE quita las filas elegidas; TRUNCATE todas las filas; DROP la tabla (Opción correcta)
- DROP quita solo una fila de la tabla indicada
- TRUNCATE elimina toda la base de datos, no solo una tabla
Respuesta
DELETE quita las filas elegidas (admite WHERE, registra cada fila); TRUNCATE quita rápidamente todas las filas pero conserva la tabla; DROP elimina toda la tabla y su estructura
Por qué
DELETE FROM t WHERE ...: quita las filas que elijas. Se puede deshacer en una transacción, dispara triggers y es más lento en tablas grandes.TRUNCATE TABLE t: vacía la tabla muy rápido (sin WHERE), reinicia los contadores autoincrementales; en muchas bases de datos es DDL y es más difícil de deshacer.DROP TABLE t: elimina la propia tabla, con su estructura, índices y datos.
Prueba siempre las sentencias destructivas dentro de una transacción o en una copia.
Recuerda
DELETE algunas filas, TRUNCATE todas las filas, DROP la tabla.