DELETE
Elimina filas de tablas.
nota
El tamaño máximo de una instrucción SQL es de 16 MB.
Sintaxis
[ WITH [RECURSIVE] common_table_expression [, common_table_expression , ...] ] DELETE [ FROM ] { table_name | materialized_view_name } [ { USING } table_name, ... ] [ WHERE condition ]
Parámetros
- Cláusula WITH
-
Se trata de una cláusula opcional que especifica una o más common-table-expressions. Consulte Cláusula WITH.
- FROM
-
La palabra clave FROM es opcional, excepto cuando se especifica la cláusula USING. Las instrucciones
delete from event;
ydelete event;
son operaciones equivalentes que eliminan todas las filas de la tabla EVENT.nota
Para eliminar todas las filas de una tabla, TRUNCATE la tabla. TRUNCATE es mucho más eficiente que DELETE y no requiere VACUUM ni ANALYZE. No obstante, tenga en cuenta que TRUNCATE confirma la transacción en la que se ejecuta.
- table_name
-
Una tabla temporal o persistente. Solo el propietario de la tabla o un usuario con el privilegio DELETE en la tabla puede eliminar filas de la tabla.
Considere utilizar el comando TRUNCATE para las operaciones de eliminación incompletas rápidas en tablas grandes; para ello, consulte TRUNCATE.
nota
Después de eliminar una gran cantidad de filas de una tabla:
-
Limpie la tabla para recuperar espacio de almacenamiento y reordene las filas.
-
Analice la tabla para actualizar las estadísticas para el planificador de consultas.
-
- materialized_view_name
-
Una vista materializada. La instrucción DELETE funciona en una vista materializada utilizada para Ingesta de streaming a una vista materializada. Solo el propietario de la vista materializada o un usuario con privilegio DELETE sobre la vista materializada puede eliminar filas de ella.
No puede ejecutar DELETE en una vista materializada para la ingesta de streaming con una política de seguridad a nivel de fila (RLS) que no tenga el permiso IGNORE RLS concedido al usuario. Hay una excepción a esto: Si el usuario que realiza la operación DELETE tiene concedida la opción IGNORE RLS, esta se ejecuta correctamente. Para obtener más información, consulte Propiedad y administración de la política de RLS.
- USING table_name (nombre_de_tabla), ...
-
La palabra clave USING se utiliza para presentar una lista de tabla cuando se hace referencia a tablas adicionales en la condición de la cláusula WHERE. Por ejemplo, la siguiente instrucción elimina todas las filas de la tabla EVENT que cumplen con la condición de combinación sobre las tablas EVENT y SALES. La tabla SALES debe tener un nombre designado explícitamente en la lista FROM:
delete from event using sales where event.eventid=sales.eventid;
Si repite el nombre de la tabla de destino en la cláusula USING, la operación DELETE ejecuta una combinación automática. Puede usar una subconsulta en la cláusula WHERE en lugar de la sintaxis USING como una manera alternativa para escribir la misma consulta.
- WHERE condition
-
Cláusula opcional que limita la eliminación de filas a aquellas que coinciden con la condición. Por ejemplo, la condición puede ser una restricción en una columna, una condición de combinación o una condición basada en el resultado de una consulta. La consulta puede hacer referencia a tablas diferentes a la tabla de origen del comando DELETE. Por ejemplo:
delete from t1 where col1 in(select col2 from t2);
Si no se especifica una condición, se eliminan todas las filas de la tabla.
Ejemplos
Elimine todas las filas de la tabla CATEGORY:
delete from category;
Elimine las filas con valores CATID entre 0 y 9 de la tabla CATEGORY:
delete from category
where catid between 0 and 9;
Elimine las filas de la tabla LISTING cuyos valores SELLERID no existan en la tabla SALES:
delete from listing
where listing.sellerid not in(select sales.sellerid from sales);
Las siguientes dos consultas eliminan una fila de la tabla CATEGORY en función de una combinación con la tabla EVENT y una restricción adicional en la columna CATID:
delete from category
using event
where event.catid=category.catid and category.catid=9;
delete from category
where catid in
(select category.catid from category, event
where category.catid=event.catid and category.catid=9);
La siguiente consulta elimina todas las filas de la vista materializada mv_cities
. El nombre de vista materializada en este ejemplo es una muestra:
delete from mv_cities;