Buscar..


Introducción

La instrucción INSERT INTO se utiliza para insertar nuevos registros en una tabla.

INSERTAR la tabla Hello World INTO

CREATE TABLE MyTableName
(
    Id INT,
    MyColumnName NVARCHAR(1000)
)
GO

INSERT INTO MyTableName (Id, MyColumnName)
VALUES (1, N'Hello World!')
GO    

INSERTAR en columnas específicas

Para realizar una inserción en columnas específicas (a diferencia de todas ellas), debe especificar las columnas que desea actualizar.

INSERT INTO USERS (FIRST_NAME, LAST_NAME)
VALUES ('Stephen', 'Jiang');

Esto solo funcionará si las columnas que no enumeró son anulables, identidad, tipo de datos de marca de tiempo o columnas computadas; o columnas que tienen una restricción de valor por defecto. Por lo tanto, si alguno de ellos no es anulable, no tiene identidad, marca de tiempo, no computado, no tiene valores de valores predeterminados ... entonces, intentar este tipo de inserción activará un mensaje de error que le indicará que debe proporcionar un valor para el (los) campo (s) aplicable (s).

INSERTAR múltiples filas de datos

Para insertar varias filas de datos en SQL Server 2008 o posterior:

INSERT INTO USERS VALUES
(2, 'Michael', 'Blythe'),
(3, 'Linda', 'Mitchell'),
(4, 'Jillian', 'Carson'),
(5, 'Garrett', 'Vargas');

Para insertar varias filas de datos en versiones anteriores de SQL Server, use "UNION ALL" así:

INSERT INTO USERS (FIRST_NAME, LAST_NAME)
SELECT 'James', 'Bond' UNION ALL
SELECT 'Miss', 'Moneypenny' UNION ALL
SELECT 'Raoul', 'Silva'

Tenga en cuenta que la palabra clave "INTO" es opcional en las consultas INSERT. Otra advertencia es que el servidor SQL solo admite 1000 filas en un INSERT para que tenga que dividirlas en lotes.

INSERTAR una sola fila de datos

Una sola fila de datos se puede insertar de dos maneras:

INSERT INTO USERS(Id, FirstName, LastName)
VALUES (1, 'Mike', 'Jones');

O

INSERT INTO USERS
VALUES (1, 'Mike', 'Jones');

Tenga en cuenta que la segunda instrucción de inserción solo permite los valores exactamente en el mismo orden que las columnas de la tabla, mientras que en la primera inserción, el orden de los valores se puede cambiar como:

INSERT INTO USERS(FirstName, LastName, Id)
VALUES ('Mike', 'Jones', 1);

Use SALIDA para obtener el nuevo ID

Al INSERTAR, puede usar OUTPUT INSERTED.ColumnName para obtener valores de la fila recién insertada, por ejemplo, el Id. Recién generado: útil si tiene una columna de IDENTITY o cualquier tipo de valor predeterminado o calculado.

Al llamar a este programa (por ejemplo, desde ADO.net), lo trataría como una consulta normal y leería los valores como si hubiera hecho una declaración SELECT .

-- CREATE TABLE OutputTest ([Id] INT NOT NULL PRIMARY KEY IDENTITY, [Name] NVARCHAR(50))

INSERT INTO OutputTest ([Name])
OUTPUT INSERTED.[Id]
VALUES ('Testing')

Si se requiere el ID de la fila recientemente agregada dentro del mismo conjunto de consulta o procedimiento almacenado.

-- CREATE a table variable having column with the same datatype of the ID

DECLARE @LastId TABLE ( id int);

INSERT INTO OutputTest ([Name])
OUTPUT INSERTED.[Id] INTO @LastId
VALUES ('Testing')

SELECT id FROM @LastId

-- We can set the value in a variable and use later in procedure

DECLARE @LatestId int = (SELECT id FROM @LastId)

INSERTAR desde SELECCIONE los resultados de la consulta

Para insertar datos recuperados de la consulta SQL (filas simples o múltiples)

INSERT INTO Table_name (FirstName, LastName, Position)
SELECT FirstName, LastName, 'student' FROM Another_table_name

Tenga en cuenta que 'alumno' en SELECT es una constante de cadena que se insertará en cada fila.

Si es necesario, puede seleccionar e insertar datos de / en la misma tabla



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow