En la sección anterior vimo sel uso del comando SQL UPDATE para actualizar datos en las tablas de una base de datos. En esta sección veremos como eliminar o borrar registros o filas de una base de datos usando el comando SQL DELETE.
Borrar todas las filas o registros de una tabla con SQL.
Nota: mucha precaución con usar el siguiente comando SQL en base de datos en producción. El comando DELETE como lo vamos a ver, borra todo el contenido de la tabla. Sólo úselo si está seguro que quiere dejar vacía la tabla. Si su tabla contiene miles o millones de filas, será difícil recuperarlas.
La sintaxis del comando DELETE para borrar todo el contenido de una tabla es la siguiente:
DELETE FROM nombre-tabla;
Esta forma de ejecutar el comando DELETE, como ya hemos mencionado, borra todos los registros de la tabla indicada. Antes de verlo en la práctica vamos a crear una tabla a partir de un archivo de texto .csv (archivo delimitado por comas). Este archivo contiene información de muchos productos que nos servirán para hacer nuestras prácticas.
Convertir un archivo de texto CSV a una tabla con “DB Browser fos SQLite (DB4S)”.
Descargue el archivo productos.csv, que se encuentra enseguida, a una carpeta en su computadora, preferentemente al directorio donde tiene guardada la base de datos SQLite o el archivo SQL.
Ejecute la aplicación DB4S si no la tiene en ejecución y abra la base de datos SQLite con la que hemos estado trabajando. Seleccione del menú “File” (Archivo) la opción “Import >” (Importar) y enseguida la opción “Table for CSV file” (Tabla de un archivo CSV).
El diálogo “Choose text files” (Selecciona archivos de texto) se abrirá. Ahí navega hasta el directorio o carpeta donde has estado trabajando, selecciona el archivo descargado “productos.csv” y oprime el botón “Abrir”.
Aparecerá la ventana “Import CSV file” (Importar archivo CSV). Por defecto el nombre de la tabla, “Table name” lo toma del nombre del archivo CSV, en este caso “productos”, dejaremos este nombre así. Selecciona el cuadro “Column names in first line” (Nombres de columnas en la primera fila), ya que en la primera fila del archivo CSV se encuentran efectivamente los nombres de las columnas. El resto de la opciones déjalas como aparece en la siguiente imagen u oprime el botón “OK”:
Revisa la estructura de la base de datos como lo hemos hecho antes y checa que la tabla “productos” aparezca y observa que campos o columnas contiene.
Si gustas puedes ver el contenido de la tabla como lo hemos hecho antes desde la pestaña “Browse Data” y seleccionando la tabla “productos” de la lista “Table”:
Como acabamos de agregar una nueva tabla con datos, no olvides grabar la base de datos. Ahora escribe el siguiente comando en el archivo SQL que hemos estado usando y ejecútalo, pero NO grabes aún los cambios en la base de datos:
Consulta en contenido de la tabla, verás que ya no existe ningún registro en “productos”:
La razón por la que no debes grabar aún los cambios en la base de datos es porque vamos a ver otra herramienta de la aplicación DB4S, la herramienta “Revert Changes” (Revertir Cambios). Esta herramienta se encuentra al lado del botón “Write Changes” que usamos para guardar los cambios a la base de datos, sirve para descartar los últimos cambios que hicimos en la base de datos después de la última grabación. Al igual qu eel botón de grabar, se activa cuando se detecta algún cambio en la base de datos. El último cambio que hicimos fue borrar todos los registros de la tabla “productos” y aún no hemos grabado. Oprime el botón “Revert Changes”. aparecerá un diálogo de confirmación preguntando que si en verdad quieres deshacer los últimos cambios hechos a la base de datos después de la última vez que se guardó. Oprime el botón “Yes” (Sí).
Si consultas el contenido de la tabla productos, veras que todas las filas que se habían borrado, aparecen de nuevo y el botón “Revert Changes” se desactivará.
Otros motores de base de datos como ORACLE o Postgresql entre otras cuentan con la siguiente instrucción SQL:
TRUNCATE TABLE nombre-tabla;
Esta instrucción tiene la misma función que la instrucción DELETE que acabamos de ejecutar para borrar todos los registros de la tabla, sin embargo es más óptima y rápida para borrar todos los registros cuando la tabla contiene miles o millones de registros. El lenguaje SQL de SQLite no cuenta con esta instrucción.
Borrar una o varias filas de una tabla mediante SQL.
Para borrar uno o varios registros la vez se utiliza la siguiente sintaxis del comando DELETE:
DELETE FROM nombre-tabla WHERE condición.
Como se puede observar se agrega la cláusula “WHERE condición” a la sentencia DELETE. Veamos un ejemplo. Del listado del contenido de mi tabla producto en la pestaña “Browse Data” anotaré el valor de la columna “id_producto” de la primera fila que me aparece, en mi caso el valor es 1. Yo se de antemano que los valores de “id_producto” no se repiten, es decir, cada registro o fila tiene un valor “id_producto” diferente. En tu caso la primera fila puede tener un valor diferente, anota el valor “id_producto” que te aparezca en la primera fila.
Escribe y ejecuta la siguiente sentencia y graba la base de datos (reemplaza el valor de 1 por el valor que hayas anotado anteriormente):
Si todo va bien observaras el siguiente texto en el área de mensajes:
Lo subrayado con rojo, “1 rows affected”, indica que sólo una fila fue afectada por la ejecución del comando, es decir, sólo un registro fue borrado. Comprueba que el registro fue borrado. En mi caso, la fila con el valor 1 en la columna “id_producto” ya no aparece. Graba los cambios.
Ahora desliza hacia la derecha la barra de desplazamiento que se encuentra en la parte de abajo del área donde aparecen los datos de la pestaña “Browse Data” , hasta visualizar el campo “id_marca”. Este campo tiene un número que identifica la marca del producto, verás que en algunsa filas el valor de “id_marca” se repite. Esto indica que esos productos pertenecen a una misma marca. En mi caso el “id_marca” que se repite varias veces en el listado de registros es el número 39.
Para borrar todos los registros que tengan el valor 39 en la columna “id_marca” utilizaremos el siguiente comando SQL:
Ejecuta el comando y observa cuántas filas o registros fueron borradas. En mi caso fueron borradas 48 filas.
Revisa el contenido de la tabla y verás que ya no existen productos con valor 39 en la columna “id_marca”. Graba los cambios, tanto en la base de datos como en el archivo SQL.
En esta sección vimos el uso de la instrucción DELETE. En la sección siguiente veremos el uso de la instrucción SELECT para la consulta de registros de las tablas.
¡Hasta la próxima!