1 / 69

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

J ę zyk SQL – ciąg dalszy DML (Data Manipulation Language). Wykład S. Kozielski. Wstawianie wierszy. INSERT INTO <tablica> [(<lista kolumn>)] VALUES (<lista wartości>) Przykład: wstawianie wierszy do tablicy: uczniowie (nazwisko, wzrost, waga, klasa)

calder
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Język SQL – ciąg dalszyDML (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. SELECT <> FROM <> WHERE <> GROUP BY <> HAVING <> ORDER BY <> UNION ... Wyszukiwanie danych

  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: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 <element> [<alias>], ... <element>::= <tablica>|<perspektywa> | <synonim>|<konstruktor tablicy>

  11. 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. Pracownicy Wypłaty nrp nrt kwota nrp nazwisko adres nrz 2 2 300 1 Lipowski Ruda 2 3 3 150 2 Grabski Zabrze 1 1 1 150 3 Jaworek Gliwice 1 3 2 200 1 3 200 Złączenie tabel

  19. Pracownicy  Wypłaty

  20. Pracownicy  WypłatyTematy

  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 andt.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 andw.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łączenienaturalne r (A, B, C) s (C, D) q (A, B, C, D) ———————=—————   a1 b1 c1 c1 d1 a1 b1 c1 d1 a2 b2 c2 c5 d5 a4 b4 c1 d1 a3 b3 c3 a4b4 c1

  27. Złączenie zewnętrzne r (A, B, C) s (C, D) (+) q (A, B, C, D) ————————=—————   a1 b1 c1 c1 d1 a1 b1 c1 d1 a2 b2 c2 c5 d5 a4 b4 c1 d1 a3 b3 c3 a2 b2 c2 a4 b4 c1 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) 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 <początek warunku> ( SELECT <> FROM <> 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 from pracownicy where nazwisko = ‘Jaworek’)

  37. ad 2)<wyrażenie> <op> {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) <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 where not exists (select * 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)

More Related