Microsoft SQL Server
INSERTAR EN
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