Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Cvičení 06 Ing. Pavel Bednář

Podobné prezentace


Prezentace na téma: "Cvičení 06 Ing. Pavel Bednář"— Transkript prezentace:

1 Cvičení 06 Ing. Pavel Bednář pavel.bednar.st1@vsb.cz http://pavelbednar.aspone.cz

2  Pro formulaci požadavků na výběr dat z relační databáze  Pracuje s celými relacemi  Operátory RA se aplikují na relace, výsledkem jsou opět relace.

3  Operace ◦ SjednoceníR ∪ S = { x | x  R ∨ x  S } ◦ Průnik R ∩ S = { x | x  R ∧ x  S } ◦ Rozdíl R - S = { x | x  R ∧ x  S } ◦ Kartezský součinR × S = { rs | r  R ∧ s  S } rs = { r1, …,rm,s1, …, sn}  Operace sjednocení a průnik musí být mezi shodnými relacemi  Výsledek operace v RA je bez duplicit.

4 Clen(rc,jmeno,prijmeni,email) Titul(cislo_titulu,nazev_cez, nazev_angl, delka) Pujceno(rc,cislo_titulu,datum) 1. Číslo titulu, který byl alespoň jednou půjčen Pujceno[cislo_titulu] 2. Číslo titulu, který dosud nebyl půjčen Titul[cislo_titulu] – Pujceno[cislo_titulu] 3. RČ člena, který si půjčil film číslo 123 (Pujceno(cislo_titulu=123))[rc] 4. RČ člena, který si půjčil alespoň jeden film, ale ne film 123 Pujceno[rc]-((Pujceno(cislo_titulu=123))[rc]) 5. RČ člena, který si nepůjčil film 123 Clen[rc]-((Pujceno(cislo_titulu=123))[rc])

5 Clen(rc,jmeno,prijmeni,email) Titul(cislo_titulu,nazev_cez, nazev_angl, delka) Pujceno(rc,cislo_titulu,datum) 6. RČ člena, který si půjčil jiný film než 12 (Pujceno(cislo_titulu<>123))[rc] 7. RČ člena, který si půjčil pouze film 123 Pujceno[rc]-((Pujceno(cislo_titulu<>123))[rc]) 8. Najděte názvy filmů, které byly alespoň jednou půjčeny (Pujceno[cislo_titulu][*]Titul)[nazev_cesky] 9. Najděte jména členů, kteří si dosud nepůjčili žádný film ((Clen[rc]-Pujceno[rc])[*]Clen)[jmeno, prijmeni] 10. Najděte názvy filmů, které si půjčili členové s příjmením Novák ((((Clen(prijmeni=‘Novák‘))[*]Pujceni)[cislo_titulu])[*]Titul)[nazev_cesky]

6 LÉKAŘ(licence,jménoL,specializace) PACIENT(ČP,jménoP,adresa,telefon,narození) NÁVŠTĚVA((licence,ČP,typ,datum,diagnóza,cena) 1. seznam všech specializací lékařů Lekar[specializace] 2. jmenný seznam všech ortopédů Lekar(specializace=‘ortoped‘)[jmenoL] 3. jmenný seznam pacientů starších 65 let Pacient(narozeni<1943)[jmenoP] 4. seznam licencí lékařů, které navštívila paní Marie Nová (Pacient(jmenoP=‘Marie Nova‘)[cp][*]Navsteva)[licence] 5. jména lékařů, kteří byli na návštěvě domů na zavolání (Navsteva(typ=‘domu na zavolani‘)[licence][*]Lekar)[jmenoL]

7 LÉKAŘ(licence,jménoL,specializace) PACIENT(ČP,jménoP,adresa,telefon,narození) NÁVŠTĚVA((licence,ČP,typ,datum,diagnóza,cena) 6. jména a adresy pacientů, kteří byli vyšetřeni dr. Lomem dne 23.5.93 ((Lekar(jmenoL=‘Lom‘)[licence][*]Navsteva)(datum=’23.5.1993‘)[cp][*]Pacient)[jmenoP,adresa] 7. jména a adresy pacientů, kterým byla určena diagnóza HIV+ (Navsteva(diagnoza=‘HIV+‘)[cp][*]Pacient)[jmenoP, adresa] 8. jména a specializace lékařů, kteří určili diagnózu vřed na dvanácterník (Navsteva(diagnoza=‘vred na Dvanacterniku‘)[licence][*]Lekar)[jmenoL, specializace] 9. jména a adresy pacientů, kteří byli vyšetřováni pouze dr. Čermákem (((Lekar(jmenoL=‘Cermak‘)[licence][*]Navsteva)[cp])- ((Lekar(jmenoL<>Cermak)[licence][*]Navsteva)[cp]))[*]Pacient)[jmenoP, adresa]

8 LÉKAŘ(licence,jménoL,specializace) PACIENT(ČP,jménoP,adresa,telefon,narození) NÁVŠTĚVA((licence,ČP,typ,datum,diagnóza,cena) 10. jména a adresy pacientů, kteří byli vyšetřováni dr. Čermákem. (Lekar(jmenoL=Cermak)[licence][*]Navsteva)[cp][*]Pacient)[jmenoP,adresa] 11. jména a adresy pacientů, kteří nebyli vyšetřováni dr. Čermákem (Pacient[cp]-(Lekar(jmenoL=Cermak)[licence][*]Navsteva)[cp]) [*]Pacient)[jmenoP, adresa] 12. Seznam jmen pacientů i lékařů Lekar[jmenoL] ∪ Pacient[jmenoP]

