skladnia SQL

Transkrypt

skladnia SQL
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
INSERT
Przykład 1
Wstaw wiersz do tabeli OlejkiMoje.
INSERT INTO OlejkiMoje (IdOlejku, NazwaOlejku)
VALUES (1,’WstawionyWiersz’)
Systemy Baz Danych, Hanna Kleban
4
INSERT
Przykład 2
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
INSERT
Przykład 3
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
INSERT
Przykład 4
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
INSERT
Przykład 5
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
UPDATE
Przykład 6
Zmienić nazwę olejku z WstawionyWiersz na Bazylia w
relacji OlejkiMoje.
UPDATE OlejkiMoje
SET NazwaOlejku ='Bazylia'
WHERE NazwaOlejku=‘WstawionyWiersz'
Systemy Baz Danych, Hanna Kleban
13
UPDATE
Przykład 7
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
UPDATE
Przykład 8
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
DELETE relacja_lub_widok
[FROM źródło_relacji]
[WHERE warunek]
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
DELETE
Przykład 9
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
DELETE
Przykład 10
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
TRUNCATE TABLE
Przykład 11
Usuń wszystkie krotki z relacji OlejkiMoje
TRUNCATE TABLE OlejkiMoje
Systemy Baz Danych, Hanna Kleban
22