1. Polecenie Insert w SQL Server – dodawanie rekordów do tabeli
Polecenia Insert będziesz używał do dodawania rekordów do tabel w bazie danych. Jest to jedno z trzech głównych poleceń DML obok Delete i Update w SQL Server. Insert do tabeli możesz wykonać na kilka różnych sposobów. Wszystkie z nich szczegółowo opiszę w tym rozdziale kursu SQLServer. Są to:
- Insert rekordu o takiej samej liczbie kolumn co tabela
- Insert rekordów do tabeli z określeniem kolumn docelowych
- Insert wyniku zapytania SQL do tabeli
- Insert z ręki z użyciem SQL Management Studio (SSMS)
- Insert rekordów do tabeli przez widok View
Do celów ćwiczenia stwórzmy prosta tabelę o różnych typach danych. Tabelę możemy utworzyć na bazie AdventureWorks.
use AdventureWorks2014 go CREATE TABLE TABELA_DO_INSERTU ( ID bigint , FULL_NAME varchar(100), CITY varchar(50), INSERT_DATE datetime default getdate() );
Jak widzisz ostatnia kolumna przyjmuje wartość default Getdate(). W przypadku jej niewypełnienia wartość w kolumnie uzupełni się datą i godziną dodania rekordu do tabeli.
2. Insert rekordów do tabeli bez określenia kolumn docelowych
Jedyne, co powinieneś zrobić, to wprowadzić nazwę tabeli, którą chcesz uzupełnić oraz szereg wartości, które zostaną dodane. Pamiętaj by w miejsce kolumn, których nie chcesz wypełniać wstawić wartość NULL. Przykład takiego polecenia insert na wcześniej utworzonej tabeli zamieszczam poniżej:
INSERT INTO TABELA_DO_INSERTU values (1, 'Adam Małysz', 'Warszawa', '20170714'); -- lub INSERT INTO TABELA_DO_INSERTU values (2, 'Adam Kowalski', NULL, NULL);
3. Insert rekordów do tabeli z określeniem kolumn docelowych
W przypadku tego typu Insertu prócz określenia tabeli i wartości wprowadzanych powinieneś określić także docelowe kolumny, do których zostaną wprowadzone wartości. Nie musisz określać wartości dla wszystkich kolumn. W kolumnach, które nie zostaną określone, automatycznie wstawiona zostanie wartość NULL lub wartość default kolumny. Nie musisz też podawać kolumn zgodnie z kolejnością ich występowania w tabeli. Możemy zacząć dodawanie wartości np od końca, jak na jednym z przykładów:
INSERT INTO TABELA_DO_INSERTU (ID, FULL_NAME, CITY) Values (3, 'Robert Kubica', 'Manaco'); --LUB: INSERT INTO TABELA_DO_INSERTU (CITY, FULL_NAME, ID) Values ('Nowy Jork', 'Marcin Gortat', 4); --LUB INSERT INTO TABELA_DO_INSERTU (ID) values (5);

4. Insert wyniku zapytania SQL do tabeli
Rekordy możesz także insertować bezpośrednio z wyniku zapytania. Jak się pewnie domyślasz liczba kolumn jak typy danych wyniku zapytania i tabeli powinny być ze sobą zgodne. Jeśli nie są, należy je przekonwertować w zapytaniu SQL. Poniżej przykład insertu z bazy AdventureWorks2014 do naszej tabeli.
use AdventureWorks2014 go INSERT INTO TABELA_DO_INSERTU Select a.BusinessEntityID, a.FirstName + ' ' +LastName as Full_name, c.City, GETDATE() from Person.Person a join person.BusinessEntityAddress b on a.BusinessEntityID = b.BusinessEntityID join person.Address c on b.AddressID = c.AddressID

5. Insert z ręki z użyciem SQL Management Studio (SSMS)
Jeśli korzystasz z SSMS, możesz także dodać nowy rekord do tabeli. Jak to zrobić? Wejdź w okienko Object Explorer. Wybierz tabelę, do której chcesz dodać rekordy. Po kliknięciu prawym przyciskiem myszy wybierz opcję Edit top x rows. Schodząc na sam dół tabeli możesz dodać nowy rekord wypełniając odpowiednie kolumny rekordu po kolei.

6. Insert rekordów za pomocą widoku View
Insert w SQL Server możemy wykonać także odwołując się do widoku. Jak się pewnie domyślasz nie możemy wykonywać poleceń insert do widoków zagregowanych. Stwórzmy widok na podstawie naszej tabeli i spróbujmy dodać do niego nowy rekord:
create view WIDOK_DO_INSERTU AS SELECT * FROM TABELA_DO_INSERTU WHERE ID < 4; INSERT INTO WIDOK_DO_INSERTU VALUES (6, 'Jan Nowak','Chciago',GETDATE()); go select * from tabela_do_insertu go
Gotowe:) Jeśli trafiłeś na ten temat przypadkiem, zapraszam do skorzystania z kursu SQL Server. Link do strony Microsoft z opisem tematu.