Insert w SQL Server – Jak dodawać rekordy

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);
Insert w SQL Server - dodawanie rekordów
Insert w SQL Server – dodawanie rekordów

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
SQL Server Insert - dodawanie rekordów
SQL Server Insert – dodawanie rekordów

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.

SQL Server Insert poprzez SSMS
SQL Server Insert poprzez SSMS

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.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *