Szukaj…


Wprowadzenie

Instrukcja INSERT INTO służy do wstawiania nowych rekordów w tabeli.

INSERT Tabela Hello World INTO

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

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

WSTAW w określonych kolumnach

Aby wstawić określone kolumny (w przeciwieństwie do wszystkich), musisz określić kolumny, które chcesz zaktualizować.

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

Będzie to działać tylko wtedy, gdy kolumny, których nie wymieniono, mają wartość zerową, tożsamość, typ danych znacznika czasu lub kolumny obliczane; lub kolumny, które mają domyślne ograniczenie wartości. Dlatego jeśli którykolwiek z nich nie ma wartości zerowej, nie jest identyfikowalny, nie ma znacznika czasu, nie jest obliczany, nie ma wartości domyślnej kolumny ... wówczas próba wstawienia tego rodzaju spowoduje wyświetlenie komunikatu o błędzie informującego, że należy podać wartość dla odpowiednich pól.

WSTAW wiele wierszy danych

Aby wstawić wiele wierszy danych w SQL Server 2008 lub nowszym:

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

Aby wstawić wiele wierszy danych we wcześniejszych wersjach SQL Server, użyj „UNION ALL” w następujący sposób:

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

Uwaga: słowo kluczowe „INTO” jest opcjonalne w zapytaniach INSERT. Kolejnym ostrzeżeniem jest to, że SQL Server obsługuje tylko 1000 wierszy w jednym WSTAWIU, więc musisz podzielić je na partie.

WSTAW pojedynczy wiersz danych

Pojedynczy wiersz danych można wstawić na dwa sposoby:

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

Lub

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

Pamiętaj, że druga instrukcja wstawiania zezwala tylko na wartości w dokładnie takiej samej kolejności jak kolumny tabeli, podczas gdy w pierwszej wstawce kolejność wartości można zmienić w następujący sposób:

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

Użyj WYJŚCIA, aby uzyskać nowy identyfikator

Podczas WSTAWIANIA możesz użyć OUTPUT INSERTED.ColumnName WSTAWIONE.ColumnName, aby uzyskać wartości z nowo wstawionego wiersza, na przykład nowo wygenerowanego Id - przydatne, jeśli masz kolumnę IDENTITY lub jakąkolwiek wartość domyślną lub obliczoną.

Programowo wywołując to (np. Z ADO.net), traktujesz to jako normalne zapytanie i odczytujesz wartości tak, jakbyś dokonał SELECT .

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

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

Jeśli identyfikator ostatnio dodanego wiersza jest wymagany w ramach tego samego zestawu zapytania lub procedury składowanej.

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

WSTAW z WYBIERZ wyniki zapytania

Aby wstawić dane pobrane z zapytania SQL (pojedynczy lub wiele wierszy)

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

Uwaga: „uczeń” w SELECT jest stałą ciągu, która zostanie wstawiona w każdym wierszu.

W razie potrzeby możesz wybrać i wstawić dane z / do tej samej tabeli



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow