Поиск…


Вступление

Инструкция INSERT INTO используется для вставки новых записей в таблицу.

Таблица INSERT Hello World INTO

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

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

ВСТАВИТЬ на определенные столбцы

Чтобы сделать вставку для определенных столбцов (в отличие от всех), вы должны указать столбцы, которые хотите обновить.

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

Это будет работать только в том случае, если столбцы, которые вы не указали, имеют значение NULL, идентификатор, тип данных timestamp или вычисленные столбцы; или столбцы, которые имеют ограничение по умолчанию. Поэтому, если какой-либо из них не является нулевым, неидентифицированным, не timestamp, не вычисленным, не по умолчанию столбцами с оценкой ... затем попытка такого типа вставки вызовет сообщение об ошибке, сообщающее вам, что вы должны предоставить значение для применимых полей.

Вставить несколько строк данных

Вставка нескольких строк данных в SQL Server 2008 или более поздних версиях:

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

Чтобы вставить несколько строк данных в более ранние версии SQL Server, используйте «UNION ALL» следующим образом:

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

Обратите внимание, что ключевое слово «INTO» является необязательным в запросах INSERT. Еще одно предупреждение состоит в том, что SQL-сервер поддерживает только 1000 строк в одном INSERT, поэтому вам приходится разбивать их партиями.

ВСТАВИТЬ одну строку данных

Одна строка данных может быть вставлена ​​двумя способами:

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

Или же

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

Обратите внимание, что второй оператор insert только позволяет значениям точно в том же порядке, что и столбцы таблицы, тогда как в первой вставке порядок значений можно изменить следующим образом:

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

Используйте OUTPUT для получения нового идентификатора

Когда INSERTING вы можете использовать OUTPUT INSERTED.ColumnName для получения значений из недавно вставленной строки, например, вновь созданного Id - полезно, если у вас есть столбец IDENTITY или любое значение по умолчанию или вычисленное значение.

При программном вызове этого (например, с ADO.net) вы рассматриваете его как обычный запрос и читаете значения так, как если бы вы сделали SELECT состояние.

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

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

Если идентификатор недавно добавленной строки требуется внутри одного и того же набора запросов или хранимой процедуры.

-- 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)

INSERT из результатов запроса SELECT

Чтобы вставить данные, полученные из SQL-запроса (одно или несколько строк)

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

Примечание. «Student» в SELECT - это строковая константа, которая будет вставлена ​​в каждую строку.

При необходимости вы можете выбрать и вставить данные из / в ту же таблицу



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow