# SQL DELETE: eliminar una o varias entradas de una tabla

SQL DELETE es el comando más sencillo si quieres eliminar una entrada de una tabla. Éste permite el uso de una condición WHERE. Es opcional, pero si se omite, se vaciará toda la tabla. \[TOC\]

## ¿Qué es SQL DELETE?

Cuando se trabaja con tablas, puede ocurrir que una entrada quede obsoleta y, por tanto, ya no deba figurar en el registro de datos. Para eliminar una entrada de este tipo, el [Structured Query Language](https://www.ionos.com/es-us/digitalguide/servidores/know-how/que-es-sql/) ofrece la sentencia SQL DELETE. Se utiliza para ordenar al sistema que **elimine una o más entradas específicas**. Para garantizar que solo se eliminan de la tabla los datos deseados, el uso de la sentencia WHERE es de gran importancia. Si omites este añadido, se eliminarán **todas las entradas** de la tabla. Por lo tanto, hay que tener mucho cuidado.

## Sintaxis y funcionalidad

En la sintaxis de SQL DELETE, la especificación está implícita en la adición `WHERE`. Por lo tanto, el [comando SQL](https://www.ionos.com/es-us/digitalguide/servidores/configuracion/comandos-sql/) siempre se forma de esta manera.

```sql 
DELETE FROM nombre_de_la_tabla  
WHERE condición; 
```

En la primera línea se inicia el comando propiamente dicho y se especifica la tabla en la que se va a realizar el borrado. **La segunda línea es opcional**. En ella se indica la condición que debe cumplir una fila para ser eliminada. Si omites esta parte, el sistema considerará todas las filas de la tabla y las eliminará.

## Eliminar una o varias entradas

La forma más sencilla de explicar cómo funciona SQL DELETE es con la ayuda de un ejemplo. Para ello, creamos una tabla ficticia llamada “Lista de clientes”. Ésta contiene diferentes entradas para los clientes de una empresa e incluye un número de cliente, el nombre y la ubicación:

<table>
  <thead>
    <tr>
      <th>Número de cliente</th>
      <th>Nombre</th>
      <th>Ciudad</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1427</td>
      <td>Santos</td>
      <td>Nueva York</td>
    </tr>
    <tr>
      <td>1377</td>
      <td>Johnson</td>
      <td>Los Ángeles</td>
    </tr>
    <tr>
      <td>1212</td>
      <td>Brown</td>
      <td>Los Ángeles</td>
    </tr>
    <tr>
      <td>1431</td>
      <td>Morales</td>
      <td>Houston</td>
    </tr>
    <tr>
      <td>1118</td>
      <td>Davis</td>
      <td>Miami</td>
    </tr>
  </tbody>
</table>

Si queremos eliminar al cliente Johnson de la lista, aplicamos la instrucción del siguiente modo:

```sql 
DELETE FROM Lista de clientes  
WHERE Número de cliente = 1377; 
```

Como solo el cliente Johnson tiene el número de cliente `1377`, la tabla se verá de la siguiente manera:

<table>
  <thead>
    <tr>
      <th>Número de cliente</th>
      <th>Nombre</th>
      <th>Ciudad</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1427</td>
      <td>Santos</td>
      <td>Nueva York</td>
    </tr>
    <tr>
      <td>1212</td>
      <td>Brown</td>
      <td>Los Ángeles</td>
    </tr>
    <tr>
      <td>1431</td>
      <td>Morales</td>
      <td>Houston</td>
    </tr>
    <tr>
      <td>1118</td>
      <td>Davis</td>
      <td>Miami</td>
    </tr>
  </tbody>
</table>

También podríamos seleccionar el apellido ‘Johnson’ como condición en `WHERE`. La **eliminación de varios clientes** funciona según un principio similar. En nuestro ejemplo, podríamos eliminar todas las entradas con la ubicación Los Ángeles. Este sería el código para ello:

```sql 
DELETE FROM Lista de clientes  
WHERE Ciudad = 'Los Ángeles'; 
```

Como dos entradas tienen este valor, la tabla quedaría así:

<table>
  <thead>
    <tr>
      <th>Número de cliente</th>
      <th>Nombre</th>
      <th>Ciudad</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1427</td>
      <td>Santos</td>
      <td>Nueva York</td>
    </tr>
    <tr>
      <td>1431</td>
      <td>Morales</td>
      <td>Houston</td>
    </tr>
    <tr>
      <td>1118</td>
      <td>Davis</td>
      <td>Miami</td>
    </tr>
  </tbody>
</table>

## Eliminar todas las entradas de una tabla

Si al usar el comando SQL DELETE omites la condición `WHERE`, eliminarás todas las entradas. La tabla **seguirá existiendo**, pero quedará vacía después de ejecutar el comando. Con nuestro ejemplo, esta sería la instrucción adecuada:

```sql 
DELETE FROM Lista de clientes; 
```

Por lo tanto, debes manejar este comando con cuidado.

## Eliminar una tabla completa con DROP TABLE

Si deseas eliminar toda la tabla, la sentencia `DROP TABLE` es la elección correcta. Esta es su sintaxis:

```sql 
DROP TABLE nombre_de_la_tabla; 
```

Para nuestro ejemplo, éste sería por tanto el código correspondiente:

```sql 
DROP TABLE Lista de clientes; 
```

## Comandos similares a SQL DELETE

Una alternativa a SQL DELETE es el comando `TRUNCATE TABLE`. Sin embargo, éste solo puede utilizarse para **eliminar todas las entradas de una tabla a la vez**. Además, no es compatible con una condición WHERE. Para crear tablas puedes utilizar [SQL CREATE TABLE](https://www.ionos.com/es-us/digitalguide/servidores/configuracion/sql-create-table/). Se recomienda realizar [copias de seguridad](https://www.ionos.com/es-us/digitalguide/servidores/seguridad/que-es-un-backup/) con regularidad para evitar que se borren datos de forma accidental. Para ello, utiliza [SQL BACKUP DATABASE](https://www.ionos.com/es-us/digitalguide/servidores/configuracion/sql-backup-database/).

Consejo  ¡Benefíciate del máximo rendimiento! Con el [Hosting SQL Server](https://www.ionos.com/es-us/cloud/sql-server-hosting "SQL Server Hosting de IONOS")de IONOS puedes elegir entre MSSQL, MySQL y MariaDB. Con todas las opciones dispondrás de asistencia, alta velocidad y una arquitectura de seguridad de primera clase.


This is a markdown version of: [https://www.ionos.com/es-us/digitalguide/servidores/configuracion/sql-delete/](https://www.ionos.com/es-us/digitalguide/servidores/configuracion/sql-delete/) for AI/LLM consumption.