Microsoft SQL Server
WŁÓŻ W
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