DELETE SQL y TRUNCATE TABLE: ¿Cómo eliminar datos de una tabla en SQL Server?

IniciosqlDELETE SQL
DELETE SQL y TRUNCATE TABLE: ¿Cómo eliminar datos de una tabla en SQL Server?

by Juan Carlos García

27-Febr-2024

(2)

Suscribirme al canal:

Hola amigo / amiga, bienvenido a este nuevo post donde revisaremos y aprenderemos a eliminar datos de una tabla en SQL Server, todo esto lo haremos a través de la clausula DELETE SQL, la cual, tiene bastantes casos de uso dentro T-SQL, pero, en este post nos centraremos en aquellas consultas básicas y más comunes.

El objetivo es que al finalizar aprendas que: mediante el comando DELETE SQL, le indicamos al motor de base de datos que deseamos eliminar información en una tablas de una base de datos, además, podremos indicar las condiciones que se deben cumplir para llevar acabo dicho DELETE, pero, para no confundirte más, comencemos con este tema.

¡No te puedes perder las nuevas clases 🧐!

SQL

SQL

SQL: Curso gratuito de SQL ¿Qué es el lenguaje SQL? Sintaxis y sentencias básicas

CREATE, DROP Y ALTER DATABASE

CREATE, DROP Y ALTER DATABASE

¿Cómo crear (CREATE DATABASE), modificar (ALTER DATABASE) y eliminar (DROP DATABASE) una base de datos en SQL Server?

CREATE, DROP Y ALTER TABLE

CREATE, DROP Y ALTER TABLE

Manejo de tablas en SQL Server: CREATE TABLE, ALTER TABLE y DROP TABLE.

SELECT SQL

SELECT SQL

SELECT SQL SERVER: ¿Cómo seleccionar y consultar datos en SQL Server?

INSERT SQL

INSERT SQL

INSERT SQL SERVER: ¿Cómo insertar datos en una tabla desde SQL Server? Sintaxis y ejemplos.

JOIN SQL

JOIN SQL

JOIN SQL: ¿Qué son y cómo funcionan INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN y CROSS JOIN?

Update SQL

Update SQL

UPDATE SQL: ¿Cómo actualizar datos en una tabla en SQL Server?

DELETE SQL

DELETE SQL

DELETE SQL y TRUNCATE TABLE: ¿Cómo eliminar datos de una tabla en SQL Server?

Stored Procedure en SQL Server

Stored Procedure en SQL Server

Stored Procedure en SQL Server: ¿Cómo crear, modificar y ejecutar procedimientos almacenados en SQL Server?

Conexión Remota en SQL Server

Conexión Remota en SQL Server

Habilitar la Conexión Remota en SQL Server con VirtualBox

Connection String

Connection String

Connection String de SQL Server: Una Guía Completa para Establecer Conexiones con la Base de Datos

SQL Server SUBSTRING

SQL Server SUBSTRING

Guía Completa de SQL Server SUBSTRING: Uso y Ejemplos

CASE en SQL Server

CASE en SQL Server

Cláusula CASE en SQL Server: Uso y Ejemplos de Condicionales en Consultas

SQL Server REPLACE

SQL Server REPLACE

SQL Server REPLACE: Función para la manipulación de cadenas de texto

IF en SQL Server

IF en SQL Server

Sentencias IF, IF-ELSE e IF-EXISTS en SQL Server: Guía completa.

🧐 Autoevaluación: DELETE SQL

¿Qué suele ser mejor para eliminar todos los datos de una tabla?

¿Podemos establecer condicionales en un TRUNCATE TABLE?

¿La clausula DELETE soporta condicionales para eliminar datos específicos?

Para comprender esta clase a la perfección, te recomiendo que des un repaso a estos vídeos, no olvides en suscribirte a mi canal de YouTube:

⚠️ NOTA: recuerda que SQL Server utiliza el lenguaje Transact-SQL (T-SQL) el cual es una variante mejorada del lenguaje SQL, por lo tanto, el comando DELETE lo intentaré hacer lo más apegado a SQL, pero, si hay que profundizar, lo haré tomando en cuenta la sintaxis que proporciona Transact-SQL.

 

DELETE SQL: ¿Cómo eliminar datos de una tablas en SQL Server?

Eliminar la información de una tabla dentro de una base de datos puede llegar a ser algo complejo, ya que, crear consultas (querys) relacionados a DELETE, requiere conocer muchas clausulas que nos ayude a operar nuestros datos y, sobre todo, tener mucho cuidado al ejecutar este tipo de clausulas, por ejemplo:

  • Debemos conocer como funciona la clausula WHERE, FROM, etc., ya que, debemos comprender a la perfección como podemos agregar condicionales y saber seleccionar los datos correctos que deseamos eliminar.
  • Todo lo anterior ya lo hemos visto en clases pasadas, así que te recomiendo revisarlas sino estas muy familiarizado con el lenguaje SQL.

