PostgreSQL ELIMINAR Filas de la selección

⚡ Resumen inteligente

PostgreSQL La instrucción DELETE elimina una o más filas de una tabla, y si se combina con una cláusula WHERE, solo se seleccionan los registros que coinciden con una condición, mientras que si se omite WHERE se eliminan todas las filas de la tabla.

  • 📋 Sintaxis: La condición DELETE FROM table WHERE elimina las filas coincidentes, y RETURNING puede mostrar los datos eliminados.
  • 🎯 Una condición: Una única cláusula WHERE elimina solo las filas que cumplen una de las condiciones.
  • Dos condiciones: Al combinar dos pruebas con AND, se limita la eliminación a filas específicas.
  • 🔗 Cláusula EXISTS: La función EXISTS elimina filas de una tabla basándose en registros coincidentes de otra tabla.
  • 🖥️ pgAdmin: Las mismas consultas de eliminación se ejecutan visualmente a través del editor de consultas de pgAdmin.
  • 🤖 Seguridad de la IA: Los asistentes de IA añaden la cláusula WHERE correcta y emiten una advertencia antes de eliminar tablas completas.

PostgreSQL Eliminar filas de la selección

Eliminar consulta en PostgreSQL

El Declaración ELIMINAR in PostgreSQL se utiliza para eliminar uno o más registros de una tabla. Para eliminar solo las filas seleccionadas de una tabla, PostgreSQL Permite combinar la instrucción DELETE con la cláusula WHERE; de lo contrario, elimina todos los registros de la tabla.

PostgreSQL Sintaxis de consulta de eliminación

La instrucción DELETE se puede definir utilizando la siguiente sintaxis:

[ WITH [ RECURSIVE ] with-query [, ...] ]
DELETE FROM [ ONLY ] table-name [ * ] [ [ AS ] alias ]
    [ USING using-list ]
    [ WHERE condition(s) | WHERE CURRENT OF cursor-name]
    [ RETURNING * | output-expression [ [ AS ] output-name] [, ...] ]

Parámetros

Los siguientes parámetros están disponibles:

  • con-consultaLa cláusula WITH permite hacer referencia a una o más subconsultas por nombre dentro de la consulta DELETE.
  • nombre de la tabla: el nombre de la tabla de la que se eliminarán los registros.
  • alias: un sustituto del nombre de la tabla de destino.
  • lista de uso: expresiones de tabla que permiten utilizar columnas de otras tablas en la cláusula WHERE.
  • condiciones): opcional. Estas son las condiciones que deben cumplirse para que se eliminen los registros. Si no se proporciona esta sección, se eliminarán todos los registros con el nombre de tabla especificado.
  • nombre-cursor: el cursor que se utilizará en la condición WHERE CURRENT OF. La última fila obtenida por este cursor se eliminará.
  • expresión-salida: la expresión que será procesada y devuelta por la instrucción DELETE después de que se elimine cada fila.
  • nombre-salida: el nombre que se utilizará para la columna devuelta.

Tenga en cuenta que, dado que la instrucción DELETE elimina la fila completa, no es necesario especificar los nombres de las columnas.

PostgreSQL Eliminar consulta con una condición

La instrucción DELETE se puede usar con una sola condición, que se establece mediante la cláusula WHERE. Considere la tabla Precio con los siguientes datos:

Precio:

PostgreSQL Eliminar consulta con una condición

Eliminemos el registro con una identificación de 4:

DELETE FROM Price
WHERE id = 4;

El comando anterior elimina los registros cuyo ID sea 4. Confirmemos si la eliminación se realizó correctamente:

PostgreSQL Eliminar consulta con una condición

Se ha eliminado la fila con una identificación de 4.

Eliminar consulta con dos condiciones

El PostgreSQL La instrucción DELETE también puede aceptar dos condiciones. Estas dos condiciones deben combinarse mediante el operador AND. Utilizaremos la siguiente tabla:

Precio:

PostgreSQL Eliminar consulta con dos condiciones

Considere el ejemplo que se da a continuación:

DELETE FROM Price
WHERE id = 3
AND price = 300;

En el comando anterior, estamos eliminando la fila en la que el ID es 3 y el precio es 300. Ahora podemos consultar la tabla:

SELECT * FROM Price;

Esto devuelve lo siguiente:

PostgreSQL Eliminar consulta con dos condiciones

Se eliminó el registro con una identificación de 3 y un precio de 300.

PostgreSQL Consulta de eliminación mediante condición EXISTS

Con la función EXISTE En ciertas condiciones, puede hacer que la operación DELETE sea más compleja. A veces puede ser necesario eliminar registros de una tabla en función de los registros de otra tabla.

Dado que la cláusula FROM no permite listar registros de más de una tabla al realizar una eliminación, la cláusula EXISTS resulta muy útil. Tenemos las siguientes dos tablas:

Libro:

PostgreSQL Consulta de eliminación mediante condición EXISTS

Precio:

PostgreSQL Consulta de eliminación mediante condición EXISTS

Luego podemos ejecutar la siguiente consulta:

DELETE FROM Book
WHERE EXISTS
  (SELECT 1
    FROM Price
    WHERE Price.id = Book.id
    AND price < 250 );

El comando elimina las filas de la tabla Book que tienen un ID coincidente en la tabla Price con un precio inferior a 250.

La tabla Libro ahora es la siguiente:

PostgreSQL Consulta de eliminación mediante condición EXISTS

Se eliminó el registro con una identificación de 1.

Cómo eliminar una fila en PostgreSQL usando pgAdmin

Las mismas consultas de eliminación también se pueden ejecutar visualmente a través de la interfaz de pgAdmin, siguiendo los pasos que se indican a continuación:

Con una condición

Paso 1) Inicia sesión en tu cuenta de pgAdmin. Abre pgAdmin e inicia sesión en tu cuenta con tus credenciales.

Paso 2) Crea una base de datos de demostración.

  1. En la barra de navegación de la izquierda, haga clic en Bases de datos.
  2. Haga clic en Demostración.

Eliminar fila en PostgreSQL usando pgAdmin

Paso 3) Escriba la siguiente consulta en el editor de consultas:

DELETE FROM Price
WHERE id = 4;

Paso 4) Haga clic en el botón Ejecutar.

Eliminar fila en PostgreSQL usando pgAdmin

Paso 5) Vamos a comprobar si la fila fue eliminada:

Eliminar fila en PostgreSQL usando pgAdmin

Con dos condiciones

Paso 1) Inicie sesión en su cuenta pgAdmin.

Paso 2)

  1. En la barra de navegación de la izquierda, haga clic en Bases de datos.
  2. Haga clic en Demostración.

Eliminar fila en PostgreSQL usando pgAdmin

Paso 3) Escriba la consulta en el editor de consultas:

DELETE FROM Price
WHERE id = 3
AND price = 300;

Paso 4) Haga clic en el botón Ejecutar.

Eliminar fila en PostgreSQL usando pgAdmin

Paso 5) Comprobemos si la eliminación se realizó correctamente:

Eliminar fila en PostgreSQL usando pgAdmin

Usando la condición EXISTE

Paso 1) Inicie sesión en su cuenta pgAdmin.

Paso 2)

  1. En la barra de navegación de la izquierda, haga clic en Bases de datos.
  2. Haga clic en Demostración.

Eliminar fila usando la condición EXISTS en pgAdmin

Paso 3) Escriba la consulta en el editor de consultas:

DELETE FROM Book
WHERE EXISTS
  (SELECT 1
    FROM Price
    WHERE Price.id = Book.id
    AND price < 250 );

Paso 4) Haga clic en el botón Ejecutar.

Eliminar fila usando la condición EXISTS en pgAdmin

Paso 5) Comprobemos si la eliminación se realizó correctamente:

Eliminar fila usando la condición EXISTS en pgAdmin

Descargue la Base de Datos utilizada en este Tutorial

Preguntas Frecuentes

TRUNCATE elimina todas las filas al instante y restablece el almacenamiento, pero ignora la cláusula WHERE y los desencadenadores por fila. DELETE elimina las filas seleccionadas mediante una cláusula WHERE, activa los desencadenadores de fila y puede revertirse dentro de una transacción.

Agregue una cláusula USING: DELETE FROM member USING denylist WHERE member.phone = denylist.phone. Esta cláusula une la segunda tabla y elimina las filas coincidentes, lo que da el mismo resultado que EXISTS con una sintaxis de unión más clara.

RETURNING muestra columnas de las filas que se acaban de eliminar en la misma instrucción. Escriba DELETE FROM Price WHERE id = 4 RETURNING *, y PostgreSQL Devuelve los datos eliminados para que las aplicaciones puedan registrar o confirmar el cambio.

Sí. Envuelve la instrucción DELETE dentro de una transacción con BEGIN y luego ejecuta ROLLBACK para deshacerla o COMMIT para mantenerla. Hasta que confirmes la transacción, las filas eliminadas se pueden restaurar, lo que protege contra eliminaciones erróneas.

Conserva una copia por grupo usando la columna oculta ctid: DELETE FROM Price a USING Price b WHERE a.ctid < b.ctid AND a.id = b.id. Esto elimina las filas duplicadas conservando un único registro.

Primero, ejecute el mismo filtro como una sentencia SELECT, o abra una transacción con BEGIN y utilice RETURNING para inspeccionar las filas afectadas. RevVer el resultado de la cláusula WHERE antes de confirmar la transacción evita eliminar más filas de las previstas.

Los asistentes de IA traducen las reglas en lenguaje sencillo a una instrucción DELETE con la cláusula WHERE correcta, sugieren EXISTS o USING para eliminaciones entre tablas y señalan las instrucciones que carecen de una condición que borraría toda la tabla.

Sí. Un copiloto de IA revisa cada instrucción DELETE, advierte cuando no hay una cláusula WHERE presente y recomienda una transacción o una vista previa RETURNING, lo que reduce el riesgo de una eliminación accidental de toda la tabla.

Resumir este post con: