Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Język SQL – ciąg dalszy DML (Data Manipulation Language)

Podobne prezentacje


Prezentacja na temat: "Język SQL – ciąg dalszy DML (Data Manipulation Language)"— Zapis prezentacji:

1 Język SQL – ciąg dalszy DML (Data Manipulation Language)
Wykład S. Kozielski

2 Wstawianie wierszy INSERT INTO <tablica> [(<lista kolumn>)] VALUES (<lista wartości>) Przykład: wstawianie wierszy do tablicy: uczniowie (nazwisko, wzrost, waga, klasa) insert into uczniowie values (‘Malina’,183,79.5,3) insert into uczniowie (nazwisko,klasa) values (‘Jaworek’,1)

3 Wstawianie wierszy - c.d.
INSERT INTO <tablica> [(<lista kolumn>)] <instrukcja SELECT>

4 Modyfikowanie (aktualizacja) wierszy
UPDATE <tablica> SET <kolumna> = <wyrażenie>, [WHERE <warunek>] Przykład: update uczniowie set wzrost = wzrost + 2 where nazwisko = ‘Malina’ update uczniowie set klasa = 3 where klasa = 2

5 Usuwanie wierszy DELETE FROM <tablica> [WHERE <warunek>]
Przykład: delete from uczniowie where klasa = 3

6 Wyszukiwanie danych SELECT <> FROM <> WHERE <>
GROUP BY <> HAVING <> ORDER BY <> UNION ...

7 Fraza SELECT – opis uproszczony
SELECT [ALL|DISTINCT]{<wyrażenie> [AS <nazwa>], ... | *} <wyrażenie>::= <kolumna> | <alias>.<kolumna> | <kwalifikator>.<kolumna> | <wyrażenie określonego typu> | <funkcja agreująca> <kwalifikator>::= <tablica> | <perspektywa> | <synonim>

8 Przykłady zapytań dotyczących tablicy:
Przykłady zapytań dotyczących tablicy: uczniowie (nazwisko, wzrost, waga, klasa) select * from uczniowie select nazwisko, klasa select nazwisko, waga – (wzrost - 100) select nazwisko, waga – (wzrost - 100) as ‘nadwaga’

9 select max(wzrost) from uczniowie select klasa select distinct klasa
Przykłady zapytań - c.d. select max(wzrost) from uczniowie select klasa select distinct klasa

10 Fraza FROM – wariant bez złączeń
FROM <element> [<alias>], ... <element>::= <tablica>|<perspektywa> | <synonim>|<konstruktor tablicy>

11 WHERE <warunek>
Fraza WHERE WHERE <warunek>

12 Warunki filtrujące (zwykłe)
<wyrażenie> <op> <stała> <wyrażenie> <op> <wyrażenie> <op>::= =, >, >=, <, <=, !=, <> <wyrażenie> [NOT] BETWEEN <dół> AND <góra> <wyrażenie> [NOT] IN (<lista wartości>)

13 Przykłady select * from uczniowie where klasa = 4
where waga – (wzrost - 100) > 10 where wzrost beetwen 178 and 183 where klasa in (1,2)

14 <wyrażenie> [NOT] LIKE <wzorzec tekstowy>
znaki zastępcze we wzorcu tekstowym: _ : zastępuje 1 znak, % : zastępuje 0, 1, 2, 3, ... znaków

15 Przykłady select * from uczniowie where nazwisko like ‘Kowalsk_’
where upper(nazwisko) like ‘KOWALSK_’ where upper(nazwisko) like ‘KOWAL%’

16 Warunki łączące Tablice bazy danych: Zespoły (nrz, nazwa, nrpk)
Pracownicy (nrp, nazwisko, nrz, ) Wypłaty (nrp, nrt, kwota) Tematy (nrt, nazwa, nrpk)

17 Warunki łączące select nazwisko, kwota, nrt from pracownicy, wypłaty
where pracownicy.nrp = wypłaty.nr select p.nazwisko, w.kwota, w.nrt, p.nrp from pracownicy p, wypłaty w where p.nrp = w.nrp

18 Złączenie tabel Pracownicy Wypłaty nrp nrt kwota 2 300 3 150 1 200 nrp
nazwisko adres nrz 1 Lipowski Ruda 2 Grabski Zabrze 3 Jaworek Gliwice

19 Pracownicy  Wypłaty nrp nazwisko adres nrz nrt kwota 2 Grabski
Zabrze 1 300 3 Jaworek Gliwice 150 Lipowski Ruda 200

