Úvod do databázových systémů
Post on 02-Jan-2016
37 Views
Preview:
DESCRIPTION
TRANSCRIPT
Úvod do databázových
systémů
Cvičení 03SQL Select
Ing. Pavel Bednářpavel.bednar@vsb.czhttp://pavelbednar.aspone.cz
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
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
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
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
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á
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
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á
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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á
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ík12
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
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
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
UNION EXCEPT INTERSECT JOIN (INNER JOIN) LEFT JOIN (LEFT OUTER JOIN) RIGHT JOIN (RIGHT OUTER JOIN)
Další příkazy
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í
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í
top related