Ir al contenido principal

Eliminando Filas de una tabla

Para eliminar filas de una tabla, hay dos opciones: el comando DELETE y el comando TRUNCATE. DELETE es menos drástico, ya que puede ser revertido, un TRUNCATE no puede ser revertido. DELETE es mas controlable, ya que es posible elegir que filas eliminar, sin embargo un TRUNCATE siempre afectara el total de la tabla. DELETE es más lento y requiere más esfuerzo de la Base de Datos. TRUNCATE es virtualmente instantáneo.

Eliminando Filas con DELETE
DELETE puede eliminar filas de una sola tabla. La sintaxis es como sigue:

DELETE FROM table [ WHERE condición ] ;

Es el comando más simple de los comandos DML, si la clausula WHERE es omitida. En ese caso cada fila de la tabla será eliminada. La única complicación del comando es la condición. Esta puede ser una comparación de una columna con un literal.

Ejemplos:

-- EJEMPLO 1
DELETE FROM employees WHERE employee_id = 198;

Este ejemplo realiza una eliminación mediante la llave primaria. Esto nos garantiza que solo una fila será eliminada o nada.

-- EJEMPLO 2
DELETE FROM regions WHERE region_name LIKE 'R%';

En este ejemplo se utiliza una comparación con el operador LIKE y este va a eliminar todas las regiones que inicien con la letra R.

-- OTROS EJEMPLOS
delete from employees where department_id=&Which_department;
delete from employees where department_id is null;

La condición también puede utilizar subquerys. Estos deben ser escalares si está utilizando operadores de igual o pueden devolver varias filas pero si está utilizando el operador IN.

Si el comando DELETE no encuentra ninguna fila a eliminar, esto no es un error. El comando devolverá el mensaje "0 filas eliminadas" en lugar de un mensaje de error porque la declaración se completó con éxito, simplemente no se encontró nada que hacer.

Comentarios