Cvičení 03 SQL Select Ing. Pavel Bednář
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)
Výběr sloupců Select co From odkud
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
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
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
Výběr sloupců Select co From odkud Select co From odkud Where podmínka
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á
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
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á
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
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
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
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
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
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
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
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
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,
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
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
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
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
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ů
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
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
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á
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
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
Select * from Student s JOIN Fakulta f ON s.id_fakulta=f.id_fakulta Select * from, Student s. Faktura f WHERE 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
Vrať studenty, kteří neměli letos žádné vyznamení. Select * from Student WHERE NOT EXISTS (SELECT * from Vyznameni WHERE rok=2012) Student LoginPříjmeníJménoVěkId_Fakulta Dra025DrábekTomáš251 Zub011ZubatáEva232 Nov098NovákBohumil281 Sip001ŠípkováRůžena182 Vid021VidlákováKateřina281 Vyznamenani LoginRok Zub Sip Vid LoginPříjmeníJménoVěkId_Fakulta Dra025DrábekTomáš251 Zub011ZubatáEva232 Nov098NovákBohumil281
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)
UNION EXCEPT INTERSECT JOIN (INNER JOIN) LEFT JOIN (LEFT OUTER JOIN) RIGHT JOIN (RIGHT OUTER JOIN)
Clen(rc,jmeno,prijmeni, ) 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 RČ člena, který si půjčil alespoň jeden film, ale ne film RČ člena, který si nepůjčil film 123
Clen(rc,jmeno,prijmeni, ) Titul(cislo_titulu,nazev_cez, nazev_angl, delka) Pujceno(rc,cislo_titulu,datum) 6. RČ člena, který si půjčil jiný film než RČ člena, který si půjčil pouze film 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