Úvod do databázových systémů

35
Úvod do databázových systémů Cvičení 03 SQL Select Ing. Pavel Bednář [email protected] http:// pavelbednar.aspone.cz

description

Úvod do databázových systémů. Cvičení 03 SQL Select. Ing. Pavel Bednář [email protected] http://pavelbednar.aspone.cz. SQL. 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. - PowerPoint PPT Presentation

Transcript of Úvod do databázových systémů

Page 1: Úvod do databázových systémů

Úvod do databázových

systémů

Cvičení 03SQL Select

Ing. Pavel Bednář[email protected]://pavelbednar.aspone.cz

Page 2: Úvod do databázových systémů

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)

SQL

Page 3: Úvod do databázových systémů

Výběr sloupců Select co From odkud

Select

Page 4: Úvod do databázových systémů

Select * from Student

Select

StudentLogin Příjmení Jméno VěkDra025 Drábek Tomáš 25Zub011 Zubatá Eva NULLNov098 Novák Bohumil 28

Login Příjmení Jméno VěkDra025 Drábek Tomáš 25Zub011 Zubatá Eva NULLNov098 Novák Bohumil 28

Page 5: Úvod do databázových systémů

Select Věk, Příjmení from Student

Select

StudentLogin Příjmení Jméno VěkDra025 Drábek Tomáš 25Zub011 Zubatá Eva NULLNov098 Novák Bohumil 28

Věk Příjmení25Drábek

NULL Zubatá28Novák

Page 6: Úvod do databázových systémů

Select Věk as Stáří, Příjmení from Student

Select

StudentLogin Příjmení Jméno VěkDra025 Drábek Tomáš 25Zub011 Zubatá Eva NULLNov098 Novák Bohumil 28

Stáří Příjmení25Drábek

NULL Zubatá28Novák

Page 7: Úvod do databázových systémů

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

Select

Page 8: Úvod do databázových systémů

Select Věk, Příjmení from Student where (Věk=“25“)

Podmíněný select

StudentLogin Příjmení Jméno VěkDra025 Drábek Tomáš 25Zub011 Zubatá Eva 25Nov098 Novák Bohumil 28

Věk Příjmení25Drábek25Zubatá

Page 9: Úvod do databázových systémů

Select Věk, Příjmení from Student where (Věk>“25“)

Podmíněný select

StudentLogin Příjmení Jméno VěkDra025 Drábek Tomáš 25Zub011 Zubatá Eva 25Nov098 Novák Bohumil 28

Věk Příjmení28Novák

Page 10: Úvod do databázových systémů

Select Věk, Příjmení from Student where (Věk<>“28“)

Podmíněný select

StudentLogin Příjmení Jméno VěkDra025 Drábek Tomáš 25Zub011 Zubatá Eva 25Nov098 Novák Bohumil 28

Věk Příjmení25Drábek25Zubatá

Page 11: Úvod do databázových systémů

Select * from Student where (Věk between 24 AND 29)

Operátor betweenStudent

Login Příjmení Jméno VěkDra025 Drábek Tomáš 25Sip001 Šípková Růžena 29Zub011 Zubatá Eva 23Nov098 Novák Bohumil 28

Login Příjmení Jméno VěkDra025 Drábek Tomáš 25Sip001 Šípková Růžena 29Nov098 Novák Bohumil 28

Page 12: Úvod do databázových systémů

Select * from Student where (Věk not between 24 AND 29)

Operátor not betweenStudent

Login Příjmení Jméno VěkDra025 Drábek Tomáš 25Sip001 Šípková Růžena 29Zub011 Zubatá Eva 23Nov098 Novák Bohumil 28

Login Příjmení Jméno VěkZub011 Zubatá Eva 23

Page 13: Úvod do databázových systémů

Select * from Student where (Věk in (24,29,28))

Operátor inStudent

Login Příjmení Jméno VěkDra025 Drábek Tomáš 25Sip001 Šípková Růžena 29Zub011 Zubatá Eva 23Nov098 Novák Bohumil 28

Login Příjmení Jméno VěkSip001 Šípková Růžena 29Nov098 Novák Bohumil 28

Page 14: Úvod do databázových systémů

Select * from Student where (Věk not in (24,29,28))

Operátor not inStudent

Login Příjmení Jméno VěkDra025 Drábek Tomáš 25Sip001 Šípková Růžena 29Zub011 Zubatá Eva 23Nov098 Novák Bohumil 28

Login Příjmení Jméno VěkDra025 Drábek Tomáš 25Zub011 Zubatá Eva 23

Page 15: Úvod do databázových systémů

Select * from Student where (Věk is null)

Operátor isStudent

Login Příjmení Jméno VěkDra025 Drábek Tomáš NULLSip001 Šípková Růžena 29Zub011 Zubatá Eva NULLNov098 Novák Bohumil NULL

Login Příjmení Jméno VěkDra025 Drábek Tomáš NULLZub011 Zubatá Eva NULLNov098 Novák Bohumil NULL

Page 16: Úvod do databázových systémů

Select * from Student where (Věk is not null)

Operátor is notStudent

Login Příjmení Jméno VěkDra025 Drábek Tomáš NULLSip001 Šípková Růžena 29Zub011 Zubatá Eva NULLNov098 Novák Bohumil NULL

Login Příjmení Jméno VěkSip001 Šípková Růžena 29

Page 17: Úvod do databázových systémů

Select * from Student where (Příjmení like “D%“)

Operátor likeStudent

Login Příjmení Jméno VěkDra025 Drábek Tomáš NULLSip001 Šípková Růžena 29Zub011 Zubatá Eva NULLDol098 Dolňák Bohumil NULL

Login Příjmení Jméno VěkDra025 Drábek Tomáš NULLDol098 Dolňák Bohumil NULL

Page 18: Úvod do databázových systémů

Select SUM(Věk) as CelkovýVěk from Student

Operátor SUMStudent

Login Příjmení Jméno VěkDra025 Drábek Tomáš 23Sip001 Šípková Růžena 29Zub011 Zubatá Eva NULLNov098 Novák Bohumil 13

CelkovýVěk65

Page 19: Úvod do databázových systémů

Select AVG(Věk) as PrůměrnýVěk from Student

Operátor AVGStudent

Login Příjmení Jméno VěkDra025 Drábek Tomáš 23Sip001 Šípková Růžena 29Zub011 Zubatá Eva NULLNov098 Novák Bohumil 13

PrůměrnýVěk21,6666666

Page 20: Úvod do databázových systémů

Select Count(*) as PočetStudentů from Student

Operátor CountStudent

Login Příjmení Jméno VěkDra025 Drábek Tomáš 23Sip001 Šípková Růžena 29Zub011 Zubatá Eva NULLNov098 Novák Bohumil 13

PočetStudentů4

Page 21: Úvod do databázových systémů

Select Count(*) as PočetStudentů from Student where (Věk > 20)

Operátor CountStudent

Login Příjmení Jméno VěkDra025 Drábek Tomáš 23Sip001 Šípková Růžena 29Zub011 Zubatá Eva NULLNov098 Novák Bohumil 13

PočetStudentů2

Page 22: Úvod do databázových systémů

Select MIN(Věk) as Nejmladší from Student

Operátor MinStudent

Login Příjmení Jméno VěkDra025 Drábek Tomáš 23Sip001 Šípková Růžena 29Zub011 Zubatá Eva NULLNov098 Novák Bohumil 13

Nejmladší 13

Page 23: Úvod do databázových systémů

Select MAX(Věk) as Nejstarší from Student

Operátor MaxStudent

Login Příjmení Jméno VěkDra025 Drábek Tomáš 23Sip001 Šípková Růžena 29Zub011 Zubatá Eva NULLNov098 Novák Bohumil 13

Nejstarší 29

Page 24: Úvod do databázových systémů

Select Ročník, Count(*) as PočetStudentů from Student group by Ročník

Operátor Group ByStudent

Login Příjmení Jméno Věk RočníkDra025 Drábek Tomáš 25 1Sip001 Šípková Růžena 29 3Zub011 Zubatá Eva 23 2Vid021 Vidláková Kateřina 18 2Nov098 Novák Bohumil 28 1

Ročník PočetStudentů 1 22 23 1

Page 25: Úvod do databázových systémů

Select * from Student order by Příjmení, Jméno

Operátor Order ByStudent

Login Příjmení Jméno Věk RočníkDra025 Drábek Tomáš 25 1Sip001 Šípková Růžena 29 3Zub011 Zubatá Eva 23 2Vid021 Vidláková Kateřina 18 2Nov098 Drábek Bohumil 28 1

Login Příjmení Jméno Věk RočníkDra025 Drábek Bohumil 28 1Dra098 Drábek Tomáš 25 1Sip001 Šípková Růžena 29 3Vid021 Vidláková Kateřina 18 2Zub011 Zubatá Eva 23 2

Page 26: Úvod do databázových systémů

