INSERT Examples (Transact-SQL)
W tym temacie przedstawiono przykłady używania WSTAWIANIE instrukcja.Przykłady są pogrupowane według następujących kategorii.
Kategoria |
Elementy składni witryny |
---|---|
Podstawowa składnia |
• tabela wartość konstruktora INSERT |
Obsługa wartości kolumna |
• Typy zdefiniowane przez użytkownika wartości IDENTITY • NEWID • domyślne |
Wstawianie danych z innych tabel |
• INSERT…wykonać • INSERT…SELECT WITH • typowe wyrażenie tabela TOP |
Określanie obiektów miejsce docelowe innych niż tabele standardowe |
Zmienne Tabela • widoków |
Wstawianie wierszy do tabela zdalnej |
Serwer połączony • OPENQUERY zestawu zestaw wierszy funkcja • OPENDATASOURCE zestawu zestaw wierszy funkcja |
Zbiorcza załadowanie danych z plików tabel lub danych |
Funkcja OPENROWSET • INSERT…SELECT |
Zastępowanie zachowania domyślnego z optymalizator kwerendy za pomocą wskazówki |
Wskazówki dotyczące tabela |
Przechwytywanie wyniki instrukcja INSERT |
Klauzula wyjście |
Podstawowa składnia polecenia
Przykłady w tej części pokazują podstawowych funkcji przy użyciu minimalnej wymaganej składni instrukcja INSERT.
A.Wstawianie pojedynczego wiersza danych
W poniższym przykładzie wstawia wiersz do Production.UnitMeasure Tabela. Kolumny w tej tabela są UnitMeasureCode, Name, a ModifiedDate. Ponieważ wartości dla wszystkich kolumna s są dostarczane i są wyświetlane w tej samej kolejności, jako s kolumna w tabela, kolumna nazwy nie muszą być określone w kolumna listy.
B.Wstawianie wielu wierszy danych
W poniższym przykładzie użyto Konstruktor wartość tabeli , aby wstawić trzy wiersze do Production.UnitMeasure Tabela w pojedynczej instrukcja INSERT. Ponieważ wartości we wszystkich kolumnach są dostarczane i są wyświetlane w kolejności kolumn w tabela, nazwy kolumn nie mają być określone na liście kolumn.
C.Wstawianie danych, który nie znajduje się w kolejności kolumn tabela
W poniższym przykładzie użyto lista kolumn do jawnego określenia wartości, które są wstawiane do każdej kolumna.Kolejność kolumn w Production.UnitMeasure Tabela jest UnitMeasureCode, Name, ModifiedDate; Jednak kolumna nie są wymienione w tym celu w column_list.
Obsługa wartości kolumna
Metody wstawiania wartości do kolumn, które są zdefiniowane w właściwość tożsamości, DEFAULT wartość lub są definiowane z typami danych, takich jak wykazać, przykłady w tej sekcji uniqueidentifer lub kolumny, typ zdefiniowany przez użytkownika.
A.Wstawianie danych do tabela zawierającej kolumny, które zawierają wartości domyślne
The following example shows inserting rows into a table with columns that automatically generate a value or have a default value.Column_1 is a computed column that automatically generates a value by concatenating a string with the value inserted into column_2.Column_2 is defined with a default constraint.If a value is not specified for this column, the default value is used.Column_3 is defined with the rowversion data type, which automatically generates a unique, incrementing binary number.Column_4 does not automatically generate a value.Jeśli nie określono wartości dla tej kolumna, zostanie wstawiony wartości NULL.Instrukcji INSERT wstawić wiersze zawierające wartości dla niektórych kolumn, ale nie wszystkich.W ostatniej instrukcja INSERT są określone żadne kolumny, a tylko wartości domyślne są wstawiane za pomocą klauzula DEFAULT VALUES.
B.Wstawianie danych do tabela zawierającej kolumna tożsamości
W poniższym przykładzie pokazano różne metody wstawiania danych do kolumna tożsamości.Pierwsze dwie instrukcji INSERT zezwala na wartości tożsamości, które mają być generowane dla nowych wierszy.Trzecia instrukcja INSERT zastępuje właściwość IDENTITY dla kolumna w instrukcji zestaw IDENTITY_INSERT i wstawia jawne wartość kolumna tożsamości.
C.Wstawianie danych do kolumna uniqueidentifier przy użyciu NEWID()
W poniższym przykładzie użyto NEWIDFunkcja () w celu uzyskania identyfikatora GUID dla column_2. Inaczej niż w przypadku kolumn identyfikacji Database Engine nie generuje automatycznie wartości dla kolumn z Uniqueidentifier typu danych, jak to pokazano w drugim INSERT Instrukcja.
D.Wstawianie danych do kolumny typ zdefiniowany przez użytkownika
Poniżej Transact-SQL instrukcje wstawione trzy wiersze PointValue Kolumna Points Tabela. To kolumna używa zdefiniowany przez użytkownika typ danych CLR (UDT).The Point data type consists of X and Y integer values that are exposed as properties of the UDT.Należy użyć funkcja CAST albo CONVERT oddać rozdzielaną przecinkami wartości X i Y do Point Typ. Pierwsze dwie instrukcje za pomocą funkcji konwersji do konwersji wartości ciąg na Point Typ, a trzecia instrukcja funkcja CAST. Aby uzyskać więcej informacji zobaczManipulowanie UDT danych.
INSERT INTO dbo.Points (PointValue) VALUES (CONVERT(Point, '3,4'));
INSERT INTO dbo.Points (PointValue) VALUES (CONVERT(Point, '1,5'));
INSERT INTO dbo.Points (PointValue) VALUES (CAST ('1,99' AS Point));
Wstawianie danych z innych tabel
Przykłady w tej części pokazują metody wstawiania wierszy z jednej tabela do drugiej tabela.
A.Przy użyciu opcji SELECT i wykonać do wstawiania danych z innych tabel
W poniższym przykładzie przedstawiono sposób wstawiania danych z jednej tabela do innej tabela przy użyciu INSERT…SELECT lub INSERT…wykonać.Każda jest oparta na multi-tabela instrukcja SELECT zawierającej wyrażenie i wartość literału w kolumna listy.
Pierwsza instrukcja INSERT używa instrukcji SELECT w celu dziedziczyć (tabele urządzenie źródłowe danychEmployee, SalesPerson, a Contact) i zapisać zestaw wyników w EmployeeSales Tabela. Druga instrukcja INSERT użyto klauzula wykonać do wywołania procedura przechowywana, która zawiera instrukcję SELECT, a trzeci INSERT odwołać instrukcji SELECT jako literał ciąg za pomocą klauzula wykonać.
B.Korzystanie z typowych tabela wyrażenie do definiowania danych, wstawić
Poniższy przykład tworzy NewEmployee Tabela. (Wyrażenie) wspólnych tabeliEmployeeTemp) definiuje się wiersze z jednej lub kilku tabel, które ma zostać wstawiony do NewEmployee Tabela. Instrukcja INSERT odwołuje się do kolumn w typowych wyrażenie tabela.
C.Za pomocą TOP w celu ograniczenia ilości danych wstawianych z tabela źródłowej
W poniższym przykładzie użyto U GÓRY klauzula, aby ograniczyć liczbę wierszy do NewEmployee Tabela z Employee Tabela. W przykładzie wstawia dane adres dla pierwszego zestaw losowe 10 pracowników z Employee Tabela do niego. Aby sprawdzić zawartość następnie wykonaniu instrukcja SELECT NewEmployee Tabela.
Określanie miejsce docelowe obiektów innych niż tabele standardowe
Przykłady w tej sekcji pokazano sposób wstawić wiersze przez określenie zmiennej tabela lub widoku.
A.Wstawianie danych przez określenie widoku
W poniższym przykładzie określa nazwę widoku jako obiekt miejsce docelowe; jednak w podlegającej jej tabela bazowa dodaje się nowy wiersz.Kolejność wartości w polach INSERT Instrukcja musi odpowiadać kolejności kolumn w widoku. Aby uzyskać więcej informacji zobaczModifying Data Through a View.
B.Wstawianie danych do zmiennej tabela
W poniższym przykładzie określa zmienną tabela jako obiekt miejsce docelowe.
Wstawianie wierszy do tabela zdalna
Przykłady w tej sekcji przedstawienie sposobu Wstawianie zestaw wierszy do tabela miejsce docelowe zdalnego za pomocą serwer połączony or a Funkcja zestawu zestaw wierszy , aby odwołać się tabela zdalna.
A.Wstawianie danych do tabela zdalna za pomocą serwer połączony
W poniższym przykładzie wstawia wiersze tabela zdalna.W przykładzie rozpoczyna się, tworząc łącze do urządzenie źródłowe dane zdalne za pomocą sp_addlinkedserver.Połączonych nazwa serwera, MyLinkServer, następnie jest określony jako część nazwy four-part obiektu w formularzu Server.Catalog.Schema.Object.
B.Wstawianie danych do tabela zdalna za pomocą funkcja OPENQUERY
W poniższym przykładzie wstawia wiersz do tabela zdalna określając OPENQUERY funkcja zestawu zestaw wierszy.Nazwa serwer połączony, utworzony w poprzednim przykładzie jest używana w tym przykładzie.
C.Wstawianie danych do tabela zdalna za pomocą funkcja OPENDATASOURCE
W poniższym przykładzie wstawia wiersz do tabela zdalnej przez określenie OPENDATASOURCE funkcja zestawu zestaw wierszy.Określ prawidłową nazwa serwera dla urządzenie źródłowe danych przy użyciu formatu nazwa_serwera or server_name\instance_name.
Zbiorcze ładowanie danych z tabel lub pliki danych
Przykłady w tej części pokazują dwie metody zbiorczej ładowania danych do tabela za pomocą instrukcja INSERT.
A.Wstawianie danych do sterty z minimalnym rejestrowania
Poniższy przykład tworzy nową tabela (stosu) i wstawia dane z innej tabela do niej za pomocą minimalnych rejestrowania.W przykładzie założono, że model odzyskiwanie AdventureWorks Baza danych jest ustawiony na FULL. Aby zapewnić minimalny rejestrowanie jest używany, modelu odzyskiwanie AdventureWorks Baza danych jest ustawiony na BULK_LOGGED przed wiersze są wstawiane i przywrócić FULL po instrukcja INSERT INTO…SELECT. Ponadto wskazówka TABLOCK określono w tabela miejsce docelowe Sales.SalesHistory. Takie rozwiązanie gwarantuje, że instrukcja korzysta z minimalnej miejsca dziennik transakcji i wykonuje wydajnie.
B.Użycie funkcja OPENROWSET z BULK ładowanie zbiorcze danych do tabela
W poniższym przykładzie wstawia wiersze z pliku danych do tabela przez określenie funkcja OPENROWSET.Wskazówka IGNORE_TRIGGERS tabela określono dla optymalizacji wydajności.Aby uzyskać więcej przykładów zobacz Importing Bulk Data by Using BULK INSERT or OPENROWSET(BULK...).
Zastępowanie domyślnego zachowania programu optymalizator kwerendy przy użyciu wskazówki
Przykłady w tej sekcji przedstawienie sposobu używania wskazówki dotyczące tabela , aby tymczasowo zastąpić domyślne zachowanie optymalizator kwerendy podczas przetwarzania instrukcja INSERT.
Ostrzeżenie
0 = SQL Server Identyfikator zamówienia sortowania
A.Określanie metody blokowania przy użyciu wskazówki TABLOCK
W poniższym przykładzie określa, że blokada wyłączności (X) jest pobierana z tabela Production.Location i są przechowywane aż do końca instrukcja INSERT.
Przechwytywanie wyniki instrukcja INSERT
Przykłady w tej sekcji przedstawienie sposobu używania Klauzula wyjście zwraca informacje, lub na podstawie wyrażenia, każdy wiersz dotyczy instrukcja INSERT.Wyniki te mogą być zwracane do aplikacji przetwarzania do użycia w takich elementów, jak komunikatów potwierdzających, archiwizowanie i innych takich wymagań aplikacji.
A.Wyjście przy użyciu instrukcja INSERT
W poniższym przykładzie wstawia wiersz do ScrapReason Tabela i zastosowań OUTPUT Klauzula zwrócić wyniki instrukcja do @MyTableVar Zmienna tabeli. Ponieważ ScrapReasonID kolumna zdefiniowano z IDENTITY Właściwość, wartość nie jest określona w INSERT instrukcja dla tej kolumna. Należy jednak zwrócić uwagę, że wartość jest generowana przez Database Engine dla tej kolumny jest zwracany w OUTPUT w klauzula INSERTED.ScrapReasonID Kolumna.
B.Z tożsamości i kolumny obliczane przy użyciu wyjście
Poniższy przykład tworzy EmployeeSales Tabela, który jest następnie wstawiany kilka wierszy do niej za pomocą instrukcja INSERT za pomocą instrukcja SELECT w celu pobrania danych z tabelami źródłowymi. The EmployeeSales tabela contains an kolumna tożsamości (EmployeeID) and a kolumna obliczana (ProjectedSales). Ponieważ wartości te są generowane przez Database Engine Podczas wykonywania operacji wstawiania żadna z tych kolumn nie mogą być definiowane w @MyTableVar.
C.Wstawianie danych zwróconych przez klauzulę wyjście
W poniższym przykładzie przechwytuje dane zwrócone z klauzula wyjście instrukcja korespondencji SERYJNEJ i wstawia dane do innej tabela.Aktualizacje instrukcja korespondencji SERYJNEJ Quantity Kolumna ProductInventory Tabela codziennie, na podstawie zamówienia, które są przetwarzane w SalesOrderDetail Tabela. Powoduje usunięcie wierszy dla produktów, których zapasy upuść na 0.W przykładzie przechwytuje wiersze, które są usuwane i wstawia je do innej tabela ZeroInventory, który śledzi produktów nie zapasów.