20 Pracownicy  Wypłaty  Tematy
nrp nazwisko adres nrz nrt kwota nazwa kier. 2 Grabski Zabrze 1 300 Pr. przetwor. 3 Jaworek Gliwice 150 Pr. reaktora Lipowski Ruda Pr. zasilacza 200

21 select nazwisko, kwota, nrt
from pracownicy p, wypłaty w where p.nrp = w.nrp and nrz = 4 and kwota > 2000

22 select distinct z.nazwa
from zespoły z, pracownicy p, wypłaty w, tematy t where z.nrz = p.nrz and p.nrp = w.nrp and w.nrt = t.nrt and t.nazwa = ‘Projekt sterownika’

23 select p2.nazwisko from pracownicy p1, pracownicy p2 where p1.nazwisko = ‘Bukowy’ and p1.nrz = p2.nrz and p2.nazwisko <> ‘Bukowy’

24 select p2.nazwisko from pracownicy p1, wypłaty w, tematy t, pracownicy p2 where p1.nazwisko = ‘Grabski’ and p1.nrp = t.nrpk and t.nrt = w.nrt and w.nrp = p2.nrp

25 Złączenia zewnętrzne select nazwisko, kwota, nrt
from pracownicy p, wypłaty w where p.nrp = w.nrp

26 Złączenie naturalne r (A, B, C) s (C, D) q (A, B, C, D)
————  ——— = —————   a1 b1 c c1 d a1 b1 c1 d1 a2 b2 c c5 d a4 b4 c1 d1 a3 b3 c3 a4 b4 c1

27 Złączenie zewnętrzne r (A, B, C) s (C, D) (+) q (A, B, C, D)
————  ———— = —————   a1 b1 c c1 d a1 b1 c1 d1 a2 b2 c c5 d a4 b4 c1 d1 a3 b3 c a2 b2 c2 a4 b4 c a3 b3 c3

28 Złączenia zewnętrzne select nazwisko, kwota, nrt
from pracownicy p, wypłaty w where p.nrp = w.nrp (+)

29 Zapis złączeń w standardzie SQL-2 (SQL-92)
SELECT <> FROM <rodzaj złączenia> <rodzaj złączenia>::= <tab A> [<typ złączenia>] JOIN <tab B> <tab A> [<typ złącz.>] JOIN <tab B> USING (<kolumna>, ...) <tab A> [<typ złączenia>] JOIN <tab B> ON <warunek> <typ złączenia>::= INNER|{LEFT|RIGHT|FULL}[OUTER]

30 select nazwisko, kwota, nrt
from pracownicy join wypłaty lub from pracownicy join wypłaty using (nrp) from pracownicy p join wypłaty w on p.nrp = w.nrp

31 Złączenie zewnętrzne Zapis klasyczny select nazwisko, kwota, nrt
from pracownicy p, wypłaty w where p.nrp = w.nrp (+) Zapis w SQL-2 from pracownicy p left outer join wypłaty w on p.nrp = w.nrp

32 Warunki filtrujące z pytaniami zagnieżdżonymi
SELECT <> FROM <> WHERE <początek warunku> ( SELECT <> WHERE < >)

33 <początek warunku>::=
1) <wyrażenie> <op> 2) <wyrażenie> <op> {ANY|ALL} 3) <wyrażenie> <op> [NOT] IN 4) [NOT] EXISTS

34 Baza danych: Zespoły (nrz, nazwa, nrpk)
Pracownicy (nrp, nazwisko, nrz, premia) Wypłaty (nrp, nrt, kwota) Tematy (nrt, nazwa, nrpk)

35 ad 1) <wyrażenie> <op>
select nazwisko from pracownicy where nrp = (select nrpk from zespoły where nazwa = ‘Zespół Wdrożeń’)

36 ad 1) <wyrażenie> <op>
select nazwisko from pracownicy where nrz = 3 and premia > (select premia where nazwisko = ‘Jaworek’)

37 ad 2) <wyrażenie> <op> {ANY|ALL}
select nazwa from tematy where nrt = any (select nrt from wypłaty)

38 ANY select nazwisko from pracownicy where nrp = any (select nrp
from wypłaty where kwota > 2000)

39 ALL select nazwisko, wzrost from uczniowie
where klasa = 1 and wzrost > all (select wzrost where klasa = 3)

40 select nazwisko from pracownicy p where 2000 < all (select kwota from wypłaty w where w.nrp = p.nrp)

41 ad 3) <wyrażenie> [NOT] IN
select nazwa from tematy where nrt in (select nrt from wypłaty)