Select * from Student order by Příjmení desc, Jméno asc

Operátor Order ByStudent

Login Příjmení Jméno Věk RočníkDra025 Drábek Tomáš 25 1Sip001 Šípková Růžena 29 3Zub011 Zubatá Eva 23 2Vid021 Vidláková Kateřina 18 2Nov098 Drábek Bohumil 28 1

Login Příjmení Jméno Věk RočníkZub011 Zubatá Eva 23 2Vid021 Vidláková Kateřina 18 2Sip001 Šípková Růžena 29 3Dra025 Drábek Bohumil 28 1Dra098 Drábek Tomáš 25 1

Page 27: Úvod do databázových systémů

Select login, (Jméno+‘ ‘+Příjmení) as CeléJméno from Student

Operátor ConcatStudent

Login Příjmení Jméno Věk RočníkDra025 Drábek Tomáš 25 1Zub011 Zubatá Eva 23 2Nov098 Novák Bohumil 28 1Sip001 Šípková Růžena 18 2Vid021 Vidláková Kateřina 28 1

Login CeléJménoDra025 Tomáš DrábekZub011 Eva ZubatáNov098 Bohumil NovákSip001 Růžena ŠípkováVid021 Kateřina Vidláková

Page 28: Úvod do databázových systémů

Select distinct Ročník from Student

Operátor DistinctStudent

Login Příjmení Jméno Věk RočníkDra025 Drábek Tomáš 25 1Zub011 Zubatá Eva 23 2Nov098 Novák Bohumil 28 1Sip001 Šípková Růžena 18 2Vid021 Vidláková Kateřina 28 1

Ročník123

Page 29: Úvod do databázových systémů

Select * from Student where (Ročník=1) OR (Věk<23)

Logické operátoryStudent

Login Příjmení Jméno Věk RočníkDra025 Drábek Tomáš 25 1Zub011 Zubatá Eva 23 2Nov098 Novák Bohumil 28 1Sip001 Šípková Růžena 18 2Vid021 Vidláková Kateřina 28 1

Login Příjmení Jméno Věk RočníkDra098 Drábek Tomáš 25 1Nov098 Novák Bohumil 28 1Sip001 Šípková Růžena 18 2Vid021 Vidláková Kateřina 28 1

Page 30: Úvod do databázových systémů

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

JoinStudent

Login Příjmení Jméno Věk Id_FakultaDra025 Drábek Tomáš 25 1Zub011 Zubatá Eva 23 2Nov098 Novák Bohumil 28 1Sip001 Šípková Růžena 18 2Vid021 Vidláková Kateřina 28 1

FakultaId_Fakulta Název

1FEI2FBI3HGB

Login Příjmení Jméno Věk Id_Fakulta NázevDra025 Drábek Tomáš 25 1 FEIZub011 Zubatá Eva 23 2 FBINov098 Novák Bohumil 28 1 FEISip001 Šípková Růžena 18 2 FBIVid021 Vidláková Kateřina 28 1 FEI

Page 31: Úvod do databázových systémů

Vrať studenty, kteří neměli letos žádné vyznamení.

Select * from Student WHERE NOT EXISTS (SELECT * from Vyznameni WHERE rok=2012)

Exists

StudentLogin Příjmení Jméno Věk Id_FakultaDra025 Drábek Tomáš 25 1Zub011 Zubatá Eva 23 2Nov098 Novák Bohumil 28 1Sip001 Šípková Růžena 18 2Vid021 Vidláková Kateřina 28 1

VyznamenaniLogin Rok

Zub0112011Sip0012012Vid0212012

Login Příjmení Jméno Věk Id_FakultaDra025 Drábek Tomáš 25 1Zub011 Zubatá Eva 23 2Nov098 Novák Bohumil 28 1

Page 32: Úvod do databázových systémů

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)

Další příkazy

Page 33: Úvod do databázových systémů

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

Další příkazy

Page 34: Úvod do databázových systémů

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čen3. RČ člena, který si půjčil film číslo 1234. RČ člena, který si půjčil alespoň jeden film,

ale ne film 1235. RČ člena, který si nepůjčil film 123

Příklady k procvičení

Page 35: Úvod do databázových systémů

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ž 1237. RČ člena, který si půjčil pouze film 1238. Najděte názvy filmů, které byly alespoň jednou půjčeny9. Najděte jména členů, kteří si dosud nepůjčili žádný film10. Najděte názvy filmů, které si půjčili členové s příjmením

Novák

Příklady k procvičení