Las tablas son uno de los componentes principales de cada sistema de base de datos relacional y SQL Server no es diferente. Las tablas almacenan los datos que el motor de base de datos relacional utiliza para consultas, informes y otras operaciones. En este artículo, te mostraré cómo modificar datos de una tabla de SQL Server utilizando T-SQL INSERT, T-SQL UPDATE, T-SQL DELETE y TRUNCATE.
En mi artículo anterior, SQL Server Esencial: Creación de Bases de Datos y Tablas, mostré cómo puedes crear bases de datos y tablas básicas de SQL Server. En este artículo, echaremos un vistazo a cómo poblamos esas tablas agregando, actualizando y eliminando filas.
I created the following table in my previous article. The syntax from this simple example DDL command shows that the table has three columns and each of them uses a different data type:
CREATE TABLE dbo.myLogins ( id INT NOT NULL PRIMARY KEY, name VARCHAR (20), login_date DATETIME );
En este artículo, veremos cómo agregar datos a una tabla usando la declaración INSERT, modificar datos en una tabla usando la declaración UPDATE y eliminar datos usando la declaración DELETE. Los datos en una tabla pueden ser eliminados de un par de formas diferentes, así que también cubriremos la diferencia entre usar la declaración DELETE y la declaración TRUNCATE.
Agregando filas usando T-SQL INSERT
Puedes agregar datos a una tabla de SQL Server de varias maneras:
- Puedes usar el Diseñador de Consultas interactivo de SQL Server Management Studio (SSMS) para agregar filas a una tabla.
- Puede usar PowerShell
- Puede utilizar el Asistente para importación y exportación de SQL Server o Integration Services para importar datos en una tabla
- Puede utilizar la herramienta de línea de comandos utilidad bcp.
Dicho esto, la forma más común de agregar datos a una tabla de SQL Server es mediante la instrucción INSERT de SQL. La instrucción INSERT de T-SQL agrega una o más filas a una tabla de SQL Server.
El siguiente ejemplo muestra cómo agregar una fila a la tabla de ejemplo que vio anteriormente:
INSERT INTO myLogins (id, name, login_date) VALUES (2, 'John Smith', '3-12-2023')
Aquí, la declaración INSERT INTO identifica la tabla que contendrá las filas insertadas. A continuación, dentro de los paréntesis, puedes ver una lista de las columnas que se utilizarán. Esta lista utiliza todas las columnas de la tabla, pero no es necesario hacerlo.
Finalmente, la cláusula VALUES proporciona los valores reales que se insertarán en la tabla. Como atajo, puedes omitir la lista de columnas en una declaración INSERT. Por ejemplo, la siguiente declaración INSERT realiza exactamente la misma función que el ejemplo anterior:
INSERT INTO myLogins VALUES (2, 'John Smith', '3-12-2023')

A menos que la columna esté definida utilizando la palabra clave NOT NULL, también puedes especificar explícitamente NULL en la lista de valores de una instrucción INSERT. Alternativamente, cuando no desees especificar un valor para una columna, puedes omitir esa columna de tus listas de columnas y valores, lo que hará que contenga un valor NULL.
Insertar filas de tabla a partir de los resultados de una consulta
Además de utilizar una instrucción INSERT de T-SQL estándar con una cláusula VALUES, también puedes agregar filas a una tabla como resultado de una consulta SQL. La consulta puede ser simple o compleja, y los resultados pueden ser insertados en la tabla de destino.
Por ejemplo, para copiar filas de la tabla myLogins2 a la tabla myLogins puedes usar una consulta como la que se muestra a continuación:
INSERT INTO myLogins (id, name, login_date) SELECT id, name, login_date FROM myLogins2 where id > 50.
Este ejemplo utiliza los resultados de la subconsulta de la tabla myLogins2 para insertar filas en la tabla myLogins. La instrucción INSERT inserta datos en las tres columnas de la tabla. La subconsulta utiliza una instrucción SELECT para seleccionar las mismas tres columnas de una segunda tabla llamada myLogins2.
Sin embargo, en este ejemplo, solo se devolverán y agregarán a la tabla myLogins aquellas filas con un valor de id mayor a 50. En este ejemplo simple, los nombres de las columnas son iguales, pero no es un requisito. Para que esto funcione, necesitas una o más filas en la tabla myLogins2 que tengan un valor de id mayor a 50 y que no estén presentes en la tabla myLogins.
Actualización de filas utilizando T-SQL UPDATE
Al igual que agregar filas a una tabla, hay varias formas de modificar las filas en una tabla. El Diseñador de Consultas de SSMS te permite actualizar filas de forma interactiva, pero también puedes usar PowerShell o Integration Services.
Sin embargo, la forma más común de modificar filas existentes en una tabla de base de datos es mediante la declaración SQL UPDATE. La declaración T-SQL UPDATE modifica los valores en una o más filas en una tabla de SQL Server.
Normalmente, querrías usar la instrucción UPDATE junto con una cláusula WHERE para especificar qué filas actualizar. Si no usas la cláusula WHERE, entonces se actualizarán todas las filas de la tabla. La siguiente lista muestra un ejemplo simple de cómo usar la instrucción T-SQL UPDATE para modificar los valores en una fila de la tabla myLogins.
UPDATE myLogins SET name = ‘John Smith’ WHERE id = 1
Como mencioné, si omitieras la cláusula WHERE, la columna de nombre de cada fila se establecería en el nuevo valor. Del mismo modo, si la cláusula WHERE incluye múltiples filas, como podría ser si usas los operadores < o >, entonces se actualizarían varias filas coincidentes.
Actualización de filas de tabla para los resultados de una consulta
Al igual que con la instrucción INSERT, también puedes actualizar filas en una tabla usando valores de otra tabla. En la siguiente lista, puedes ver cómo usar una actualización SQL desde otra tabla.
UPDATE myLogins SET myLogins.name = myLogins2.name FROM myLogins2 WHERE myLogins.id = myLogins2.id
Aquí puedes ver que la instrucción UPDATE actuará sobre la tabla myLogins, y que la columna de nombre se actualizará utilizando los valores de la tabla myLogins2 donde coincidan los valores en las columnas de id de las dos tablas.