Hoy veremos varios ejemplos donde utilizaremos la clausula DELETE, donde, espero te quede claro la importancia, y cuidados que debes tener al utilizar este comando.

 

¿Qué es y para que sirve DELETE SQL?

A través de DELETE SQL podemos eliminar datos existentes dentro de una tabla de una base de datos.

Lo anterior quiere decir que, con DELETE SQL indicamos que deseamos eliminar información y, para ello, debemos especificar como mínimo:

  • La tabla que deseamos afectar (la tabla puede ser una tabla temporal, variable tipo tabla, vista o simplemente una tabla regular).
  • Las condiciones que se deben cumplir para poder llevar acabo la eliminación de datos, no obstante, podemos ejecutar un DELETE sin condicionales, sin embargo, esto muchas veces no es recomendable.

📌 NOTA: llevar acabo un DELETE es critico, ya que, los cambios no podrán ser revertidos a menos que tengas un respaldo de los mismo, como siempre, te recomiendo que tus practicas las lleves acabo en un ambiente de pruebas o desarrollo y NUNCA en un ambiente productivo, recuerda que este post es educativo y no debe considerarse una recomendación.

 

Sintaxis T-SQL: DELETE

[ WITH <common_table_expression> [ ,...n ] ]  
DELETE   
    [ TOP ( expression ) [ PERCENT ] ]   
    [ FROM ]   
    { { table_alias  
      | <object>   
      | rowset_function_limited   
      [ WITH ( table_hint_limited [ ...n ] ) ] }   
      | @table_variable  
    }  
    [ <OUTPUT Clause> ]  
    [ FROM table_source [ ,...n ] ]   
    [ WHERE { <search_condition>   
            | { [ CURRENT OF   
                   { { [ GLOBAL ] cursor_name }   
                       | cursor_variable_name   
                   }   
                ]  
              }  
            }   
    ]   
    [ OPTION ( <Query Hint> [ ,...n ] ) ]   
[; ]  
  
<object> ::=  
{   
    [ server_name.database_name.schema_name.   
      | database_name. [ schema_name ] .   
      | schema_name.  
    ]  
    table_or_view_name   
}  

 

De esta sintaxis podemos destacar los siguientes puntos:

  • FROM y table_or_view_name: especificamos la tabla de trabajo donde deseamos eliminar datos.
  • WHERE: condiciones que se deben cumplir para llevar acabo la eliminación de datos.

Como puedes observar, llevar acabo un DELETE, pareciera ser una consulta sencilla, no obstante, es una de las clausulas a la que le debes tomar mayor atención al ejecutarla y, debes, comprenderla a la perfección, además, siempre debes tener un respaldo de tus datos, más adelante haremos una clase de como puedes respaldar tus bases de datos, por lo pronto, recuerda siempre practicar en un ambiente de pruebas o desarrollo, donde, no haya riesgos de ejecutar este tipo de clausulas.

En los siguientes ejemplos crearemos consultas básicas y comunes que te serán de gran ayuda en la practica, así que pasemos a los ejemplos para que te quede más claro.

Las tablas y bases de datos que utilizaremos las hemos creado en las clases anteriores, así que si tienes dudas por favor revisa las siguientes clases:

 

DELETE SQL: ¿Cómo eliminar todos los datos de de una tabla en SQL Server?

Para eliminar todos los registros de una tabla en SQL podemos hacerlo a través de dos sentencias, la primera obviamente es DELETE, aunque por rendimiento, no es lo más optimo, pero aun así podemos hacerlo, solo basta con no indicar condicionales, es decir, no escribir ningún WHERE, por ejemplo:

USE ewebikdb;
DELETE FROM tipos_gps_2;

Como puedes observar, esto es muy fácil, no obstante, en una tabla con una gran cantidad de registros, esto no es lo mejor, ya que tardaría bastante y bloquearíamos la tabla durante todo el proceso, es por ello que existe una segunda alternativa para eliminar todos los datos de una tabla de forma simple, esto es a través de la clausula TRUNCATE TABLE.

 

¿Qué es TRUNCATE TABLE?

La clausula TRUNCATE TABLE nos permite eliminar todos los registros de una tabla.

 

Sintaxis T-SQL TRUNCATA TABLE

TRUNCATE TABLE   
    { database_name.schema_name.table_name | schema_name.table_name | table_name }  
    [ WITH ( PARTITIONS ( { <partition_number_expression> | <range> }   
    [ , ...n ] ) ) ]  
[ ; ]  
  
<range> ::=  
<partition_number_expression> TO <partition_number_expression>  

Como puedes observar, TRUNCATE TABLE tiene una sintaxis muy simple, solo debemos pasar el nombre de la tabla, y no requiere de ninguna condicional, ya que, la clausula afecta toda la tabla en general.

Si extrapolamos el ejemplo anterior, pero ahora aplicando TRUNCATE TABLE, quedaría de la siguiente manera:

