Język DML Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE Systemy Baz Danych, Hanna Kleban 1
INSERT Instrukcja INSERT dodawanie wierszy może aktualizować pojedynczą relację lub widok. Wyróżniamy dwie formy instrukcji. Pierwsza forma ma postać: INSERT [INTO] relacja_lub_widok [(lista atrybutów)] VALUES (lista wartości) Systemy Baz Danych, Hanna Kleban 2
INSERT Lista atrybutów w instrukcji jest opcjonalna, gdy jej nie podamy, to instrukcja INSERT musi zawierać wartości dla wszystkich atrybutów relacji lub widoku. Wartości te muszą być podane w takiej samej kolejności w jakiej występują atrybuty w relacji lub widoku. Systemy Baz Danych, Hanna Kleban 3
Przykład 1 INSERT Wstaw wiersz do tabeli OlejkiMoje. INSERT INTO OlejkiMoje (IdOlejku, NazwaOlejku) VALUES (1, WstawionyWiersz ) Systemy Baz Danych, Hanna Kleban 4
Przykład 2 INSERT Wstaw wiersz do tabeli OlejkiMoje podając wszystkie dane. INSERT INTO OlejkiMoje VALUES (2, NazwaPolska, NazwaŁacińska,1,1, Przykład2, opis2 ) Systemy Baz Danych, Hanna Kleban 5
Przykład 3 INSERT Wstaw krotki z wartością DEFAULT i NULL INSERT INTO OlejkiMoje (idolejku,nazwaolejku,nazwalacinska,przyklad) VALUES (3,'NazwaPolska3',NULL, DEFAULT) Systemy Baz Danych, Hanna Kleban 6
INSERT Druga forma instrukcji INSERT umożliwia wstawianie wierszy z istniejącej relacji. Zamiast opcji VALUES występuje instrukcja SELECT. INSERT INTO relacja_lub_widok [(lista atrybutów)] SELECT (lista_atrybutów) FROM relacja_lub_widok [WHERE (warunek)] Systemy Baz Danych, Hanna Kleban 7
Przykład 4 INSERT Wstaw nazwy olejków polskie i łacińskie z relacji olejki do relacji OlejkiMoje o identyfikatorach <8,12> INSERT INTO OlejkiMoje (idolejku,nazwaolejku,nazwalacinska) SELECT Idolejku, NazwaOlejku,NazwaLacinska FROM Olejki WHERE idolejku between 8 and 12 Systemy Baz Danych, Hanna Kleban 8
Przykład 5 INSERT Wstaw z relacji Olejki do relacji OlejkiMoje nazwy polskie i łacińskie olejków, których nazwa polska zaczyna się na literę L. INSERT INTO OlejkiMoje (idolejku,nazwaolejku,nazwalacinska) SELECT Idolejku, NazwaOlejku,NazwaLacinska FROM Olejki WHERE (LEFT(nazwaOlejku,1)='L') Systemy Baz Danych, Hanna Kleban 9
INSERT Przy aktualizacji widoku należy przestrzegać ograniczeń: 1. widok nie może zawierać funkcji agregujących, 2. widok nie może zawierać klauzul TOP, GROUP BY, DISTINCT, UNION, 3. widok nie może zawierać kolumn obliczeniowych, 4. widok musi odwoływać się do relacji w klauzuli FROM, Systemy Baz Danych, Hanna Kleban 10
UPDATE Instrukcja UPDATE umożliwia zmianę wartości w jednej lub kilku krotkach wybranej relacji lub widoku. Możliwa jest aktualizacja tylko jednej relacji lub widoku. Pierwsza forma instrukcji UPDATE relacja_lub widok SET lista_aktualizacji [WHERE (warunek)] Systemy Baz Danych, Hanna Kleban 11
UPDATE Po słowie kluczowym SET umieszczamy listę atrybutów do aktualizacji oraz ich nowe wartości. nazwa_atrybutu = nowa_wartość Nowa wartość może być stałą, wyrażeniem. Można również odwoływać się do modyfikowanego atrybutu. CenaSprzedaży= CenaSprzedaży*.90 Systemy Baz Danych, Hanna Kleban 12
Przykład 6 UPDATE Zmienić nazwę olejku z WstawionyWiersz na Bazylia w relacji OlejkiMoje. UPDATE OlejkiMoje SET NazwaOlejku ='Bazylia' WHERE NazwaOlejku= WstawionyWiersz' Systemy Baz Danych, Hanna Kleban 13
Przykład 7 UPDATE Zmienić idskładnikarośliny na 2, a idtypurosliny na 6 dla olejku Kolendra w relacji OlejkiMoje. UPDATE OlejkiMoje SET idskladnikarosliny=2, idtypurosliny=6 WHERE NazwaOlejku='Kolendra' Systemy Baz Danych, Hanna Kleban 14
UPDATE Druga forma instrukcji UPDATE umożliwia aktualizację krotek relacji na podstawie wartości w innej relacji. UPDATE relacja_lub_widok SET lista_aktualizacji FROM relacja_lub_widok operator_złączenia warunek_złączenia [WHERE (warunek)] Systemy Baz Danych, Hanna Kleban 15
Przykład 8 UPDATE Olejkom występującym w relacji OlejkiMoje przypisz zgodnie z ich nazwą idskladnikarosliny i idtypurosliny. UPDATE OlejkiMoje SET OlejkiMoje.IdSkladnikaRosliny=Olejki.IdSkladnikaRosliny, OlejkiMoje.IDTypuRosliny=Olejki.IdTypuRosliny FROM OlejkiMoje INNER JOIN Olejki ON OlejkiMoje.NazwaOlejku=Olejki.NazwaOlejku Systemy Baz Danych, Hanna Kleban 16
UPDATE Ograniczenia instrukcji UPDATE: 1. widok nie może zawierać funkcji agregujących, 2. widok nie może zawierać klauzul TOP, GROUP BY, DISTINCT, UNION, 3. widok nie może zawierać kolumn obliczeniowych, 4. widok musi odwoływać się do relacji w klauzuli FROM, Systemy Baz Danych, Hanna Kleban 17
DELETE i TRUNCATE TABLE Instrukcja DELETE usuwa wybrane krotki w relacji w oparciu o klauzulę WHERE. Instrukcja TRUNCATE TABLE bezwarunkowo usuwa wszystkie krotki w relacji. Działanie instrukcji TRUNCATE TABLE jest identyczne jak działanie instrukcji DELETE z pominięciem klauzuli WHERE. Jednak działania instrukcji TRUNCATE TABLE jest o wiele szybsze, gdyż nie jest ona zapisywana w dzienniku transakcji. Systemy Baz Danych, Hanna Kleban 18
DELETE relacja_lub_widok [FROM źródło_relacji] [WHERE warunek] DELETE Klauzula WHERE pozwala określić, które krotki zostaną usunięte, jej pominięcie spowoduje usunięcie wszystkich krotek w podanej relacji lub widoku. Instrukcja DELETE nie obsługuje operator JOIN. Relacje lub widoki należy łączyć w klauzuli WHERE. Systemy Baz Danych, Hanna Kleban 19
Przykład 9 DELETE Usuń informacje o olejku lipa z relacji OlejkiMoje. Usuń informacje o olejku NazwaPolska DELETE OlejkiMoje WHERE NazwaOlejku='Lipa' DELETE FROM OlejkiMoje WHERE NazwaOlejku= NazwaPolska' Systemy Baz Danych, Hanna Kleban 20
Przykład 10 DELETE Usuń informacje o olejkach (z relacji OlejkiMoje), które produkowane są ze składnika cała roślina (11). DELETE OlejkiMoje FROM RoslinySkladniki WHERE (OlejkiMoje.IDskladnikaRosliny=RoslinySkladniki.IdskladnikaRosliny) AND (RoslinySkladniki.SkladnikRosliny ='cała roślina') Systemy Baz Danych, Hanna Kleban 21
Przykład 11 TRUNCATE TABLE Usuń wszystkie krotki z relacji OlejkiMoje TRUNCATE TABLE OlejkiMoje Systemy Baz Danych, Hanna Kleban 22