DIFERENCIAS ENTRE DELETE TABLE , TRUNCATE TABLE y DROP TABLE

Diferencias entre DELETE, TRUNCATE y DROP TABLE en #SQLServer

Cuando manejamos una base de datos SQL, además de manejar creaciones de tablas (CREATE TABLE), inserciones (INSERT), consultas (SELECT) y actualizaciones (UPDATE); dentro de las operaciones básicas también tenemos las que implican borrado. Borrado de diferentes tipos: de filas que cumplan una serie de condiciones, de todos los datos de una tabla o de la tabla con su estructura. Veamos cada una de ellas, con su sintaxis y un ejemplo.

Manejamos para el ejemplo una tabla entradas, que trata sobre la entradas de un blog y que almacena básicamente la siguiente información: identificador, título, cuerpo y tiempo de salida.

  • La sentencia "truncate table" vacía la tabla (elimina todos los registros) y vuelve a crear la tabla con la misma estructura.
  • La diferencia con "drop table" es que esta sentencia borra la tabla, "truncate table" la vacía.
  • La diferencia con "delete" es la velocidad, es más rápido "truncate table" que "delete" (se nota cuando la cantidad de registros es muy grande) ya que éste borra los registros uno a uno pero no elimina indices ni los punteros de los autonumericos.

Otra diferencia es la siguiente: cuando la tabla tiene un campo "auto_increment", si borramos todos los registros con "delete" y luego ingresamos un registro, al cargarse el valor en el campo autoincrementable, continúa con la secuencia teniendo en cuenta el valor mayor que se había guardado; si usamos "truncate table" para borrar todos los registros, al ingresar otra vez un registro, la secuencia del campo autoincrementable vuelve a iniciarse en 1.


Por ejemplo, tenemos la tabla "Pacientes" con el campo "Código" definido "auto_increment", y el valor más alto de ese campo es "5", si borramos todos los registros con "delete" y luego ingresamos un registro sin valor de código, se guardará el valor "6"; si en cambio, vaciamos la tabla con "truncate table", al ingresar un nuevo registro sin valor para el código, iniciará la secuencia en 1 nuevamente.


Referencias

https://www.linuxhispano.net/2012/02/06/diferencia-entre-delete-truncate-y-drop-en-sql/

https://www.mundosql.eu/2016/02/10/diferencias-entre-delete-truncate-y-drop-table-en-sqlserver/

https://sql-listo.com/optimizacion/diferencia-entre-truncate-y-delete/

Comentarios

Entradas populares de este blog

¿Cómo exportar una lista de contactos de Gmail a Excel?

¿Como Obtener datos de un DataTable en C# ?

¿Qué es la JCAHO Joint Commission on Accreditation of Healthcare Organizations?