
En este tutorial veremos cómo insertar varias filas de datos en un solo query o consulta en SQL Server, hoy mismo me encuentro con una situación en la que tengo que insertar varias filas de datos con una sola consulta o SQL Query. Es necesario que en un solo INSERT
inserte “n” filas en SQL Server, lo primero que se me ocurrió fue crear un bucle para realizar las inserciones, pero investigue un poco y encontré una mejor solución.
En el tutorial anterior, aprendió a agregar una fila a la vez a una tabla mediante la instrucción INSERT.
¿Cómo insertar varios registros en un solo INSERT en SQL?
Para agregar varias filas a una tabla a la vez, use la siguiente forma de la instrucción INSERT:
INSERT INTO table_name (column_list)
VALUES
(value_list_1),
(value_list_2),
...
(value_list_n);
En esta sintaxis, en lugar de utilizar una sola lista de valores, utiliza varias listas de valores separadas por comas para la inserción.
El número de filas que puede insertar a la vez es de 1,000 filas con esta forma de la instrucción INSERT. Si desea insertar más filas que eso, debería considerar usar múltiples instrucciones INSERT, BULK INSERT o una tabla derivada.
Tenga en cuenta que esta sintaxis de INSERTAR varias filas solo es compatible con SQL Server 2008 o posterior.
Para insertar varias filas devueltas desde una instrucción SELECT, use la instrucción INSERT INTO SELECT.
SQL Server INSERTAR varias filas - ejemplos
Utilizaremos la tabla sales.promotions creada en el tutorial anterior para la demostración.
Si aún no ha creado la tabla sales.promotions, puede usar la siguiente instrucción CREATE TABLE:
CREATE TABLE sales.promotions (
promotion_id INT PRIMARY KEY IDENTITY (1, 1),
promotion_name VARCHAR (255) NOT NULL,
discount NUMERIC (3, 2) DEFAULT 0,
start_date DATE NOT NULL,
expired_date DATE NOT NULL
);
1) Ejemplo de inserción de varias filas
La siguiente instrucción inserta varias filas en la tabla sales.promotions:
INSERT INTO sales.promotions (
promotion_name,
discount,
start_date,
expired_date
)
VALUES
(
'2020 Estrada Web Group Promotion',
0.15,
'20190601',
'20190901'
),
(
'2019 Fall Promotion',
0.20,
'20191001',
'20191101'
),
(
'2019 Winter Promotion',
0.25,
'20191201',
'20200101'
);
El servidor SQL emitió el siguiente mensaje que indica que tres filas se han insertado correctamente.
(3 rows affected)
Verifiquemos la inserción ejecutando la siguiente consulta:
Aquí está la salida:
2) Insertar varias filas y devolver el resultado de lista insertada
Este ejemplo inserta tres filas en la tabla sales.promotions y devuelve la lista de id´s de promoción:
INSERT INTO
sales.promotions (
promotion_name, discount, start_date, expired_date
)
OUTPUT inserted.promotion_id
VALUES
('2020 Summer Promotion',0.25,'20200601','20200901'),
('2020 Fall Promotion',0.10,'20201001','20201101'),
('2020 Winter Promotion', 0.25,'20201201','20210101');
En este ejemplo, agregamos la cláusula OUTPUT con la columna que queremos devolver utilizando la sintaxis insert.column_name. Si desea devolver valores de varias columnas, puede usar la siguiente sintaxis:
OUTPUT inserted.column1, inserted.column2...
En este tutorial, aprendió a usar de otra forma la instrucción INSERT
de SQL Server para insertar varias filas en una tabla utilizando una instrucción INSERT.
Temas que te ayudaran en SQL Server:
- ¿Para qué sirven las sentencias SQL SELECT MIN y MAX?
- ¿Qué es SQL injection y Cómo funciona en los SQL Query?
- Cómo obtener las filas de una tabla que no están en otra tabla en SQL Server
- Cómo eliminar filas duplicadas en SQL Server, MySql y Oracle
- Cómo eliminar los espacios en blanco en SQL
- ¿Cómo agregar una columna a una tabla en SQL?