Resumen: en este tutorial, aprenderá a utilizar la sentencia PostgreSQL DELETE para eliminar datos de una tabla.
Introducción a la sentencia DELETE de PostgreSQL
La sentencia PostgreSQL DELETE
permite eliminar una o varias filas de una tabla.
A continuación se muestra la sintaxis básica de la sentencia DELETE
:
Code language: SQL (Structured Query Language) (sql)DELETE FROM table_nameWHERE condition;
En esta sintaxis:
- Primero, especifique el nombre de la tabla de la que desea eliminar datos después de las palabras clave
DELETE FROM
. - En segundo lugar, utilice una condición en la cláusula
WHERE
para especificar qué filas de la tabla desea eliminar.
La cláusula WHERE
es opcional. Si se 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 la(s) fila(s) eliminada(s) al cliente, se utiliza la cláusula RETURNING
de la siguiente manera:
Code language: SQL (Structured Query Language) (sql)DELETE FROM table_nameWHERE conditionRETURNING (select_list | *)
El asterisco (*
) permite devolver todas las columnas de la fila eliminada desde el table_name
.
Para devolver columnas específicas, se especifican después de la palabra clave RETURNING
.
Nota que la sentencia DELETE
sólo elimina datos de una tabla. No modifica la estructura de la tabla. Si quieres cambiar la estructura de una tabla, como por ejemplo eliminar una columna, debes utilizar la sentencia ALTER TABLE
.
Ejemplos de sentencias DELETE de PostgreSQL
Creemos una tabla de ejemplo para la demostración.
Las siguientes sentencias crean una nueva tabla llamada links
e insertan algunos datos de ejemplo:
Code language: SQL (Structured Query Language) (sql)DROP TABLE IF EXISTS links;CREATE TABLE links ( id serial PRIMARY KEY, url varchar(255) NOT NULL, name varchar(255) NOT NULL, description varchar(255), rel varchar(10), last_update date DEFAULT now());INSERT INTO links VALUES ('1', 'https://www.postgresqltutorial.com', 'PostgreSQL Tutorial', 'Learn PostgreSQL fast and easy', 'follow', '2013-06-02'), ('2', 'http://www.oreilly.com', 'O''Reilly Media', 'O''Reilly Media', 'nofollow', '2013-06-02'), ('3', 'http://www.google.com', 'Google', 'Google', 'nofollow', '2013-06-02'), ('4', 'http://www.yahoo.com', 'Yahoo', 'Yahoo', 'nofollow', '2013-06-02'), ('5', 'http://www.bing.com', 'Bing', 'Bing', 'nofollow', '2013-06-02'), ('6', 'http://www.facebook.com', 'Facebook', 'Facebook', 'nofollow', '2013-06-01'), ('7', 'https://www.tumblr.com/', 'Tumblr', 'Tumblr', 'nofollow', '2013-06-02'), ('8', 'http://www.postgresql.org', 'PostgreSQL', 'PostgreSQL', 'nofollow', '2013-06-02');
Aquí está el contenido de la tabla links
:
Code language: SQL (Structured Query Language) (sql)SELECT * FROM links;
1) Utilizar DELETE de PostgreSQL para eliminar una fila de la tabla
La siguiente sentencia utiliza la sentencia DELETE
para borrar una fila con el id 8 de la tabla links
:
Code language: SQL (Structured Query Language) (sql)DELETE FROM linksWHERE id = 8;
La sentencia devuelve 1 indicando que se ha eliminado una fila:
Code language: Shell Session (shell)DELETE 1
La siguiente sentencia utiliza la sentencia DELETE
para borrar la fila con id 10:
Code language: SQL (Structured Query Language) (sql)DELETE FROM linksWHERE id = 10;
Como la fila con id 10 no existe, la sentencia devuelve 0:
Code language: Shell Session (shell)
2) Utilizar PostgreSQL DELETE para eliminar una fila y devolver la fila eliminada
La siguiente sentencia elimina la fila con id 7 y devuelve la fila eliminada al cliente:
Code language: SQL (Structured Query Language) (sql)DELETE FROM linksWHERE id = 7RETURNING *;
PostgreSQL devuelve la siguiente fila eliminada:
3) Uso de PostgreSQL DELETE para eliminar varias filas de la tabla
La siguiente sentencia elimina dos filas de la tabla links
y devuelve los valores de la columna id
de las filas eliminadas:
Code language: SQL (Structured Query Language) (sql)DELETE FROM linksWHERE id IN (6,5)RETURNING *;
Salida:
4) 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 eliminar todas las filas de la tabla links
:
Code language: SQL (Structured Query Language) (sql)DELETE FROM links;
La tabla links
ahora está vacía.
Resumen
- Utiliza la sentencia
DELETE FROM
para eliminar una o varias filas de una tabla. - Utiliza la cláusula
WHERE
para especificar qué filas se van a eliminar. - Utilice la cláusula
RETURNING
para devolver las filas eliminadas. - ¿Ha sido útil este tutorial?
- SíNo
.