1 / 28

Relacijska algebra in SQL DML (D ata M anipulation L anguage)

Relacijska algebra in SQL DML (D ata M anipulation L anguage). Manipulacija s podatki. Teoretična osnova: relacijska algebra in relacijski račun Implementacija: SQL DML (Data Manipulation Language) Osnovne operacije: Branje Dodajanje Spreminjanje Brisanje.

tejana
Download Presentation

Relacijska algebra in SQL DML (D ata M anipulation L anguage)

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. Relacijska algebra inSQL DML(Data Manipulation Language)

  2. Manipulacija s podatki • Teoretična osnova: relacijska algebra in relacijski račun • Implementacija: SQL DML (Data Manipulation Language) • Osnovne operacije: • Branje • Dodajanje • Spreminjanje • Brisanje

  3. Ukazi relac. algebre SQL DML stavki • Projekcija • Selekcija • Unija • Razlika • Kartezični produkt ====== • Presek • Theta stik • Naravni stik • Količnik • SELECT • INSERT • DELETE • UPDATE • ====== • SQL agregirane funkcije • Funkcije za delo z datumi • Funkcije za delo z nizi

  4. Dijak Rel. algebra – projekcija [atr1,atr2,..]relacija Značilnost: ni podvajanj vrstic Vrne vrednosti le navedenih atributov SQL SELECT [*|atr1,atr2,…] FROM tabela; Značilnost: vrstice v odgovoru so lahko podvojene!!! SELECT DISTINCT atr1,atr2,… FROM tabela; Značilnost: vrstice odgovor niso nikoli podvojene! Dodatna SQL možnost – razvrščanje podatkov SELECT atr1,atr2,… FROM tabela ORDER BY atrx [ASC|DESC],atry [ASC|DESC],…; Privzeto razvrščanje je ASC (naraščajoče) Osnovno branje podatkov

  5. Dijak Osnovno branje podatkov primer SELECT DISTINCT Dijak.Ime FROM Dijak; [Dijak.Ime]Dijak [Dijak.Ime]Dijak Odgovor: SELECT Dijak.Ime FROM Dijak;

  6. Dijak Osnovno branje podatkov primer (nad.) SELECT Dijak.Priimek, Dijak.Ime FROM Dijak ORDER BY Dijak.Priimek; [Dijak.Ime]Dijak Odgovor:

  7. Dijak Rel. algebra – selekcija [pogoj]relacija Značilnost: selekcija vrne vse atribute tistih vrstic, ki ustrezajo pogoju, ni podvajanj vrstic v odgovoru V pogoju lahko uporabljamo: primerjalne operatorje: =, <>, <, <=, >, >= logične operatorje: AND, OR, NOT SQL SELECT atr1,atr2,… FROM tabela WHERE pogoj; V pogoju lahko uporabljamo: primerjalne operatorje logične operatorje operator like v kombinaciji z % (SQL92) ali * (Microsoft) Operator BETWEEN spodnja_meja AND zgornja_meja Operator IN (množica elementov) Osnovno branje podatkov s pogoji

  8. Dijak Osnovno branje podatkov s pogoji - primer SELECT DISTINCT Dijak.Ime FROM Dijak WHERE Dijak.Ime LIKE “J%”; [Dijak.Ime] [(Dijak.ime>=‘J’) AND (Dijak.Ime<‘K’)]Dijak [Dijak.Ime]Dijak Odgovor:

  9. Dijak Osnovno branje podatkov s pogoji – primeri (nad.) SELECT DISTINCT Dijak.Ime FROM Dijak WHERE Dijak.Razred in (“G2A”,”G2B”); [Dijak.Ime] [(Dijak.Razred=‘G2A’) OR (Dijak.Razred=‘G2B’)]Dijak [Dijak.Ime]Dijak Odgovor: SELECT DISTINCT Dijak.Ime, Dijak.Rojen FROM Dijak WHERE (((Dijak.Rojen) Between #1.10.1980# And #31.10.1980#)); [Dijak.Ime]([(Dijak.Rojen)>=‘1.10.1980’) AND (Dijak.Rojen <=’31.10.1980’)]Dijak

  10. Unija • Rel. algebra – unija relacija1  relacija2 Značilnost: relacija1 in relacija2 morata imeti enaki shemi; vrne vse vrstice obeh relacij brez dvojnikov (unija množic) • SQL SELECT atr1,atr2,… FROM tabela1 UNION SELECT atr1,atr2,… FROM tabela2; Navedeni morajo biti isti atributi iz obeh tabel!

  11. Unija - primer g2a g2b SELECT * FROM g2a UNION SELECT * FROM g2b; g2a  g2b

  12. Razlika • Rel. algebra – razlika relacija1 - relacija2 Značilnost: relacija1 in relacija2 morata imeti enaki shemi; vrne vse vrstice relacije1, ki niso v relaciji 2 (razlika množic) • SQL • Operacijo razlike izvedemo posredno s pomočjo operatorja NOT atribut IN tabela2(ni element množice) SELECT atr1,atr2,… FROM tabela1 WHERE NOT atrx IN (SELECT atrx FROM tabela2); Navedeni morajo biti isti atributi iz obeh tabel!

  13. Obiskuje Dijak Razlika - primer SELECT Dijak.IDDijak FROM Dijak WHERE NOT Dijak.IDDijak IN (SELECT Obiskuje.IDDijak FROM Obiskuje); [Dijak.IDDijak] Dijak - [Obiskuje.IDDijak] Obiskuje

  14. Presek • Rel. algebra – presek relacija1  relacija2 Značilnost: relacija1 in relacija2 morata imeti enaki shemi; Vrne skupne vrstice relacije1 in relacije2 brez dvojnikov (presek množic) • SQL • Operacijo razlike izvedemo posredno s pomočjo operatorja atribut IN tabela2 (je element množice) SELECT atr1,atr2,… FROM tabela1 WHERE atrx IN (SELECT atrx FROM tabela2); Navedeni morajo biti isti atributi iz obeh tabel!

  15. Presek - primer g2b g2a SELECT g2a.Ime FROM g2a WHERE g2a.Ime IN (SELECT g2b.Ime FROM g2b); [g2a.ime]g2a  [g2b.ime]g2b

  16. Kartezični produkt  • Zelo ‘prijazna operacija’ ): • Enostavna sintaksa • Dela vedno (pri tej operaciji ponavadi ne naredimo nobene sintaktične napake) • Poveže vse vrstice relacije1 z vsemi vrsticami relacije2 • Še zanimivejša izvedba: z enim stavkom povežite v kartezični produkt 3, 4 ali več relacij • Odgovori na kartezični produkt so tabele s ‘skromnim’ številom vrstic • Opomba: ne bodite presenečeni, če vam vmesna tabela za odgovor zavzame ves preostali prostor na disku

  17. Kartezični produkt  (nad.) • Rel. algebra – kartezični produkt • relacija1 X relacija2 • Značilnost: vrne vse možne kombinacije n-teric prve in druge relacije z vsemi atributi • SQL • Kartezični produkt implementiramo tako, da pod FROM navedemo vse tabele • SELECT * FROM tabela1, tabela2, …;

  18. Kartezični produkt - primer Dijak Krozek SELECT * FROM Dijak,Krozek; Dijak  Krozek krajši izsek rezultata poizvedbe si lahko ogledate na naslednji prosojnici ):

  19. Theta stik • Rel. algebra – theta stik • relacija1 |X| relacija2 [pogoj] • Značilnost: vrne vse možne kombinacije n-teric z vsemi atributi prve in druge relacije, ki ustrezajo pogoju • SQL • Theta stik implementiramo tako, da pod FROM navedemo vse tabele, pod WHERE pa pogoj(e) SELECT [*|tabela1.atr1,…] FROM tabela1, tabela2, … WHERE pogoj;

  20. Obiskuje Dijak Theta stik - primer SELECT * FROM Dijak,Obiskuje WHERE Dijak.IDDijak=Obiskuje.IDDijak; Dijak || Obiskuje [Dijak.IDdijak=Obiskuje.IDDijak]

  21. Naravni stik • Rel. algebra – naravni stik • relacija1 |X| relacija2 • Značilnost: relacija1 in relacija 2 morata imeti 1 ali več skupnih atributov • vrne vse možne kombinacije n-teric prve in druge relacije, pri katerih sta vrednosti skupnih atributov enaki; vrne vse atribute obeh relacij • SQL • Naravni stik implementiramo z opertorjem INNER JOIN tako, da pod FROM navedemo ime prve tabele pod INNER JOIN pa ime druge tabele in pogoj za povezovanje SELECT * FROM tabela1 INNER JOIN tabela2 ON (tabela1.atributx = tabela2.atributx);

  22. Naravni stik - primer Obiskuje SELECT Dijak.Priimek, Dijak.Ime, Obiskuje.IDKrozek FROM Dijak INNER JOIN Obiskuje ON Dijak.IDDijak = Obiskuje.IDDijak; [Dijak.Priimek, Dijak.Ime, Obiskuje.IDKrozek] (dijak |x| obiskuje) Dijak

  23. Količnik • Rel. algebra – količnik • relacija1 / relacija2 • Značilnost: relacija1 mora imeti vse atribute relacije2 in zraven še lastne (vsaj enega); vrne le atribute, ki so v relaciji 1 in niso v relaciji 2 in sicer le tiste n-terice relacije 1, za katere obstajajo vse kombinacije vrednosti z n-tericama v imenovalcu (relaciji 2) • SQL • Količnik v SQL stavku implementiramo posredno, s povezovanjem tabel in uporabo vgrajene agregirane funkcije COUNT SELECT * FROM tabela1 INNER JOIN tabela2 ON (tabela1.atributx = tabela2.atributx);

  24. Dijak Rel. algebra – postopek Kako dobim seznam vseh krožkov? [Krozek.IDKrozek] Krozek Kako dobim seznam kdo obiskuje katere krožke? relacija obiskuje Kako vem kateri IDDijak obiskuje vse krožke – uporabim količnik? obiskuje / [Krozek.IDKrozek] Krozek Ostal je le atribut IDDijak, kako pridem do priimkov in imen teh dijakov? naredim naravni stik Naredim projekcijo zahtevanih atributov (imena in priimka) Končna rešitev: [Dijak.ime,Dijak.priimek]((Obiskuje/[Krozek.IDKrozek] Krozek) |x| Dijak)) Količnik primerIzpišite imena dijakov, ki obiskujejo vse krožke! 2. 1. 3. 4. 5.

  25. Količnik – primer v SQL-u • SQL – postopek • Preštej koliko je vseh krožkov? SELECT COUNT(Krozek.IDKrozek) FROM Krozek; • Preštej koliko krožkov obiskuje posamezni dijak? SELECT Dijak.Ime, Dijak.Priimek, Count(Obiskuje.IDKrozek) FROM Dijak, Obiskuje WHERE (((Dijak.IDDijak)=[Obiskuje].[IDdijak])) GROUP BY Dijak.Ime, Dijak.Priimek, Dijak.IDDijak; • Izenači dobljena rezultata s pogojem HAVING • Končna rešitev: SELECT Dijak.Ime, Dijak.Priimek FROM Dijak, Obiskuje WHERE (((Dijak.IDDijak)=[Obiskuje].[IDdijak])) GROUP BY Dijak.Ime, Dijak.Priimek, Dijak.IDDijak HAVING (((Count(Obiskuje.IDKrozek))= (SELECT COUNT(Krozek.IDKrozek) FROM Krozek)));

  26. N & N – kdaj uporabiti katero operacijo? • Selekcija in projekcija • Naravni ali theta stik, selekcija, projekcija • Selekcija, projekcija za pogoj1 PRESEK selekcija, projekcija za pogoj2 • Selekcija, projekcija za pogoj1 RAZLIKA selekcija, projekcija za negiran pogoj 1 • Projekcija vseh RAZLIKA selekcija, projekcija tistih, ki ustrezajo pogoju 1 • Projekcija želenih atributov tabele 1 KOLIČNIK projekcija atributa pogoja iz tabele 2 • Izpišite …, ki ustrezajo pogoju (podatki so v eni tabeli) • Izpišite …, ki ustrezajo pogoju (podatki so v različnih tabelah) • Izpišite …, ki ustrezajo pogoju1 in ustrezajo pogoju 2 (pogoja se nanašata na isto zadevo) • Izpišite …, ki ustrezajo samo pogoju1 (obstaja možnost, da nekdo ustreza še kakšnem pogoju iste kategorije kot je pogoj 1) • Izpišite …, ki ne ustrezajo pogoju1 (obstaja možnost, da nekdo ustreza še kakšnem pogoju iste kategorije kot je pogoj 1) • Izpišite …, ki ustrezajo vsem pogojem (pogoji se nanašajo na zalogo vrednosti neke celotne tabele)

  27. Naloge& namigi(SQL stavek in izraz relacijske algebre) • Izpiši abecedni seznam imen krožkov. // projekcija • Izpiši priimke in imena dijakov razreda G2A. // projekcija, selekcija • Izpiši imena krožkov, ki jih obiskuje dijak z IDDijak 12. //projekcija, selekcija, naravni/theta stik • Izpiši imena krožkov, ki jih obiskuje Miha Novak. // projekcija, selekcija, naravni/theta stik • Izpiši imena krožkov, ki jih obiskujejo le dijaki razreda G2A. // projekcija, selekcija, naravni/theta stik, razlika • Izpiši imena krožkov, ki jih ne obiskuje Miha Novak. // projekcija, selekcija, naravni/theta stik, razlika • Izpiši imena krožkov, ki jih obiskuje samo Miha Novak. // projekcija, selekcija, naravni/theta stik, razlika • Izpiši imena krožkov, ki jih obiskuje vsaj 1 dijak razreda G2A in vsaj 1 dijak razreda G2B. // projekcija, selekcija, naravni/theta stik, presek • Izpiši priimke in imena dijakov, ki obiskujejo krožek Šah in Video (oba krožka). // projekcija, selekcija, naravni/theta stik, presek • Izpiši priimke in imena dijakov, ki ne obiskujejo nobenega krožka razen PHP. // projekcija, selekcija, naravni/theta stik, razlika • Izpiši imena krožkov, ki jih obiskujejo vsi dijaki. // projekcija, selekcija, naravni/theta stik, količnik • Izpiši imena krožkov, ki se ne izvajajo (nihče jih ne obiskuje). // projekcija, razlika

More Related