Cómo borrar datos con consultas SQL

Aprende a eliminar registros de base de datos de forma básica y avanzada.

sql delete consultas sql

Una vez que entiendes y conoces las consultas SQL para insertar datos en tablas y actualizarlos con UPDATE, se necesita saber cómo borrar registros almacenados.

Borrar datos con SQL es bastante sencillo, tanto, que puedo asegurarte que es incluso peligroso. Al igual que ocurría con las consultas para actualizar, si no nos andamos con precaución al realizar borrados, podemos acabar con tablas completamente vacías.

Para que aprendas correctamente todas las facetas, usos y claves de borrar filas en tablas, a continuación, voy recorrer, punto por punto, los siguientes apartados:

  • Cuál es la consulta SQL para borrar datos.
  • Partes de una consulta DELETE.
  • Ejemplos de cómo borrar registros con SQL.
  • Conceptos avanzados sobre las consultas SQL DELETE.
  • Ejemplos de borrado con subconsultas y cláusulas EXIST o IN.

Consulta SQL para borrar registros

En SQL existe una sentencia para cada cometido, y borrar datos no es una excepción.

La sentencia DELETE será la que utilizaremos cuando queramos eliminar ciertos registros o vaciar por completo una tabla.

Esta sentencia de borrado completa un trio perfecto con INSERT y UPDATE para un control total sobre la información almacenada en nuestras bases de datos.

El esquema más básico de una consulta DELETE es el siguiente:

DELETE FROM tabla;

Claro que, si hacemos uso de esta versión sin más, eliminaremos todos los registros de una tabla.

Partes de una consulta DELETE

La estructura de cualquier consulta DELETE es sencilla, tan solo debes tener claro que normalmente siempre acompañaremos un DELETE en SQL de una cáusula WHERE que nos ayude a borrar solo los registros deseados.

Una consulta DELETE completa tendría la siguiente forma:

DELETE FROM tabla WHERE condicion1 [condicion2] [condicionN];

Como ves puedes indicar tantas condiciones como necesites para realizar una selección tan compleja como necesites.

Además, recuerda que la sentencia WHERE al igual que en cualquier otra consulta debe tener las diferentes condiciones unidas por AND u OR.

Ejemplos de uso para borrar filas de tablas con DELETE SQL

Ya hemos visto la estructura de una sentencia DELETE pero ¿Cómo serían unas consultas DELETE de verdad? Vamos a verlo de la mejor forma: con ejemplos.

Los ejemplos SQL siguientes voy a hacerlos sobre una tabla creada con la siguiente sentencia CREATE:

CREATE pieza_ordenador (
	id INT,
	nombre VARCHAR(100) NOT NULL,
	tipo VARCHAR(50) NOT NULL,
	fabricante VARCHAR(50) NOT NULL,
	fecha_fabricacion DATE,
	fecha_garantia DATE,
	num_reparaciones INT DEFAULT 0
);

¿Ya tienes clara la estructura de la tabla? Si es así sigamos con los ejemplos, sino te recomiendo que te leas nuestro tutorial sobre creación de tablas o el de creación de tablas de forma avanzada.

Ejemplo 1: borrar todas las piezas que su fecha de garantía ya pasó.

DELETE FROM pieza_ordenador
WHERE fecha_garantia < CURDATE();

Este borrado se ejecuta sobre todas las piezas con fecha de garantía menor a la fecha actual, esta fecha es devuelta por la función de base de datos CURDATE() que devuelve la fecha actual en el formato YYYY-MM-DD.

Ejemplo 2: borrado de todas las filas del fabricante ‘intel’

DELETE FROM pieza_ordenador
WHERE fabricante = ‘intel’;

Ejemplo 3: eliminar todas las filas que son del fabricante ‘amd’ y con fecha de fabricación anterior al 2016.

DELETE FROM pieza_ordenador
WHERE fabricante = ‘amd’ AND fecha_fabricacion < 2016-01-01;

Ejemplo 4: borrar todas las filas que han sido reparadas más de 2 veces, que son del tipo ‘tarjeta gráfica’ y que no es de fabricante ‘amd’, o aquellas reparadas más de 4 veces.

DELETE FROM pieza_ordenador
WHERE ( num_reparaciones > 2 AND tipo = ‘tarjeta gráfica’ AND fabricante <> ‘amd’ ) OR num_reparaciones > 4;

Usos avanzados de la sentencia DELETE

Como las consultas DELETE de SQL permiten acompañarlas de la cláusula WHERE también es posible realizar todos los tipos de WHERE que conozcas.

En la cláusula WHERE podremos utilizar subconsultas y clausulas como el EXISTS o el IN para seleccionar registros de una forma mucho más compleja y configurable.

Introducir esta mayor complejidad en las consultas se vuelve vital cuando nuestras tablas contienen relaciones entre ellas y queremos realizar condiciones relacionándolas.

Vamos a crear ahora una tabla compra relacionada con la tabla anterior con el siguiente CREATE:

CREATE TABLE compra (
	id INT PRIMARY KEY AUTO_INCREMENT,
		id_pieza_ordenador INT REFERENCES pieza_ordenador (id),
	fecha_compra DATE,
	precio FLOAT
);

Ahora voy a mostrarte varios ejemplos de DELETE SQL con subconsultas y cláusulas EXISTS e IN.

Ejemplo 1 con EXISTS: borrado de las compras de las cuales la pieza es ‘amd’.

DELETE FROM compra
WHERE EXISTS 
		( SELECT *
		FROM pieza_ordenador
		WHERE compra.id_pieza_ordenador = pieza_ordeandor.id AND fabricante = ‘amd’);

Ejemplo 2 de DELETE con clausula IN: borrado de todas las piezas que se compraron por un precio entre 20 y 50 euros:

DELETE FROM pieza_ordenador

WHERE id IN ( SELECT id_pieza_ordenador FROM compra WHERE precio > 20 AND precio < 50 );

Sobre el autor

Javier Gómez Redactor en Srcodigofuente.es

Javier Gómez

Ingeniero técnico en informática de gestión. Desarrollador web freelance y profesor de desarrollo web a partes iguales. Testarudo autodidacta, creativo, perfeccionista y alma libre.

Cargando comentarios

Utilizamos "cookies" para información estadística. Si continúas navegando aceptas su uso.