En un mundo empresarial donde las necesidades de información requieren de los datos más actualizados con el fin de proveer el mejor servicio tanto a clientes como proveedores, se vuelve muy necesaria la actualización de los datos, ya que su vigencia puede establecerse en plazos más cortos que años atrás.

Por ello, el reemplazo o la eliminación (en casos más extremos) de los datos es algo necesario y crucial para el buen desempeño de una organización. En este tema, aprenderás el manejo de las tablas de tal forma que puedas borrarlas por completo o solamente un conjunto de datos en particular a través del uso de instrucciones adecuadas para tener tus datos al día.

Explicación

Uso de DELETE

MySQL ayuda a trabajar con la estructura más adecuada para el diseño de una base de datos que cumpla con las necesidades de cada empresa, sin embargo, en algunas ocasiones es necesario realizar el borrado de datos con el fin de garantizar que el sistema de gestión de bases de datos (SGBD) y sus entradas se encuentres actualizadas en todo momento, para ello se cuenta con el comando DELETE, que permite especificar de manera precisa, el conjunto de datos que se deben eliminar, definiendo los datos correspondientes y la tabla de la cual se desea hacer la eliminación. (Equipo editorial de IONOS, 2022)

La sintaxis de MySQL DELETE es la siguiente:

DELETE FROM tabla
WHERE [condición];

FROM indica al sistema de cuál tabla borrará los registros. Por su parte, WHERE realiza la definición de la condición que deberá cumplir el registro para ser eliminado; en caso de no especificarlo, se eliminarán todas las filas.

Para este tema, se usará la tabla ordenes_compra.csv (que puedes descargar aquí) con el fin de ejemplificar el uso de los comandos que se estarán revisando. Se recomienda darla de alta en MYSQL Workbench porque cuenta con registros de una compra como número de orden, tipo, embarque, destino, fecha de embarque, fecha de envío, precio, moneda, entre otros.

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Entre los campos de la tabla, se encuentra “cantidad”; se procederá a eliminar aquellas órdenes de compra cuya cantidad sea “menor a 50”.

Utiliza DELETE para borrar los registros que tienen menos de 50 artículos en su solicitud. Es importante incluir la sentencia WHERE para que no se borren todos los registros en su totalidad.

DELETE FROM empresa.ordenes_compra
WHERE ordenes_compra.cantidad<50;

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

En esta pantalla, en la parte de Action Output (parte inferior de la imagen), observa las 28 filas afectadas o eliminadas. Así se garantiza el eliminado correcto de acuerdo con las especificaciones realizadas en WHERE.

Si quieres eliminar todos los registros de la tabla, no es necesario usar WHERE. La consulta quedaría de la siguiente manera:

DELETE FROM empresa.ordenes_compra;

NOTA. Debes tener mucho cuidado al utilizar esta instrucción porque podrías eliminar todos los registros de una tabla por error.

Uso de TRUNCATE

El comando TRUNCATE es un comando DDL (Lenguaje de Definición de Datos) que se encarga de borrar los registros de la tabla, pero sin eliminar su estructura y no hace uso de la cláusula WHERE, es importante aclarar que en caso de equivocarse al usar esta instrucción, se puede revertir, pero esto solo aplica para SQL Server, PostgreSQL, ya que no es posible hacerlo para MySQL ni Oracle. (Wdzięczna, 2022)

TRUNCATE es más rápido que DELETE porque no hace un barrido de todos los registros antes de eliminarlos, sino que bloquea la tabla para eliminarlos, usando menos espacio de transacción que DELETE. Otro aspecto relevante consiste en que, al terminar de ejecutarse, no devuelve el número de filas eliminadas de la tabla, por lo que no se verá esta información como en el ejemplo anterior. Adicionalmente, de acuerdo con Wdzięczna (2022), restablece el valor de autoincremento de la tabla al valor inicial que usualmente es 1, por lo que, si se agrega un registro después de ejecutar TRUNCATE, el ID será igual a 1. En PostgreSQL, sí se presenta la opción de elegir reiniciar o continuar el valor de autoincremento, mientras que, en Oracle, se utiliza una secuencia para incrementar los valores, la cual no es reiniciada por TRUNCATE.

Por último, hay que considerar que se requieren permisos para ejecutar esta instrucción tan importante. En PostgreSQL, se necesita el privilegio TRUNCATE; en SQL Server, el permiso es ALTER TABLE; en el caso de MySQL, se usa el privilegio DROP; y Oracle demanda el privilegio DROP ANY TABLE. Lo anterior con el fin de darle los permisos necesarios a este comando para ser ejecutado. Por defecto, este comando usa la restricción RESTRICT para evitar que una tabla que tenga referencias externas sea eliminada (truncada). Revisa, a continuación, un ejemplo de uso de TRUNCATE.

TRUNCATE TABLE estudiantes.

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Uso de REPLACE

La función REPLACE permite la búsqueda de una cadena de datos para ser reemplazada por otra dentro de las tablas de una base de datos, este comando es muy útil sobre todo cuando existe una cantidad grandes de registros y se necesitan hacer modificaciones de forma masiva en todos ellos, pero con una sola consulta. (WebExperto, 2021)

La sintaxis de este comando es la siguiente:

REPLACE (expresión, patrón, reemplazo)

  • Expresión. Se refiere al contenido donde se realizará la búsqueda.
  • Patrón. Particularmente, señala lo que se busca.
  • Reemplazo. En esta sección, se escribe el nuevo valor.

Tomando en consideración lo anterior, se utilizará REPLACE para actualizar la información de la tabla “ordenes_compra”. En esta ocasión, se desea realizar el cambio de vendedor LightTree por Arbol de Luz, que aparece en el archivo que descargaste previamente. Utiliza la siguiente instrucción:

#Utiliza REPLACE para cambiar "LightTree" por "Arbol de Luz"
#Se usa la instrucción UPDATE/SET, que ayudará a realizar el cambio de forma permanente.

UPDATE ordenes_compra
SET
vendedor = REPLACE ("LightTree"," LightTree ","Arbol de Luz");

La vista actual de la tabla es la siguiente:

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Como resultado al ejecutar REPLACE, se hace un cambio en el nombre del VENDEDOR y el resultado sería el siguiente:

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Ahora bien, si necesitas ejecutar un reemplazo simple como, por ejemplo, cambiar el campo “tipo” de OUTBOUND a “saliente”, escribe la siguiente instrucción:

#Este remplazo es temporal ya que solo usas SELECT, el cual no altera la tabla, solo la filtra.
#Se busca "OUTBOUND" dentro de "Frutas/Verduras" y lo reemplazas por "Leguminosas".

SELECT REPLACE ("tipo","OUTBOUND","saliente");

El resultado sería el siguiente:

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Ahora, si necesitas corregir un cambio de información dentro de un campo, también lo puedes realizar teniendo una consulta como esta:

UPDATE ordenes_compra
SET comprador = REPLACE (comprador, 'AHTD', 'AH-TD2');

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Uso de DROP

De acuerdo con Trost (2022), el comando DROP eliminará toda la tabla, incluyendo todos los datos y las definiciones de sus columnas. Considera que, una vez realizada la eliminación usando el comando DROP, toda la tabla desaparecerá y no será posible recuperarla, mientras que DELETE y TRUNCATE solamente eliminan los datos de la tabla manteniendo sus definiciones. La sintaxis de DROP se muestra a continuación.

  • Al ejecutar la siguiente instrucción, se eliminará la tabla completa que se especifique: DROP TABLE tabla;
  • Ejecutando la siguiente instrucción se pueden eliminar varias tablas al mismo tiempo usando una sola declaración: DROP TABLE tabla1, tabla2;
  • En la siguiente instrucción, se agrega IF EXISTS, que significa, “Si existe”, anticipando que, en caso de no existir la tabla, no se presente algún mensaje de error: DROP TABLE IF EXISTS tabla1, tabla2;

Es importante considerar que, al utilizar DROP, se suprimen las propiedades del campo, tales como la restricción de valores duplicados, relaciones con otros campos, etc.

Figura 8.1. Comparativo de antes y después de ejecutar DROP TABLE.

Ten en cuenta que, cuando una tabla tiene índices definidos que facilitan las búsquedas y evitan la duplicidad de información, será posible eliminarlos sin que eso implique borrar la información que contienen. Como lo muestra el ejemplo:

#Se elimina el Índice "orden ", (no se eliminan los datos).

ALTER TABLE ordenes_compra

DROP INDEX orden;

Así, se obtiene el mismo resultado en la misma tabla con los mismos datos con el índice inoperativo.

Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Como recomendación final, ten cuidado con el uso de los comandos DELETE, TRUNCATE y DROP porque los registros o la tabla completa no podrán ser restaurados después de ejecutar su eliminación. Asegúrate de que realmente no se necesitarán esos datos antes de realizar este tipo de acciones. Se recomienda ampliamente crear copias de seguridad del sistema de bases de datos para contar con respaldos en caso de que la información se borre por error o se necesite la recuperación de cierta información que se haya perdido.

Cierre

Cuando se requiera eliminar información de las tablas, podrás usar los comandos descritos en el tema. DROP resulta el más idóneo siempre y cuando se use con precaución. Por su parte, para el caso de actualizaciones, utiliza REPLACE que permitirá seleccionar y cambiar solamente lo necesario.

La actualización de las tablas es una tarea ardua que implica mucha organización con el fin de salvaguardar la información de la base de datos. No olvides crear los respaldos necesarios para poder restablecer la información, especialmente antes de eliminar los datos.

Checkpoint

Asegúrate de:

  • Usar REPLACE para la actualización de valores de contenidos en campos específicos.
  • Comprender el uso de los comandos DELETE y TRUNCATE para la eliminación de registros en las tablas de la base de datos.
  • Utilizar de manera correcta DROP con el fin de eliminar de manera definitiva tablas, índices y bases de datos que ya no serán requeridas.

Referencias bibliográficas

  • Equipo editorial de IONOS. (2022). MySQL DELETE: para eliminar entradas de una tabla. Recuperado de https://www.ionos.mx/digitalguide/hosting/cuestiones-tecnicas/mysql-delete/
  • Trost, S. (2022). MySQL: Eliminar Datos de Tabla – Diferencia entre TRUNCATE, DELETE y DROP. Recuperado de https://es.askingbox.com/tutorial/mysql-eliminar-datos-de-tabla-diferencia-entre-truncate-delete-y-drop
  • Wdzięczna, D. (2022). TRUNCATE TABLE vs. DELETE vs. DROP TABLE: Eliminación de tablas y datos en SQL. Recuperado de https://learnsql.es/blog/truncate-table-vs-delete-vs-drop-table-eliminacion-de-tablas-y-datos-en-sql/
  • WebExperto. (2021). ¿Cómo buscar y reemplazar un texto en MySQL utilizando UPDATE Y REPLACE? Recuperado de https://webexperto.com/como-buscar-y-reemplazar-un-texto-en-mysql-utilizando-update-y-replace/

Tecmilenio no guarda relación alguna con las marcas mencionadas como ejemplo. Las marcas son propiedad de sus titulares conforme a la legislación aplicable, estas se utilizan con fines académicos y didácticos, por lo que no existen fines de lucro, relación publicitaria o de patrocinio.

Los siguientes enlaces son externos a la Universidad Tecmilenio, al acceder a ellos considera que debes apegarte a sus términos y condiciones.

Lecturas

Videos

Tecmilenio no guarda relación alguna con las marcas mencionadas como ejemplo. Las marcas son propiedad de sus titulares conforme a la legislación aplicable, estas se utilizan con fines académicos y didácticos, por lo que no existen fines de lucro, relación publicitaria o de patrocinio.