Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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

Podobne prezentacje


Prezentacja na temat: "Język SQL – ciąg dalszy DML (Data Manipulation Language) Wykład S. Kozielski."— Zapis prezentacji:

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

2 Wstawianie wierszy INSERT INTO [( )] VALUES ( ) 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 [( )]

4 Modyfikowanie (aktualizacja) wierszy UPDATE SET =,... [WHERE ] Przykład: update uczniowie set wzrost = wzrost + 2 where nazwisko = Malina update uczniowie set klasa = 3 where klasa = 2

5 Usuwanie wierszy DELETE FROM [WHERE ] 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]{ [AS ],... | *} ::= |. | | ::= | |

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

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

10 Fraza FROM – wariant bez złączeń FROM [ ],... ::= | | |

11 Fraza WHERE WHERE

12 Warunki filtrujące (zwykłe) ::= =, >, >=, [NOT] BETWEEN AND [NOT] IN ( )

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 [NOT] LIKE 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 Wypłaty nrpnrtkwota Pracownicy nrpnazwiskoadresnrz 1LipowskiRuda2 2GrabskiZabrze1 3JaworekGliwice1

19 Pracownicy Wypłaty nrpnazwiskoadresnrznrtkwota 2GrabskiZabrze JaworekGliwice LipowskiRuda JaworekGliwice LipowskiRuda23200

20 Pracownicy Wypłaty Tematy nrpnazwiskoadresnrznrtkwotanazwakier. 2GrabskiZabrze12300Pr. przetwor.1 3JaworekGliwice13150Pr. reaktora2 1LipowskiRuda21150Pr. zasilacza2 3JaworekGliwice12200Pr. przetwor.1 1LipowskiRuda23200Pr. reaktora2

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) = a 1 b 1 c 1 c 1 d 1 a 1 b 1 c 1 d 1 a 2 b 2 c 2 c 5 d 5 a 4 b 4 c 1 d 1 a 3 b 3 c 3 a 4 b 4 c 1

27 Złączenie zewnętrzne r (A, B, C) s (C, D) (+) q (A, B, C, D) = a 1 b 1 c 1 c 1 d 1 a 1 b 1 c 1 d 1 a 2 b 2 c 2 c 5 d 5 a 4 b 4 c 1 d 1 a 3 b 3 c 3 a 2 b 2 c 2 a 4 b 4 c 1 a 3 b 3 c 3

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 ::= [ ] JOIN [ ] JOIN USING (,...) [ ] JOIN ON ::= INNER|{LEFT|RIGHT|FULL}[OUTER]

30 select nazwisko, kwota, nrt from pracownicy join wypłaty lub from pracownicy join wypłaty using (nrp) lub 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 select nazwisko, kwota, nrt 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 (SELECT <> FROM <> WHERE )

33 ::= 1) 2) {ANY|ALL} 3) [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) select nazwisko from pracownicy where nrp = (select nrpk from zespoły where nazwa = Zespół Wdrożeń)

36 ad 1) select nazwisko from pracownicy where nrz = 3 and premia > (select premia from pracownicy where nazwisko = Jaworek)

37 ad 2) {ANY|ALL} ANY 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 from uczniowie 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) [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 where not exists (select * from wypłaty w where w.nrt = t.nrt and w.nrp = p.nrp))

46 Funkcje agregujące SUM ( ) AVG ( ) MAX ( ) MIN ( ) COUNT ( ) ::= [ALL|DISTINCT] 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, FROM <> WHERE <> GROUP BY

58 Filtrowanie grup – fraza HAVING HAVING 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 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 { | } [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 FROM <>... UNION [ALL] SELECT FROM <>...

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

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

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

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


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

Podobne prezentacje


Reklamy Google