Como podrás imaginar, hay muchas más opciones para utilizar la instrucción UPDATE. Tu consulta puede actualizar múltiples filas, puede ser más compleja utilizando joins, y puedes usar la cláusula TOP, la cláusula ORDER BY, Expresiones de tabla comunes (CTEs) y más para construir tus consultas de actualización.
Eliminación de filas con T-SQL DELETE y TRUNCATE
Como era de esperar, puedes eliminar filas de una tabla utilizando el Diseñador de Consultas interactivo de SSMS, PowerShell o Servicios de Integración. Sin embargo, el método más común es utilizar la instrucción SQL DELETE.
La instrucción DELETE de T-SQL elimina una o más filas de una tabla de SQL Server. Va sin decir, pero debes usar la instrucción DELETE con cuidado, ya que elimina permanentemente datos de tus tablas. Si cometes un error, es posible que necesites restaurar los datos desde un snapshot, el registro de transacciones o una copia de seguridad.
El siguiente ejemplo muestra cómo eliminar una fila de la tabla myLogins:
DELETE FROM myLogins WHERE id = 1
Aquí, puedes ver que se eliminará una fila en la tabla myLogins donde el valor de la columna id es igual a 1. También puedes eliminar múltiples filas cambiando la cláusula WHERE como en la siguiente instrucción, que elimina todas las filas donde el valor de id es mayor que 50.
DELETE FROM myLogins WHERE id > 50

Al igual que con la instrucción UPDATE, si omites la cláusula WHERE, se eliminarán todas las filas de la tabla. Por ejemplo, el siguiente ejemplo elimina todas las filas de la tabla myLogins:
DELETE FROM myLogins
Eliminación de filas de los resultados de una consulta
Al igual que con las instrucciones INSERT y UPDATE, la instrucción DELETE también es capaz de actuar desde los resultados de una consulta. El siguiente ejemplo muestra cómo puedes eliminar filas basadas en una consulta:
DELETE FROM myLogins WHERE login_date < '12-31-2022'
Aquí, se eliminarán todas las filas en la tabla myLogins que tengan una fecha anterior al 31/12/22 en la columna login_date.
I’ve been using simple examples throughout this article, but like the INSERT and UPDATE statements, your queries can be much more complex. You could use JOINs and multiple tables in the DELETE statement’s subquery, use clauses like TOP and ORDER BY, and more.
DELETE vs TRUNCATE
El comando DELETE de T-SQL es capaz de eliminar una o más filas de una tabla. Sin embargo, no es la única forma de eliminar filas de una tabla. Puede eliminar todas las filas en una tabla de SQL Server usando la declaración T-SQL TRUNCATE TABLE.
La declaración DELETE es una acción completamente registrada. Por otro lado, la declaración TRUNCATE TABLE es una acción mínimamente registrada. Esto significa que el comando TRUNCATE se ejecutará ligeramente mejor y se agregarán menos entradas al registro de transacciones. Puede ver un ejemplo de cómo usar TRUNCATE en la siguiente lista.
TRUNCATE TABLE myLogins
Esto eliminará todos los datos en la tabla myLogins.
Resumen
En este tutorial, vio cómo agregar, modificar y eliminar filas en una tabla de SQL Server usando las declaraciones T-SQL INSERT, UPDATE y DELETE. En cada caso, expliqué cómo trabajar con valores de una sola fila y cómo trabajar con múltiples filas como resultado de una subconsulta. Además, vio cómo las declaraciones DELETE y TRUNCATE son diferentes, aunque ambas pueden eliminar filas de una tabla esencialmente.
Artículo relacionado:
Source:
https://petri.com/sql-insert-update-delete-truncate/