9  SQL je zkratka anglických slov Structured Query Language  Standardizovaný dotazovací jazyk používaný pro práci s daty v relačních databázích.  Čtyři základní skupiny ◦ Příkazy pro manipulaci s daty (SELECT, INSERT, UPDATE, DELETE, …) ◦ Příkazy pro definici dat (CREATE, ALTER, DROP, …) ◦ Příkazy pro řízení přístupových práv (GRANT, REVOKE) ◦ Příkazy pro řízení transakcí (START TRANSACTION, COMMIT, ROLLBACK)

10  Výběr sloupců  Select co From odkud

11  Select * from Student Student LoginPříjmeníJménoVěk Dra025DrábekTomáš25 Zub011ZubatáEvaNULL Nov098NovákBohumil28 LoginPříjmeníJménoVěk Dra025DrábekTomáš25 Zub011ZubatáEvaNULL Nov098NovákBohumil28

12  Select Věk, Příjmení from Student Student LoginPříjmeníJménoVěk Dra025DrábekTomáš25 Zub011ZubatáEvaNULL Nov098NovákBohumil28 VěkPříjmení 25Drábek NULLZubatá 28Novák

13  Select Věk as Stáří, Příjmení from Student Student LoginPříjmeníJménoVěk Dra025DrábekTomáš25 Zub011ZubatáEvaNULL Nov098NovákBohumil28 StáříPříjmení 25Drábek NULLZubatá 28Novák

14  Výběr sloupců  Select co From odkud  Select co From odkud Where podmínka

15  Select Věk, Příjmení from Student where (Věk=“25“) Student LoginPříjmeníJménoVěk Dra025DrábekTomáš25 Zub011ZubatáEva25 Nov098NovákBohumil28 VěkPříjmení 25Drábek 25Zubatá

16  Select Věk, Příjmení from Student where (Věk>“25“) Student LoginPříjmeníJménoVěk Dra025DrábekTomáš25 Zub011ZubatáEva25 Nov098NovákBohumil28 VěkPříjmení 28Novák

17  Select Věk, Příjmení from Student where (Věk<>“28“) Student LoginPříjmeníJménoVěk Dra025DrábekTomáš25 Zub011ZubatáEva25 Nov098NovákBohumil28 VěkPříjmení 25Drábek 25Zubatá

18  Select * from Student where (Věk between 24 AND 29) Student LoginPříjmeníJménoVěk Dra025DrábekTomáš25 Sip001ŠípkováRůžena29 Zub011ZubatáEva23 Nov098NovákBohumil28 LoginPříjmeníJménoVěk Dra025DrábekTomáš25 Sip001ŠípkováRůžena29 Nov098NovákBohumil28

19  Select * from Student where (Věk not between 24 AND 29) Student LoginPříjmeníJménoVěk Dra025DrábekTomáš25 Sip001ŠípkováRůžena29 Zub011ZubatáEva23 Nov098NovákBohumil28 LoginPříjmeníJménoVěk Zub011ZubatáEva23

