Cvičení 06 Ing. Pavel Bednář

Slides:



Advertisements
Podobné prezentace
PLAYBOY Kalendar 2007.
Advertisements

Aplikační a programové vybavení
KIV/ZIS Cvičení 6 SQL - SELECT.
MS ACCESS - DOTAZY DATABÁZOVÉ SYSTÉMY.
SQL Další dotazy a pohledy
Úvod do databázových systémů
Cvičení 05 Joins, isNull, case when Ing. Pavel Bednář
Ukázka písemné zkoušky z TZD
Základy jazyka SQL Jan Tichava
SQL: DDL v ORACLE CREATE TABLE jméno_tabulky (atribut datový_typ [DEFAULT][attribut_constraint] [, atribut datový_typ [DEFAULT] [attribut_constraint]],...
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
DB1 – 9. cvičení Optimalizace dotazu Konkurenční přístup a deadlock Indexace Transakce.
Databázové systémy SQL Výběr dat.
YDASYS1 Ing. Monika Šimková.
Fakulta elektrotechniky a informatiky
Cvičení 03 SQL Select Ing. Pavel Bednář
Informační systémy Realizace uložených procedur a spouští, jejich praktické využití.
Informační systémy Nástroje pro sběr dat, návrh a realizace databáze.
AGREGACE Distinct, Group By, Having, SUM, …. DISTINCT  Slučování stejných řádků ve výsledku dotazu. AGREGACE 2 JménoPříjmeníID FrantišekVomáčka1 JosefPokorný2.
Další dotazy SQL Structured Query Language. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
SQL Structured Query Language
Informatika pro ekonomy II přednáška 11
Teorie zpracování dat Ukázková písemka. Kapitola 4 Je dána tabulka Zam (login, jmeno, plat, funkce), implementovaná je v SŘBD používajícím indexové soubory.
Databázové systémy 1 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy I Přednáška č. 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Temporální databáze a TSQL
Vizualizace projektu větrného parku Stříbro porovnání variant 13 VTE a menšího parku.
Úvod do databázových systémů
SQL Přednáška DB1. Literatura CONNOLLY, T.M.-BEGG,C.E.-STRACHAN,A.D.: Database Systems – A Practial Approach to Design, Implementation and Management.
Cvičení 13 Ing. Pavel Bednář
MySQL - Vytvoření nové tabulky  create table jméno_tabulky (jméno_položky typ_položky,... ) Přehled nejběžnějších datových typů Přehled nejběžnějších.
Relační algebra jako základ SQL Helena Palovská. Různé modely pro databázovou strukturu.
Databázové systémy 2 Cvičení č. 7 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Cvičení 04 SQL Exists, Any, All Ing. Pavel Bednář
Fakulta elektrotechniky a informatiky
Databázové systémy I Cvičení č. 9 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy Přednáška č. 6.
SQL – základní pojmy Ing. Roman Danel, Ph.D.
SQL PVA Jan Hora. SQL „graficky“ Grafický vs. pravý SQL SELECT ORDED BY WHERE.
Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Fakulta elektrotechniky a informatiky
Databázové systémy Přednáška č. 3.
Číslo šablony: III/2 VY_32_INOVACE_P4_3.8 Tematická oblast: Aplikační software pro práci s informacemi II. Databáze – základy SQL Typ: DUM - kombinovaný.
Databázové systémy I Cvičení č. 7 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Informatika II PAA DOTAZOVACÍ JAZYKY
Cvičení 02 Relační algebra Ing. Pavel Bednář
Aplikační a programové vybavení
Databáze velké množství dat pevně dané struktury
XQuery Dotazovací jazyk XML Daniel Privalenkov. O čem bude prezentace Nutnost dotazovacího jazyku v XML Rychlý přehled XQuery Několik příkladů.
Databázové systémy SQL Výběr dat.
 Agregační funkce  Agregační funkce jsou to funkce, které nějakým způsobem zpracují více hodnot a jako výsledek vrátí hodnotu jednu COUNT()  Funkce.
SQL Další dotazy a pohledy Databázové systémy. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
Projekt DBS1A Troup František, ITV. Základní entitní tabulky VZANR(id_Vycet, od_zanr,od_film) ZANR(id_Zanr, oznaceni_zanr) ZAKAZNIK(os_Cislo, jmeno, prijmeni,
CUBE - Operátor relační agregace
J. Pokorný, I Halaška1 DBS: SQL92 Jaroslav Pokorný MFF UK, Praha
Teorie zpracování dat RELAČNÍ DATOVÝ MODEL.
SQL Structured Query Language
J. Macur, FAST VUT, 2011 (kombinované studium BU04)
Základy RA RA = matematický základ pro relační modul DBS jazyk SQL Relační DBS = Relační algebra + Relační model Doména = množina hodnot stejného typu/významu.
SQL – příkaz SELECT Ing. Roman Danel, Ph.D.
Databázové systémy I Přednáška 5 Databázové systémy 1 – KIT/IDAS1
Databázové systémy I Přednáška 8 Databázové systémy 1 – KIT/IDAS1
Databázové systémy a SQL
Optimalizace SQL dotazů
Počítačová cvičení z předmětu Datové sklady
Dotazovací jazyk SQL - II
Transkript prezentace:

Cvičení 06 Ing. Pavel Bednář

 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.

 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.

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 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])

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ž 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]

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]

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 ((Lekar(jmenoL=‘Lom‘)[licence][*]Navsteva)(datum=’ ‘)[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]

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]

 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 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

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

 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)