Inspiracja , wiedza , realizacja
Jsystems

W przebudowie

Login



Java

Oracle

Linux

Android

PostgreSQL

Microsoft SQL Server

Manipulowanie danymi

Rafał Czarkowski
Data dodania: Jun 21, 2016
Data aktualizacji: Jun 21, 2016

Wstawianie wierszy do tabel [insert]


Najprostsza forma polecenia aby wstawić nowy wiersz do tabeli posiada następującą konstrukcję:


INSERT INTO nazwa_tabeli VALUES (wartość_dla_kolumny1, wartość_dla_kolumny2);


Słowo into jest opcjonalne i nie musimy go pisać. Przy użyciu powyższego zapytania musimy podać wartości dla wszystkich kolumn uzupełnianej tabeli, wymieniając wartości w dokładnie tej samej kolejności co kolumny w tabeli.


insert into SalesLT.SklepSpozywczy values(1, ‘Jabłko’, ‘Czerwony’, 1, 2.5);




Do tabeli SklepSpozywczy został wstawiony jeden wiersz.


insert into SalesLT.SklepSpozywczy values(2, ‘Ananas’, ‘Żółty’, 5, 8.5);

insert into SalesLT.SklepSpozywczy values(3, ‘Arbuz’, ‘Zielony’, 6, 4.99);

insert into SalesLT.SklepSpozywczy values(4, ‘Pomarańcze’, ‘Pomarańczowy’, 2, 3.79);

insert into SalesLT.SklepSpozywczy values(5, ‘Truskawki’, ‘Czerwony’, 2, 7.79);

insert into SalesLT.SklepSpozywczy values(6, ‘Banany’, ‘Żółty’, 3, 4);

insert into SalesLT.SklepSpozywczy values(7, ‘Kiwi’, ‘Zielony’, 5, 4.99);

insert into SalesLT.SklepSpozywczy values(8, ‘Winogrona’, ‘Zielony’, 6, 12.99);

insert into SalesLT.SklepSpozywczy values(9, ‘Gruszki’, ‘Zielony’, 1, 3.99);

insert into SalesLT.SklepSpozywczy values(10, ‘Mandarynki’, ‘Pomarańczowy’, 2, 4.99);




Do tabeli SklepSpozywczy zostało wstawionych kolejne 9 wierszy.

Jeśli chcemy dodać wartość tylko do niektórych kolumn musimy zastosować poniższą konstrukcję:


INSERT INTO nazwa_tabeli(nazwa_kolumny2) VALUES (wartość_dla_kolumny2);


insert into SalesLT.KrajPochodzenia (NazwaKraju) values (‘Polska’);




Do tabeli SklepSpozywczy został wstawiony jeden wiersz, z wartością dla kolumny NazwaKraju.


Kolumna pierwsza została automatycznie uzupełniona, gdyż przy tworzeniu tabeli zostało dodane słowo identity, dzięki czemu przy każdym wykonywanym insercie kolumna ta będzie uzupełniana o kolejne wartości.


Sprawdzenie jak działa autouzupełnianie.


Select * from SalesLT.KrajPochodzenia;





insert into SalesLT.KrajPochodzenia (NazwaKraju) values (‘Hiszpania’);

insert into SalesLT.KrajPochodzenia (NazwaKraju) values (‘Ekwador’);

insert into SalesLT.KrajPochodzenia (NazwaKraju) values (‘Francja’);

insert into SalesLT.KrajPochodzenia (NazwaKraju) values (‘Chiny’);

insert into SalesLT.KrajPochodzenia (NazwaKraju) values (‘Włochy’);




Select * from SalesLT.KrajPochodzenia;




Modyfikowanie danych [update]


Aby zmodyfikować dane, które już się znajdują w tabeli, należy zastosować następującą konstrukcję:


UPDATE nazwa_tabeli SET nazwa_kolumny=nowa_wartość;


update SalesLT.SklepSpozywczy set Cena=99;




Powyższe zapytanie zmodyfikuje wartość we wskazanej kolumnie dla wszystkich wierszy, które się znajdują w tabeli.


Możemy zmieniać wiele kolumn naraz dodając je po przecinku:


UPDATE nazwa_tabeli SET nazwa_kolumny=nowa_wartość, nazwa_kolumny2= nowa_wartość2;


update SalesLT.SklepSpozywczy set Cena=99, kolor=’Czerwony’;




Powyższe zapytanie zmodyfikuje wartość we wskazanych kolumnach dla wszystkich wierszy, które się znajdują w tabeli.


Również w przypadku modyfikacji danych, możemy zastosować where, aby dotyczyły one tylko wybranych wierszy.


UPDATE nazwa_tabeli SET nazwa_kolumny=nowa_wartość WHERE warunek;


update SalesLT.SklepSpozywczy set Cena=10 where ID In (1,3,5);




Na powyższym przykładzie zobrazowano modyfikację, która dotyczy tylko produktów o identyfikatorze 1, 3 i 5.


Kasowanie danych [delete]


Aby skasować wszystkie dane z tabeli stosujemy konstrukcję:


DELETE FROM nazwa_tabeli;


delete from SalesLT.SklepSpozywczy;




Usunięcie całej zawartości tabeli SklepSpozywczy


Możemy też skasować tylko część danych z tabeli stosując where tak jak przy zapytaniach select:


DELETE FROM nazwa_tabeli WHERE warunek;


delete from SalesLT.SklepSpozywczy where Cena>4;




Usunięcie rekordów z tabeli SklepSpozywczy dla których cena była wyższa od 4


Jest jeszcze jedna metoda usuwania wszystkich danych z tabeli, za pomocą słowa truncate. Jednakże w tym wypadku nie mamy możliwości wybrać wierszy do usunięcia za pomocą where.

Należy również mieć swiadomość, że tego typu usunięcie danych wiąże się z autocommitem.


Zarządzanie transakcjami


Transakcja bazodanowa stanowi zbiór elementarnych operacji na bazie danych (np. select, update, insert itp.), w ramach od początku sesji lub poprzedniego zatwierdzenia lub wycofania do aktualnej chwili, które stanowią spójną całość względem wykonania. Ogólnie rzecz ujmując – wszystkie warunki, jakie zdefiniowane zostały dla danej transakcji, muszą zostać spełnione, aby wykonanie elementarnych operacji mogło zostać zatwierdzone (mówimy wtedy o zatwierdzeniu transakcji). W przeciwnym wypadku wszelkie zmiany zostają cofnięte. Polecenie commit służy właśnie do zatwierdzenia transakcji, w przeciwieństwie do rollback, który odrzuca zmiany, jakie miała wprowadzić.




Transakcje charakteryzują cztery właściwości określane skrótem acid:

Niepodzielność (Atomicity) – albo wszystkie modyfikacje wchodzące w skład transakcji są wykonane albo żadna

Spójność (Consistency) – wszystkie transakcje muszą zachować spójność i integralność bazy danych

Izolacja (Isolation) – jeśli transakcja modyfikuje dane, to te dane mogą być czasowo niespójne, dlatego muszą być niedostępne dla innych transakcji dopóty, dopóki transakcja nie skończy ich używać

Trwałość (Durability) – gdy transakcja się kończy, to wszystkie zmiany przez nią dokonane muszą zostać w pełni utrwalone – nawet w przypadku awarii sprzętu.


Przydatne linki



SQL Server 2012 Express - https://www.microsoft.com/en-us/download/details.aspx?id=29062

Bazy danych - http://msftdbprodsamples.codeplex.com/releases/view/93587

Przykładowa - http://msftdbprodsamples.codeplex.com/downloads/get/478214