¿Qué hace el TRUNCATE
diferente para soltar?
Creo que elimina todos los datos de la tabla, pero mantiene el nombre de la tabla en la base de datos, donde DROP
elimina todos los datos y la tabla. Es esto correcto ?
mysql
truncate
drop-table
usuario1829823
fuente
fuente
Respuestas:
BORRAR - LENGUAJE DE MANIPULACIÓN DE DATOS (DML)
La
DELETE
declaración en cualquier RDBMS se considera una declaración DML . También conocido como CRUD (Crear, Leer, Actualizar, Eliminar), este tipo de declaración está destinada a manipular datos en una base de datos sin afectar la estructura subyacente de los objetos. Lo que esto significa en términos prácticos es:DELETE
declaración se puede ajustar utilizando un predicado a través deWHERE
oJOIN
para eliminar algunas o todas las filas de una tabla.DELETE
base de datos registrará una declaración y puede revertirla dentro de una transacción si la declaración falla.DELETE
, a tomará bloqueos de nivel de fila en los datos que se eliminan, aunque esto podría aumentar aún más según sea necesario.DELETE
puede ser "lento" (esto es relativo), pero más seguro porque es de grano fino.TRUNCATE - LENGUAJE DE DEFINICIÓN DE DATOS (DDL)
TRUCNATE
se considera una declaración DDL , lo que significa que tiene la intención de alterar cómo se definen los objetos en una base de datos. Por lo general, las declaraciones DDL sonCREATE
,ALTER
oDROP
, pero tienenTRUNCATE
un propósito particular, el de "restablecer" una tabla eliminando todas las filas. Los métodos de este difieren entre los motores RDBMS y recomendaría mirar los detalles de MySQL . Las implicaciones prácticas de aTRUNCATE
son:TRUNCATE
No puede ser de grano fino. Si tiene éxito, eliminará todas las filas de su tabla.TRUNCATE
normalmente no se registra. Esto varía según RDBMS y sugeriría que mire más específicamente cómo MySQL lo maneja. (Sugerencia, varía según la versión).TRUNCATE
requiere un bloqueo de metadatos de tabla para ejecutarse. La forma en que esto se implementa realmente puede ser específica para RDBMS, pero esencialmente elTRUNCATE
proceso debe evitar que otros procesos interfieran con la tabla para ejecutar su DDL.TRUNCATE
será más rápido que aDELETE
, pero menos seguro.TABLA DE GOTA - LENGUAJE DE DEFINICIÓN DE DATOS (DDL)
DROP TABLE
va más allá de aTRUNCATE
en que en realidad elimina la tabla de la base de datos por completo. Esto incluye eliminar todos los objetos asociados, como índices y restricciones. Si dejara caer una tabla, no solo eliminaría todos los datos, sino también la estructura. Esto generalmente se hará cuando ya no se necesite una tabla. La principal preocupación es que, dado que aDROP
es DDL, normalmente no se puede deshacer . Algunos motores RDBMS le permitirán ajustar DDL dentro de una transacción para que pueda revertirlo, pero esto no se considera la mejor práctica y debe evitarse.fuente
Aunque no puedo hablar por MySQL, aquí hay una tabla rápida que compara algunos aspectos de truncar frente a eliminar dentro de Oracle.
Información compilada de este libro: http://amzn.com/0470395125
Espero que esto pueda ayudar a cualquier usuario de Oracle que se encuentre con esta página, como lo hice yo. Por favor, siéntase libre de señalar cuál de estos puntos, si alguno, es cierto en MySQL,
fuente
DROP TABLE TableName
-> eliminar la tabla de la base de datos.TRUNCATE TABLE TableName
-> eliminar los datos de la tabla, incondicionalmente ... y restablecer elIDENTITY
valor inicial, si la tabla tiene unIDENTITY
campo.fuente
DELETE
: Comando DML, si ejecuta el comando eliminar, elimine los únicos DATOS sin quitar la estructura de la tabla, podemos ROLLBACK los datos fila por filaTRUNCATE
: Comando DDL, si ejecuta el comando Truncar, elimine los únicos DATOS sin desarmar la estructura de la tabla, no podemos deshacer los datos truncar, eliminar los datos de una página a otra, truncar es más rápido y luego eliminar la consultaDROP
:, Comando DDL, si ejecuta el comando DROP, eliminará (eliminará) los datos y la estructura de la tabla total, tampoco podremos deshacer los datosfuente