La sentencia DELETE
de PostgreSQL permite borrar una o más filas de una tabla.
A continuación se muestra la sintaxis básica de la sentencia DELETE
:
DELETE FROM table_name
WHERE condition;Code language: SQL (Structured Query Language) (sql)
En esta sintaxis:
- En primer lugar, especifique el nombre
(nombre_tabla
) de la tabla de la que desea eliminar datos después de las palabras claveDELETE FROM
. - En segundo lugar, especifique una condición en la cláusula
WHERE
para determinar qué filas eliminar.
La cláusula WHERE
es opcional. Si omite la cláusula WHERE
, la sentencia DELETE
eliminará todas las filas de la tabla.
La sentencia DELETE
devuelve el número de filas eliminadas. Devuelve cero si la sentencia DELETE
no ha eliminado ninguna fila.
Para devolver al cliente la(s) fila(s) eliminada(s), utilice la cláusula RETURNING
como se indica a continuación:
DELETE FROM table_name
WHERE condition
RETURNING (select_list | *)Code language: SQL (Structured Query Language) (sql)
El asterisco(*
) permite devolver todas las columnas de la(s) fila(s) eliminada(s). Si desea devolver los valores de una columna específica, también puede especificarlos después de la palabra clave RETURNING
.
Por ejemplo, la siguiente sentencia borra filas de una tabla y devuelve los valores del id de las filas borradas:
DELETE FROM table_name
WHERE condition
RETURNING id;Code language: SQL (Structured Query Language) (sql)
Si elimina datos de una tabla basándose en datos de otra tabla, puede utilizar la sentencia DELETE JOIN.
Para eliminar datos que tienen una relación de clave externa, utilice la opción ON DELETE CASCADE
.
Tenga en cuenta que la sentencia DELETE
elimina datos de una tabla pero no modifica la estructura de la misma. Si desea cambiar la estructura de una tabla, como eliminar una columna, debe utilizar la sentencia ALTER TABLE
.
Ejemplos de sentencias DELETE en PostgreSQL¶
Exploremos algunos ejemplos de uso de la sentencia DELETE
.
Creación de una tabla de ejemplo¶
Las siguientes sentencias crean una nueva tabla llamada todos
e insertan algunos datos de ejemplo:
CREATE TABLE todos (
id SERIAL PRIMARY KEY,
title VARCHAR(255) NOT NULL,
completed BOOLEAN NOT NULL DEFAULT false
);
INSERT INTO todos (title, completed) VALUES
('Learn basic SQL syntax', true),
('Practice writing SELECT queries', false),
('Study PostgreSQL data types', true),
('Create and modify tables', false),
('Explore advanced SQL concepts', true),
('Understand indexes and optimization', false),
('Backup and restore databases', true),
('Implement transactions', false),
('Master PostgreSQL security features', true),
('Build a sample application with PostgreSQL', false);
SELECT * FROM todos;Code language: SQL (Structured Query Language) (sql)
Salida:
id | title | completed
----+--------------------------------------------+-----------
1 | Learn basic SQL syntax | t
2 | Practice writing SELECT queries | f
3 | Study PostgreSQL data types | t
4 | Create and modify tables | f
5 | Explore advanced SQL concepts | t
6 | Understand indexes and optimization | f
7 | Backup and restore databases | t
8 | Implement transactions | f
9 | Master PostgreSQL security features | t
10 | Build a sample application with PostgreSQL | f
(10 rows)Code language: SQL (Structured Query Language) (sql)
Uso de PostgreSQL DELETE para eliminar una fila de la tabla¶
La siguiente sentencia utiliza la sentencia DELETE
para borrar una fila con el id 1 de la tabla todos
:
DELETE FROM todos
WHERE id = 1;Code language: SQL (Structured Query Language) (sql)
La sentencia devuelve 1 indicando que se ha borrado una fila:
DELETE 1
La siguiente sentencia utiliza la sentencia DELETE
para eliminar la fila con id 100:
DELETE FROM todos
WHERE id = 100;Code language: SQL (Structured Query Language) (sql)
Como la fila con el id 100 no existe, la sentencia DELETE
devuelve 0:
DELETE 0
Uso de PostgreSQL DELETE para eliminar una fila y devolver la fila eliminada¶
La siguiente sentencia utiliza la sentencia DELETE
para borrar la fila con id 2 y devolver la fila borrada al cliente:
DELETE FROM todos
WHERE id = 2
RETURNING *;Code language: SQL (Structured Query Language) (sql)
PostgreSQL devuelve la siguiente fila eliminada:
id | title | completed
----+---------------------------------+-----------
2 | Practice writing SELECT queries | f
(1 row)
Uso de PostgreSQL DELETE para eliminar varias filas de la tabla¶
La siguiente sentencia utiliza la sentencia DELETE
para borrar todas las filas de la tabla todos
con el valor en la columna completado true
y devolver las filas borradas:
DELETE FROM todos
WHERE completed = true
RETURNING *;Code language: SQL (Structured Query Language) (sql)
Salida:
id | title | completed
----+-------------------------------------+-----------
3 | Study PostgreSQL data types | t
5 | Explore advanced SQL concepts | t
7 | Backup and restore databases | t
9 | Master PostgreSQL security features | t
(4 rows)
DELETE 4
Ha borrado cuatro filas de la tabla todos
.
Uso de PostgreSQL DELETE para eliminar todas las filas de la tabla¶
La siguiente sentencia utiliza la sentencia DELETE
sin una cláusula WHERE
para borrar todas las filas de la tabla todos
:
DELETE FROM todos;Code language: SQL (Structured Query Language) (sql)
Salida:
DELETE 4
La tabla todos
ahora está vacía.
Resumen¶
- Utilice la sentencia
DELETE FROM
para eliminar una o varias filas de una tabla. - Utilice la cláusula
WHERE
para especificar las filas que desea eliminar. - Utilice la cláusula
RETURNING
para devolver las filas eliminadas.