20  Select * from Student where (Věk in (24,29,28)) Student LoginPříjmeníJménoVěk Dra025DrábekTomáš25 Sip001ŠípkováRůžena29 Zub011ZubatáEva23 Nov098NovákBohumil28 LoginPříjmeníJménoVěk Sip001ŠípkováRůžena29 Nov098NovákBohumil28

21  Select * from Student where (Věk not in (24,29,28)) Student LoginPříjmeníJménoVěk Dra025DrábekTomáš25 Sip001ŠípkováRůžena29 Zub011ZubatáEva23 Nov098NovákBohumil28 LoginPříjmeníJménoVěk Dra025DrábekTomáš25 Zub011ZubatáEva23

22  Select * from Student where (Věk is null) Student LoginPříjmeníJménoVěk Dra025DrábekTomášNULL Sip001ŠípkováRůžena29 Zub011ZubatáEvaNULL Nov098NovákBohumilNULL LoginPříjmeníJménoVěk Dra025DrábekTomášNULL Zub011ZubatáEvaNULL Nov098NovákBohumilNULL

23  Select * from Student where (Věk is not null) Student LoginPříjmeníJménoVěk Dra025DrábekTomášNULL Sip001ŠípkováRůžena29 Zub011ZubatáEvaNULL Nov098NovákBohumilNULL LoginPříjmeníJménoVěk Sip001ŠípkováRůžena29

24  Select * from Student where (Příjmení like “D%“) Student LoginPříjmeníJménoVěk Dra025DrábekTomášNULL Sip001ŠípkováRůžena29 Zub011ZubatáEvaNULL Dol098DolňákBohumilNULL LoginPříjmeníJménoVěk Dra025DrábekTomášNULL Dol098DolňákBohumilNULL

25  Select SUM(Věk) as CelkovýVěk from Student Student LoginPříjmeníJménoVěk Dra025DrábekTomáš23 Sip001ŠípkováRůžena29 Zub011ZubatáEvaNULL Nov098NovákBohumil13 CelkovýVěk 65

26  Select AVG(Věk) as PrůměrnýVěk from Student Student LoginPříjmeníJménoVěk Dra025DrábekTomáš23 Sip001ŠípkováRůžena29 Zub011ZubatáEvaNULL Nov098NovákBohumil13 PrůměrnýVěk 21,6666666

27  Select Count(*) as PočetStudentů from Student Student LoginPříjmeníJménoVěk Dra025DrábekTomáš23 Sip001ŠípkováRůžena29 Zub011ZubatáEvaNULL Nov098NovákBohumil13 PočetStudentů 4

28  Select Count(*) as PočetStudentů from Student where (Věk > 20) Student LoginPříjmeníJménoVěk Dra025DrábekTomáš23 Sip001ŠípkováRůžena29 Zub011ZubatáEvaNULL Nov098NovákBohumil13 PočetStudentů 2

29  Select MIN(Věk) as Nejmladší from Student Student LoginPříjmeníJménoVěk Dra025DrábekTomáš23 Sip001ŠípkováRůžena29 Zub011ZubatáEvaNULL Nov098NovákBohumil13 Nejmladší 13

30  Select MAX(Věk) as Nejstarší from Student Student LoginPříjmeníJménoVěk Dra025DrábekTomáš23 Sip001ŠípkováRůžena29 Zub011ZubatáEvaNULL Nov098NovákBohumil13 Nejstarší 29

31  Select Ročník, Count(*) as PočetStudentů from Student group by Ročník Student LoginPříjmeníJménoVěkRočník Dra025DrábekTomáš251 Sip001ŠípkováRůžena293 Zub011ZubatáEva232 Vid021VidlákováKateřina182 Nov098NovákBohumil281 RočníkPočetStudentů 12 22 31

32  Select * from Student order by Příjmení, Jméno Student LoginPříjmeníJménoVěkRočník Dra025DrábekTomáš251 Sip001ŠípkováRůžena293 Zub011ZubatáEva232 Vid021VidlákováKateřina182 Nov098DrábekBohumil281 LoginPříjmeníJménoVěkRočník Dra025DrábekBohumil281 Dra098DrábekTomáš251 Sip001ŠípkováRůžena293 Vid021VidlákováKateřina182 Zub011ZubatáEva232