USE ewebikdb;
TRUNCATE TABLE tipos_gps_2;

En ambos casos, ya sea, DELETE o TRUNCATE, llegamos al mismo resultado, pero, para el caso donde deseamos eliminar todos los datos de una tabla, TRUNCATE TABLE, suele ser la mejor opción, ahora pasemos con otros ejemplos.

 

TRUNCATE TABLE con llaves foráneas (FOREIGN KEY) SQL Server

Ahora, que pasa si la tabla a la que deseamos aplicar un TRUNCATE TABLE tiene una llave foránea (FOREIGN KEY), pues si intentamos aplicar el TRUNCATE TABLE marcara el siguiente error:

  • Cannot truncate table 'tipos_gps' because it is being referenced by a FOREIGN KEY constraint.

Obviamente tipos_gps es nuestra tabla, para este caso, lo primero que debemos eliminar es la referencia FOREIGN KEY y después aplicamos el TRUNCATE TABLE, la eliminación de dicha referencia la llevamos acabo a a través de DROP CONSTRAINT, como lo vimos en la clase de tablas, veamos el siguiente código:

USE ewebikdb;

ALTER TABLE	equipos_gps
DROP CONSTRAINT
fk_cod_gps;


TRUNCATE TABLE tipos_gps;

ALTER TABLE equipos_gps
ADD CONSTRAINT fk_cod_gps FOREIGN KEY (cod_gps)
      REFERENCES tipos_gps (cod_gps)
      ON DELETE CASCADE
      ON UPDATE CASCADE
;
  • Primero a través de ALTER TABLE y DROP CONSTRAINT, eliminamos la referencia FOREIGN KEY de nombre “fk_cod_gps” (fk_cod_gps la creamos en la clase de tablas en SQL).
  • Una ves eliminada la referencia, podemos aplicar nuestro TRUNCATE TABLE y ya no tendremos el error anterior.
  • Por ultimo, tenemos que volver a crear nuestra referencia “fk_cod_gps” o FOREIGN KEY a través de ADD CONSTRAINT.

Sin embargo, si intentáramos crear nuevamente nuestra referencia habría un conflicto, ya que, en la tabla equipos_gps, existen datos, pero como ya hemos truncado la tabla “tipos_gps”, los valores que existan en la columna cod_gps no pueden ser ligados a la tabla tipos_gps, ya que simplemente no existen, por lo que:

  • Primero tendríamos que eliminar los datos en equipos_gps
  • Y después volver a crear el FOREIGN KEY

Esto es un ejemplo de la importancia de usar llaves primaras y foráneas para cuidar la integridad de los datos, si tienes dudas de esto, por favor ve el vídeo para que comprendas a la perfección, ya que ahí lo hacemos paso a paso.

 

DELETE WHERE: ¿Cómo eliminar datos específicos de una tabla?

Ahora que ya sabes como eliminar todos los datos, seguramente te enfrentarás al caso, donde, sólo quieres eliminar ciertos datos de una tabla, para ello, la clausula DELETE permite establecer condicionales a través de WHERE.

También aprovecho para eliminar datos de equipos_gps y podamos volver a crear el FOREIGN KEY, así que hagamos un ejemplo:

USE ewebikdb;
DELETE FROM equipos_gps
WHERE
	cod_gps IN (1,2,3)
;
  • Como puedes observar, en este ultimo DELETE, sólo eliminamos los registros donde “cod_gps” es igual a 1,2 y 3.

El comando DELETE suele ser un comando bastante básico en cuanto a sintaxis, no obstante, sus efectos son de alto impacto, ya que, si no tienes un respaldo, podrías crear inconsistencias en tus datos al aplicar un DELETE de forma incorrecta, así que ten cuidado.

Excelente, hemos llegado al final de esta clase, hoy has aprendido:

  • Como eliminar todos los datos de una tabla, ya sea a través de DELETE o TRUNCATE TABLA, y que para este caso, TRUNCATE suele ser una mejor opción.
  • También aprendiste como especificar los datos que deseas eliminar a través de ciertas condicionales (WHERE).

Sin más, espero te haya gustado y nos vemos en el siguiente post.

🧐 Autoevaluación: DELETE SQL

¿Qué suele ser mejor para eliminar todos los datos de una tabla?

¿Podemos establecer condicionales en un TRUNCATE TABLE?

¿La clausula DELETE soporta condicionales para eliminar datos específicos?

Juan Carlos

Juan Carlos García

Desarrollador de software / SEO

Durante años he desarrollado plataformas dedicadas al rastreo satelital y varios sitios web que se encuentran en la primera página de Google, y hoy quiero compartir contigo lo que se en tecnologías como: Node JS, PHP, C# y Bases de datos.

Si quieres apoyarme sígueme en mis redes sociales y suscríbete a mi canal de YouTube.

EWebik

Diseño de páginas web y aplicaciones moviles.

© 2024 EWebik