plik


Jzyk SQL  cig dalszy DML (Data Manipulation Language) WykBad S. Kozielski Wstawianie wierszy INSERT INTO <tablica> [(<lista kolumn>)] VALUES (<lista warto[ci>) PrzykBad: 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) insert into uczniowie values ( Jaworek ,NULL, NULL, 1) Wstawianie wierszy - c.d. INSERT INTO <tablica> [(<lista kolumn>)] <instrukcja SELECT> Modyfikowanie (aktualizacja) wierszy UPDATE <tablica> SET <kolumna> = <wyra|enie>, ... [WHERE <warunek>] PrzykBad: update uczniowie set wzrost = wzrost + 2 where nazwisko =  Malina update uczniowie set klasa = 3 where klasa = 2 Usuwanie wierszy DELETE FROM <tablica> [WHERE <warunek>] PrzykBad: delete from uczniowie where klasa = 3 Wyszukiwanie danych SELECT <> FROM <> WHERE <> GROUP BY <> HAVING <> ORDER BY <> UNION ... Fraza SELECT  opis uproszczony SELECT [ALL|DISTINCT]{<wyra|enie> [AS <nazwa>], ... | *} <wyra|enie>::= <kolumna> | <alias>.<kolumna> | <kwalifikator>.<kolumna> | <wyra|enie okre[lonego typu> | <funkcja agregujca> <kwalifikator>::= <tablica> | <perspektywa> | <synonim> PrzykBady zapytaDdotyczcych 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 PrzykBady zapytaD - c.d. select max(wzrost) from uczniowie select klasa from uczniowie select distinct klasa from uczniowie Fraza FROM  wariant bez zBczeD FROM <element> [<alias>], ... <element>::= <tablica>|<perspektywa> | <synonim>|<konstruktor tablicy> Fraza WHERE WHERE <warunek> Warunki filtrujce (zwykBe) <wyra|enie> <op> <staBa> <wyra|enie> <op> <wyra|enie> <op>::= =, >, >=, <, <=, !=, <> <wyra|enie> [NOT] BETWEEN <dB> AND <gra> <wyra|enie> [NOT] IN (<lista warto[ci>) PrzykBady select * from uczniowie where klasa = 4 where waga  (wzrost - 100) > 10 where wzrost beetwen 178 and 183 where klasa in (1,2) <wyra|enie> [NOT] LIKE <wzorzec tekstowy> znaki zastpcze we wzorcu tekstowym: _ : zastpuje 1 znak, % : zastpuje 0, 1, 2, 3, ... znakw PrzykBady select * from uczniowie where nazwisko like  Kowalsk_ where upper(nazwisko) like  KOWALSK_ where upper(nazwisko) like  KOWAL% Warunki Bczce Tablice bazy danych: ZespoBy (nrz, nazwa, nrpk) Pracownicy (nrp, nazwisko, nrz) WypBaty (nrp, nrt, kwota) Tematy (nrt, nazwa, nrpk) ZespoBy nrz nazwa nrpk 1 ZespB Analiz 2 2 ZespB Wdro|eD 1 Pracownicy nrp nazwisko adres nrz 1 Lipowski Ruda Zlska 2 2 Grabski Zabrze 1 3 Jaworek Gliwice 1 Tematy nrt nazwa nrpk 1 Projekt zasilacza 2 2 Projekt przetwornika 1 3 Projekt reaktora 2 WypBaty nrp nrt kwota 2 2 300 3 3 150 1 1 150 3 2 200 1 3 200 Warunki Bczce select nazwisko, nazwa from pracownicy, zespoBy where pracownicy.nrz = zespoBy.nrz select nazwisko, nazwa from pracownicy p, zespoBy z where p.nrz = z.nrz Pracownicy nrp nazwisko adres nrz 1 Lipowski Ruda Zlska 2 2 Grabski Zabrze 1 3 Jaworek Gliwice 1 ZespoBy nrz nazwa nrpk 1 ZespB Analiz 2 2 ZespB Wdro|eD 1 Pracownicy ZespoBy nrp nazwisko adres nrz nazwa nrpk Ruda 1 Lipowski 2 ZespB Wdro|eD 1 Zlska 2 Grabski Zabrze 1 ZespB Analiz 2 3 Jaworek Gliwice 1 ZespB Analiz 2 select nazwisko, nazwa, pracownicy.nrz from pracownicy, zespoBy where pracownicy.nrz = zespoBy.nrz select nazwisko, nazwa, p.nrz from pracownicy p, zespoBy z where p.nrz = z.nrz select p.nazwisko, z.nazwa, p.nrz from pracownicy p, zespoBy z where p.nrz = z.nrz select nazwisko, nazwa from pracownicy p, zespoBy z where p.nrp = z.nrpk Warunki Bczce select nazwisko, kwota, nrt from pracownicy, wypBaty where pracownicy.nrp = wypBaty.nrp select p.nazwisko, w.kwota, w.nrt, p.nrp from pracownicy p, wypBaty w where p.nrp = w.nrp ZBczenie tabel Pracownicyi WypBaty WypBaty Pracownicy 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 2 200 3 Jaworek Gliwice 1 1 3 200 Pracownicy WypBaty nrp nazwisko adres nrz nrt kwota 2 Grabski Zabrze 1 2 300 3 Jaworek Gliwice 1 3 150 1 Lipowski Ruda 2 1 150 3 Jaworek Gliwice 1 2 200 1 Lipowski Ruda 2 3 200 Pracownicy WypBaty Tematy nrp nazwisko adres nrz nrt kwota nazwa nrpk 2 Grabski Zabrze 1 2 300 Pr. przetwor. 1 3 Jaworek Gliwice 1 3 150 Pr. reaktora 2 1 Lipowski Ruda 2 1 150 Pr. zasilacza 2 3 Jaworek Gliwice 1 2 200 Pr. przetwor. 1 1 Lipowski Ruda 2 3 200 Pr. reaktora 2 select nazwisko, kwota, nrt from pracownicy p, wypBaty w where p.nrp = w.nrp and nrz = 4 and kwota > 2000 select distinct z.nazwa from zespoBy z, pracownicy p, wypBaty w, tematy t where z.nrz = p.nrz and p.nrp = w.nrp and w.nrt = t.nrt and t.nazwa =  Projekt sterownika select p2.nazwisko from pracownicy p1, pracownicy p2 where p1.nazwisko =  Bukowy and p1.nrz = p2.nrz and p2.nazwisko <>  Bukowy select p2.nazwisko from pracownicy p1, wypBaty w, tematy t, pracownicy p2 where p1.nazwisko =  Grabski and p1.nrp = t.nrpk and t.nrt = w.nrt and w.nrp = p2.nrp ZBczenia zewntrzne select nazwisko, kwota, nrt from pracownicy p, wypBaty w where p.nrp = w.nrp ZBczenie naturalne 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 a4 b4 c1 ZBczenie zewntrzne 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 ZBczenia zewntrzne select nazwisko, kwota, nrt from pracownicy p, wypBaty w where p.nrp = w.nrp (+) Zapis zBczeD wedBug standardu SQL-2 SELECT <> FROM <tabela A> [INNER] JOIN <tabela B> ON <warunek> WHERE <warunek filtrujcy> ZBczenia zewntrzne SELECT <> FROM <tabela A> {LEFT|RIGHT|FULL}[OUTER] JOIN <tabela B> ON <warunek> WHERE <warunek filtrujcy> PrzykBad select nazwisko, kwota, nrt from pracownicy p join wypBaty w on p.nrp = w.nrp where nrz=4 and kwota > 2000 ZBczenie zewntrzne - przykBad Zapis klasyczny select nazwisko, kwota, nrt from pracownicy p, wypBaty w where p.nrp = w.nrp (+) Zapis w SQL-2 select nazwisko, kwota, nrt from pracownicy p left outer join wypBaty w on p.nrp = w.nrp PeBny zapis zBczeD w standardzie SQL-2 (SQL-92) SELECT <> FROM <rodzaj zBczenia> <rodzaj zBczenia>::= <tab A> [<typ zBczenia>] JOIN <tab B> <tab A> [<typ zBcz.>] JOIN <tab B> USING (<kolumna>, ...) <tab A> [<typ zBczenia>] JOIN <tab B> ON <warunek> <typ zBczenia>::= INNER|{LEFT|RIGHT|FULL}[OUTER] select nazwisko, kwota, nrt from pracownicy join wypBaty lub from pracownicy join wypBaty using (nrp) lub from pracownicy p join wypBaty w on p.nrp = w.nrp Warunki filtrujce z pytaniami zagnie|d|onymi SELECT <> FROM <> WHERE <pocztek warunku> (SELECT <> FROM <> WHERE < . . . >) <pocztek warunku>::= 1) <wyra|enie> <op> 2) <wyra|enie> <op> {ANY|ALL} 3) <wyra|enie> [NOT] IN 4) [NOT] EXISTS Baza danych: ZespoBy (nrz, nazwa, nrpk) Pracownicy (nrp, nazwisko, nrz, premia) WypBaty (nrp, nrt, kwota) Tematy (nrt, nazwa, nrpk) ad 1) <wyra|enie> <op> select nazwisko from pracownicy where nrp = (select nrpk from zespoBy where nazwa =  ZespB Wdro|eD ) ad 1) <wyra|enie> <op> Pracownicy (nrp, nazwisko, nrz, premia) select nazwisko from pracownicy where nrz = 3 and premia > (select premia from pracownicy where nazwisko =  Jaworek ) ad 2) <wyra|enie> <op> {ANY|ALL} Konstrukcja warunku z {ANY | ALL} pozwala sprawdzi, czy warto[ wybrana w pytaniu zewntrznym speBnia warunek dla {jakiejkolwiek | ka|dej} warto[ci wybranej w pytaniu wewntrznym <wyra|enie> <op> {ANY|ALL} select nazwisko from pracownicy where nrp = (select nrp from wypBaty where kwota > 2000) Problem: pytanie wewntrzne daje w wyniku zbir warto[ci! <wyra|enie> <op> {ANY|ALL} select nazwisko from pracownicy where nrp = any (select nrp from wypBaty where kwota > 2000) <wyra|enie> [NOT] IN select nazwisko from pracownicy where nrp in (select nrp from wypBaty where kwota > 2000) Ograniczenia na posta zapytaD z warunkami zawierajcymi pytania zagnie|d|one Wyszukiwane atrybuty (kolumny) (umieszczone na li[cie frazy select)mog pochodzi tylko z tablicy w pytaniu zewntrznym select nazwisko from pracownicy where nrz = 4 and nrp in (select nrp from wypBaty where kwota > 2000) ALL select nazwisko, wzrost from uczniowie where klasa = 1 and wzrost > all (select wzrost from uczniowie where klasa = 3) select nazwisko from pracownicy p where 2000 < all (select kwota from wypBaty w where w.nrp = p.nrp) ad 3) <wyra|enie> [NOT] IN Operator IN jest rwnowa|ny operatorowi =ANY select nazwa from tematy where nrt in (select nrt from wypBaty) select nazwa from tematy where nrt not in (select nrt from wypBaty) select nazwa from zespoBy where nrz in (select nrz from pracownicy where nrp in (select nrp from wypBaty where nrt in (select nrt from tematy where nazwa =  Projekt sterownika ))) ad 4) [NOT] EXISTS Predykat EXISTS podaje warto[ prawdy, je[li zbir wierszy wybranych w pytaniu wewntrznym nie jest pusty select nazwa from tematy t where exists (select * from wypBaty w where w.nrt = t.nrt) select nazwisko from pracownicy p where not exists (select * from wypBaty w where w.nrp = p.nrp) Rwnowa|no[ znana z logiki matematycznej (rachunku zdaD) ("t) ((t)) a" ("t) ((t)) select nazwisko from pracownicy p where not exists (select * from tematy t where not exists (select * from wypBaty w where w.nrt = t.nrt and w.nrp = p.nrp)) Funkcje agregujce SUM (<arg>) AVG (<arg>) MAX (<arg>) MIN (<arg>) COUNT (<arg>) <arg>::= [ALL|DISTINCT]<wyra|enie> oraz COUNT(*) select count(*) from pracownicy select sum(kwota), avg(kwota), max(kwota) from wypBaty select sum(kwota), avg(kwota), max(kwota) from wypBaty where nrt = 3 select sum(kwota), max(kwota), count(p.nrp) from pracownicy p, wypBaty w where p.nrp = w.nrp and nrz = 4 select max(waga - (wzost - 100)) from uczniowie select count(nrp), count(distinct nrp), count(distinct nrt) from wypBaty select nazwisko, wzrost from uczniowie where wzrost = (select max(wzrost) from uczniowie) select klasa, nazwisko, wzrost from uczniowie u1 where wzrost = (select max(wzrost) from uczniowie u2 where u2.klasa = u1.klasa) select nrp, nrt, kwota from wypBaty w1 where kwota = (select max(kwota) from wypBaty w2 where w2.nrt = w1.nrt) Grupowanie  fraza GROUP BY select nrz, count(*) from pracownicy group by nrz select nrt, sum(kwota), max(kwota), count(*) from wypBaty group by nrt select nrz, sum(kwota) from pracownicy p, wypBaty w where p.nrp = w.nrp group by nrz select nazwisko, sum(kwota) from pracownicy p, wypBaty w where p.nrp = w.nrp group by nazwisko, p.nrp SELECT <lista kolumn 1>,<lista funkcji agr.> FROM <> WHERE <> GROUP BY <lista kolumn 2> <lista kolumn 1> " <lista kolumn 2> Filtrowanie grup  fraza HAVING HAVING <warunek filtrujcy> select nrz, count(*) from pracownicy group by nrz having count(*) > 20 or count(*) < 5 select nazwisko, p.nrp, sum(kwota) from pracownicy p, wypBaty w where p.nrp = w.nrp group by nazwisko, p.nrp having sum(kwota) > 10000 select nazwisko, p.nrp, sum(kwota) from pracownicy p, wypBaty w where p.nrp = w.nrp group by nazwisko, p.nrp having sum(kwota) > (select sum(kwota) from pracownicy pp, wypBaty ww where pp.nrp = ww.nrp and nazwisko =  Jaworek ) Konstruktor tablicy w frazie FROM SELECT <> FROM <konstruktor tablicy> select max(suma) from (select sum(kwota) as suma from wypBaty group by nrp) Konstruktor tablicy na li[cie SELECT select nrp, nazwisko, (select sum(kwota) from wypBaty w where w.nrp = p.nrp) as suma from pracownicy p Porzdkowanie wynikw wyszukiwania  fraza ORDER BY ORDER BY {<wyra|enie> |<nr>} [ASC|DESC], ... select * from pracownicy order by nrz, nazwisko select nazwisko, waga (wzrost-100), klasa from uczniowie order by klasa, waga (wzrost 100) desc lub order by 3,2 desc Fraza UNION (i frazy pokrewne: INTERSECT, MINUS, ...) SELECT <lista kolumn 1> FROM <> . . . UNION [ALL] SELECT <lista kolumn 2> FROM <> . . . Fraza UNION - przykBad select nrpk from zespoBy union select nrpk from tematy Fraza UNION - przykBad select nrpk from zespoBy union all select nrpk from tematy Fraza INTERSECT - przykBad select nrpk from zespoBy intersect select nrpk from tematy Fraza MINUS - przykBad select nrpk from zespoBy minus select nrpk from tematy

Wyszukiwarka

Podobne podstrony:
BD Wyklad 1 11
BD Wykład 5 11
BD Wykład 2 11
BD Wykład 7 11
BD Wykład 6 11
BD Wykład 3 11
BD Wykład 8 11
Wykład 11 stolarka okienna i drzwiowa
WYKŁAD 11
wyklad 11 psychosomatyka
PLC mgr wyklad 11 algorytmy
CHEMIA dla IBM Wyklad 8) 11 2013
Wyklad 11
Wyklad 11 stacj Genetyka i biotechnologie lesne
Stat wyklad2 11 na notatki
(Uzupełniający komentarz do wykładu 11)
wyklad10 11 ME1 EiT
WYKŁAD 11 2

więcej podobnych podstron