Eliminar (SQL) - Delete (SQL)

En el lenguaje de consulta estructurado ( SQL ) de la base de datos , la instrucción DELETE elimina uno o más registros de una tabla . Se puede definir un subconjunto para su eliminación mediante una condición; de lo contrario, se eliminan todos los registros. Algunos sistemas de administración de bases de datos (DBMS), como MySQL , permiten la eliminación de filas de varias tablas con una declaración DELETE (esto a veces se denomina DELETE de varias tablas).

Ejemplos de

Elimine filas de tartas de mesa donde el sabor de la columna es igual a Merengue de limón :

DELETE FROM pies
 WHERE flavor='Lemon Meringue';

Elimine filas en árboles , si el valor de la altura es menor que 80.

DELETE FROM trees
 WHERE height < 80;

Eliminar todas las filas de mytable :

DELETE FROM mytable;

Elimine filas de mytable usando una subconsulta en la condición where:

DELETE FROM mytable
 WHERE id IN (
       SELECT id
         FROM mytable2
      );

Elimina filas de mytable usando una lista de valores:

DELETE FROM mytable
 WHERE id IN (
       value1,
       value2,
       value3,
       value4,
       value5
      );

Ejemplo con tablas relacionadas

Suponga que existe una base de datos simple que enumera personas y direcciones. Más de una persona puede vivir en una dirección particular y una persona puede vivir en más de una dirección (este es un ejemplo de una relación de varios a varios ). La base de datos solo tiene tres tablas, persona , dirección y pa , con los siguientes datos:

persona
pid nombre
1 José
2 Beto
3 Ana
Dirección
ayuda descripción
100 2001 Main St.
200 35 Pico Blvd.
Pensilvania
pid ayuda
1 100
2 100
3 100
1 200

La tabla de padres relaciona la persona y las tablas de direcciones, mostrando que Joe, Bob y Ann viven en 2001 Main Street, pero Joe también tiene su residencia en Pico Boulevard.

Para eliminar a joe de la base de datos, se deben ejecutar dos eliminaciones:

 DELETE FROM person WHERE pid=1;
 DELETE FROM pa WHERE pid=1;

Para mantener la integridad referencial, los registros de Joe deben eliminarse tanto de la persona como del padre . Los medios por los cuales se mantiene la integridad pueden suceder de manera diferente en diferentes sistemas de administración de bases de datos relacionales. Podría ser que más allá de solo tener tres tablas, la base de datos también se haya configurado con un disparador para que cada vez que se elimine una fila de una persona, las filas vinculadas se eliminen de pa . Entonces la primera declaración:

 DELETE FROM person WHERE pid=1;

activaría automáticamente el segundo:

 DELETE FROM pa WHERE pid=1;

Comandos relacionados

Eliminar todas las filas de una tabla puede llevar mucho tiempo. Algunos DBMS ofrecen un comando TRUNCATE TABLE que funciona mucho más rápido, ya que solo altera los metadatos y, por lo general, no pierde tiempo imponiendo restricciones o activando desencadenantes.

DELETE solo borra las filas. Para eliminar una tabla por completo, se puede utilizar el comando DROP .

Referencias