42 select nazwa from zespoły where nrz in (select nrz from pracownicy where nrp in (select nrp from wypłaty where nrt in (select nrt from tematy where nazwa = ‘Projekt sterownika’)))

43 ad 4) [NOT] EXISTS select nazwa from tematy t where exists (select *
from wypłaty w where w.nrt = t.nrt)

44 select nazwisko from pracownicy p where not exists (select * from wypłaty w where w.nrp = p.nrp)

45 select nazwisko from pracownicy p where not exists (select * from tematy t from wypłaty w where w.nrt = t.nrt and w.nrp = p.nrp))

46 Funkcje agregujące SUM (<arg>) AVG (<arg>)
MAX (<arg>) MIN (<arg>) COUNT (<arg>) <arg>::= [ALL|DISTINCT]<wyrażenie> oraz COUNT(*)

47 select count(*) from pracownicy select sum(kwota), avg(kwota), max(kwota) from wypłaty

48 select sum(kwota), avg(kwota), max(kwota)
from wypłaty where nrt = 3 select sum(kwota), max(kwota), count(p.nrp) from pracownicy p, wypłaty w where p.nrp = w.nrp and nrz = 4

49 select max(waga - (wzost - 100))
from uczniowie select count(nrp), count(distinct nrp), count(distinct nrt) from wypłaty

50 select nazwisko, wzrost
from uczniowie where wzrost = (select max(wzrost) from uczniowie)

51 select klasa, nazwisko, wzrost
from uczniowie u1 where wzrost = (select max(wzrost) from uczniowie u2 where u2.klasa = u1.klasa)

52 select nrp, nrt, kwota from wypłaty w1 where kwota = (select max(kwota) from wypłaty w2 where w2.nrt = w1.nrt)

53 Grupowanie – fraza GROUP BY
select nrz, count(*) from pracownicy group by nrz

54 select nrt, sum(kwota), max(kwota), count(*) from wypłaty group by nrt

55 select nrz, sum(kwota) from pracownicy p, wypłaty w where p.nrp = w.nrp group by nrz

56 select nazwisko, sum(kwota)
from pracownicy p, wypłaty w where p.nrp = w.nrp group by nazwisko, p.nrp

57 SELECT <lista kolumn 1>,<lista funkcji agr.>
FROM <> WHERE <> GROUP BY <lista kolumn 2> <lista kolumn 1>  <lista kolumn 2>

58 Filtrowanie grup – fraza HAVING
HAVING <warunek filtrujący> select nrz, count(*) from pracownicy group by nrz having count(*) > 20 or count(*) < 5

59 select nazwisko, p.nrp, sum(kwota)
from pracownicy p, wypłaty w where p.nrp = w.nrp group by nazwisko, p.nrp having sum(kwota) > 10000

60 select nazwisko, p.nrp, sum(kwota)
from pracownicy p, wypłaty w where p.nrp = w.nrp group by nazwisko, p.nrp having sum(kwota) > (select sum(kwota) from pracownicy pp, wypłaty ww where pp.nrp = ww.nrp and nazwisko = ‘Jaworek’)

61 Konstruktor tablicy w frazie FROM
SELECT <> FROM <konstruktor tablicy> select max(suma) from (select sum(kwota) as suma from wypłaty group by nrp)

62 Konstruktor tablicy na liście SELECT
select nrp, nazwisko, (select sum(kwota) from wypłaty w where w.nrp = p.nrp) as suma from pracownicy p

63 Porządkowanie wyników wyszukiwania – fraza ORDER BY
ORDER BY {<wyrażenie> |<nr>} [ASC|DESC], ... select * from pracownicy order by nrz, nazwisko

64 select nazwisko, waga–(wzrost-100), klasa
from uczniowie order by klasa, waga–(wzrost–100) desc lub order by 3,2 desc

65 Fraza UNION (i frazy pokrewne: INTERSECT, MINUS, ...)
SELECT <lista kolumn 1> FROM <> . . . UNION [ALL] SELECT <lista kolumn 2>

66 select nrpk from zespoły union from tematy
Fraza UNION - przykład select nrpk from zespoły union from tematy

67 select nrpk from zespoły union all from tematy
Fraza UNION - przykład select nrpk from zespoły union all from tematy

68 Fraza INTERSECT - przykład
select nrpk from zespoły intersect from tematy

69 select nrpk from zespoły minus from tematy
Fraza MINUS - przykład select nrpk from zespoły minus from tematy


Pobierz ppt "Język SQL – ciąg dalszy DML (Data Manipulation Language)"

Podobne prezentacje


Reklamy Google