33  Select * from Student order by Příjmení desc, Jméno asc Student LoginPříjmeníJménoVěkRočník Dra025DrábekTomáš251 Sip001ŠípkováRůžena293 Zub011ZubatáEva232 Vid021VidlákováKateřina182 Nov098DrábekBohumil281 LoginPříjmeníJménoVěkRočník Zub011ZubatáEva232 Vid021VidlákováKateřina182 Sip001ŠípkováRůžena293 Dra025DrábekBohumil281 Dra098DrábekTomáš251

34  Select login, (Jméno+‘ ‘+Příjmení) as CeléJméno from Student Student LoginPříjmeníJménoVěkRočník Dra025DrábekTomáš251 Zub011ZubatáEva232 Nov098NovákBohumil281 Sip001ŠípkováRůžena182 Vid021VidlákováKateřina281 LoginCeléJméno Dra025Tomáš Drábek Zub011Eva Zubatá Nov098Bohumil Novák Sip001Růžena Šípková Vid021Kateřina Vidláková

35  Select distinct Ročník from Student Student LoginPříjmeníJménoVěkRočník Dra025DrábekTomáš251 Zub011ZubatáEva232 Nov098NovákBohumil281 Sip001ŠípkováRůžena182 Vid021VidlákováKateřina281 Ročník 1 2 3

36  Select * from Student where (Ročník=1) OR (Věk<23) Student LoginPříjmeníJménoVěkRočník Dra025DrábekTomáš251 Zub011ZubatáEva232 Nov098NovákBohumil281 Sip001ŠípkováRůžena182 Vid021VidlákováKateřina281 LoginPříjmeníJménoVěkRočník Dra098DrábekTomáš251 Nov098NovákBohumil281 Sip001ŠípkováRůžena182 Vid021VidlákováKateřina281

37  Select * from Student s JOIN Fakulta f ON s.id_fakulta=f.id_fakulta Student LoginPříjmeníJménoVěkId_Fakulta Dra025DrábekTomáš251 Zub011ZubatáEva232 Nov098NovákBohumil281 Sip001ŠípkováRůžena182 Vid021VidlákováKateřina281 Fakulta Id_FakultaNázev 1FEI 2FBI 3HGB LoginPříjmeníJménoVěkId_FakultaNázev Dra025DrábekTomáš251FEI Zub011ZubatáEva232FBI Nov098NovákBohumil281FEI Sip001ŠípkováRůžena182FBI Vid021VidlákováKateřina281FEI

38 Clen(rc,jmeno,prijmeni,email) Titul(cislo_titulu,nazev_cez, nazev_angl, delka) Pujceno(rc,cislo_titulu,datum) 1. Číslo titulu, který byl alespoň jednou půjčen 2. Číslo titulu, který dosud nebyl půjčen 3. RČ člena, který si půjčil film číslo 123 4. RČ člena, který si půjčil alespoň jeden film, ale ne film 123 5. RČ člena, který si nepůjčil film 123

39 Clen(rc,jmeno,prijmeni,email) Titul(cislo_titulu,nazev_cez, nazev_angl, delka) Pujceno(rc,cislo_titulu,datum) 6. RČ člena, který si půjčil jiný film než 123 7. RČ člena, který si půjčil pouze film 123 8. Najděte názvy filmů, které byly alespoň jednou půjčeny 9. Najděte jména členů, kteří si dosud nepůjčili žádný film 10. Najděte názvy filmů, které si půjčili členové s příjmením Novák

40  LEFT (sloupec, počet_znaků)  RIGHT (sloupec, počet_znaků)  ROUND (sloupec, počet míst)  LOWER (sloupec)  UPPER (sloupec)  REVERSE (sloupec)  CHARINDEX (vyraz1, vyraz2 [,start_pozice])  REPLACE (sloupec, co_nahradit, za_co)  SUBSTRING (sloupec, start, kolik_znaků)  LEN (sloupec)

41  UNION  EXCEPT  INTERSECT  JOIN (INNER JOIN)  LEFT JOIN (LEFT OUTER JOIN)  RIGHT JOIN (RIGHT OUTER JOIN)


Stáhnout ppt "Cvičení 06 Ing. Pavel Bednář"

Podobné prezentace


Reklamy Google