CS 4604: Introducon to Database Management...
Transcript of CS 4604: Introducon to Database Management...
![Page 1: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/1.jpg)
CS4604:Introduc0ontoDatabaseManagementSystems
B.AdityaPrakashLecture#3:SQL---Part1
![Page 2: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/2.jpg)
Announcements---Project§ Goal:designadatabasesystemapplica=onwithawebfront-end
§ ProjectAssignment1releasedtoday– DueFeb3,inclass,hardcopy(1perprojectgroup)– Totalof3duringthesemester
§ Heads-up:Startthinkingaboutgroups– samegroupforrestofthesemester– Youarefreetochooseyourownprojectmembers– Youcanpostonpiazzaaswell– Ifyoulikemetoassignyoutoagroup,sendmeemail– Minsize=2members,Maxsize=3members.Anythingelseneedsanexcellentreason(andmypermission)
Prakash2016 VTCS4604 2
![Page 3: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/3.jpg)
Annoucements
§ Reminder:Handout1isalsoonthewebsite– Wewilldiscussitinthenextclass,forprac=ce– Bringaprintedcopytoclass
Prakash2016 VTCS4604 3
![Page 4: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/4.jpg)
Lastlecture
§ Rela=onalAlgebra
Prakash2016 VTCS4604 4
![Page 5: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/5.jpg)
QuickQuiz:IndependenceofOperators
R \ S = R� (R� S)R ./C= �C(R⇥ S)R ./ S =??
Prakash2016 VTCS4604 5
![Page 6: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/6.jpg)
QuickQuiz:IndependenceofOperators
§ SupposeRandSsharetheaZributesA1,A2,..An§ LetLbethelistofaZributesinR\UnionlistofaZributesinS(sonoduplicateaZributes)
§ LetCbethecondi=onR.A1=S.A1ANDR.A2=S.A2AND…..R.An=S.An
R ./ S
R ./ S = ⇡L(�C(R⇥ S))Prakash2016 VTCS4604 6
![Page 7: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/7.jpg)
QuickAside:RAqueriescanbecomelong!
§ Normalexpression:
§ “Linear”Nota=on:
⇡S1.Name,S2.Name(�S1.Address=S2.Address
(⇢S1(Students)⇥ ⇢S2(Students)))
Pairs(P1, N1, A1, P2, N2, A2) := ⇢S1(Students)⇥ ⇢S2(Students)Matched(P1, N1, A1, P2, N2, A2) :=�A1=A2(Pairs(P1, N1, A1, P2, N2, A2))Answer(Name1, Name2) := ⇡N1,N2(Matched(P1, N1, A1, P2, N2, A2))
Prakash2016 VTCS4604 7
![Page 8: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/8.jpg)
Thislecture
§ StructuredQueryLanguage(SQL)– Pronounced‘Sequel’
Prakash2016 VTCS4604 8
![Page 9: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/9.jpg)
Overview - detailed - SQL
§ DML – select, from, where, renaming – set operations – ordering – aggregate functions – nested subqueries
§ other parts: DDL, constraints etc.
Prakash2016 VTCS4604 9
![Page 10: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/10.jpg)
Relational Query Languages
§ A major strength of the relational model: supports simple, powerful querying of data.
§ Two sublanguages: § DDL – Data Definition Language
– define and modify schema (at all 3 levels)
§ DML – Data Manipulation Language – Queries can be written intuitively.
Prakash2016 VTCS4604 10
![Page 11: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/11.jpg)
Relational languages
§ The DBMS is responsible for efficient evaluation. – Query optimizer: re-orders operations and
generates query plan
Prakash2016 VTCS4604 11
![Page 12: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/12.jpg)
The SQL Query Language
§ The most widely used relational query language. – Major standard is SQL-1999 (=SQL3)
• Introduced “Object-Relational” concepts • SQL 2003, SQL 2008 have small extensions
– SQL92 is a basic subset
Prakash2016 VTCS4604 12
![Page 13: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/13.jpg)
SQL (cont’d) – PostgreSQL has some “unique” aspects (as
do most systems). – XML is the next challenge for SQL.
Prakash2016 VTCS4604 13
![Page 14: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/14.jpg)
SQLite
§ Mostpopularembeddeddbintheworld
– Iphone(iOS),Android,Chrome….
§ (Very)Easytouse:noneedtosetitup§ Self-contained:data+schema§ DBonyourlaptop:usefulfortes=ng,understanding….
Prakash2016 VTCS4604 14
![Page 15: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/15.jpg)
DML
General form select a1, a2, … an from r1, r2, … rm where P [order by ….] [group by …] [having …]
Prakash2016 VTCS4604 15
![Page 16: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/16.jpg)
Reminder: mini-U db
STUDENTSsn Name Address
123 smith main str234 jones forbes ave
CLASSc-id c-name units
4602 s.e. 24603 o.s. 2
TAKESSSN c-id grade
123 4613 A234 4613 B
Prakash2016 VTCS4604 16
![Page 17: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/17.jpg)
DML - eg:
find the ssn(s) of everybody called “smith” select ssn from student where name=“smith”
Prakash2016 VTCS4604 17
![Page 18: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/18.jpg)
DML - observation
General form select a1, a2, … an from r1, r2, … rm where P equivalent rel. algebra query?
Prakash2016 VTCS4604 18
![Page 19: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/19.jpg)
DML - observation
General form select a1, a2, … an from r1, r2, … rm where P ))...21((,...2,1 rmrrPanaa ×××σπ
Prakash2016 VTCS4604 19
![Page 20: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/20.jpg)
DML – observation – Set VS Bags
General form select distinct a1, a2, … an from r1, r2, … rm where P ))...21((,...2,1 rmrrPanaa ×××σπ
Prakash2016 VTCS4604 20
NOTE:• Rela=onalAlgebraissetseman0cs(everythingisaset),soremoves
duplicatesautoma=cally.• SQLisbagseman0cs(everythingisamul=set),soremovesduplicatesonly
whenaskedto(usingdis=nct)
![Page 21: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/21.jpg)
select clause
select [distinct | all ] name from student where address=“main”
Prakash2016 VTCS4604 21
![Page 22: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/22.jpg)
where clause
find ssn(s) of all “smith”s on “main” select ssn from student where address=“main” and name = “smith”
Prakash2016 VTCS4604 22
![Page 23: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/23.jpg)
where clause
§ boolean operators (and or not …) § comparison operators (<, >, =, …) § and more…
Prakash2016 VTCS4604 23
![Page 24: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/24.jpg)
What about strings?
find student ssns who live on “main” (st or str or street - ie., “main st” or “main str” …)
Prakash2016 VTCS4604 24
![Page 25: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/25.jpg)
What about strings?
find student ssns who live on “main” (st or str or street) select ssn from student where address like “main%”
%: variable-length don’t care _: single-character don’t care
Prakash2016 VTCS4604 25
![Page 26: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/26.jpg)
from clause
find names of people taking 4604
STUDENTSsn Name Address
123 smith main str234 jones forbes ave
CLASSc-id c-name units
4602 s.e. 24603 o.s. 2
TAKESSSN c-id grade
123 4613 A234 4613 B
Prakash2016 VTCS4604 26
![Page 27: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/27.jpg)
from clause
find names of people taking 4604 select name from student, takes where ???
Prakash2016 VTCS4604 27
![Page 28: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/28.jpg)
from clause
find names of people taking 4604 select name from student, takes where student.ssn = takes.ssn and takes.c-id = “4604”
Prakash2016 VTCS4604 28
![Page 29: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/29.jpg)
renaming - tuple variables
find names of people taking 4604 select name from ourVeryOwnStudent, studentTakingClasses where ourVeryOwnStudent.ssn = studentTakingClasses.ssn and studentTakingClasses.c-id = “4604”
Prakash2016 VTCS4604 29
![Page 30: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/30.jpg)
renaming - tuple variables
find names of people taking 4604 select name from ourVeryOwnStudent as S,
studentTakingClasses as T where S.ssn =T.ssn and T.c-id = “4604”
Prakash2016 VTCS4604 30
![Page 31: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/31.jpg)
renaming - self-join
§ self -joins: find Tom’s grandparent(s)
PCp-id c-idMary TomPeter MaryJohn Tom
PCp-id c-idMary TomPeter MaryJohn Tom
Prakash2016 VTCS4604 31
![Page 32: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/32.jpg)
renaming - self-join
find grandparents of “Tom” (PC(p-id, c-id)) select gp.p-id from PC as gp, PC where gp.c-id= PC.p-id and PC.c-id = “Tom”
Prakash2016 VTCS4604 32
![Page 33: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/33.jpg)
renaming - theta join
find course names with more units than 4604 select c1.c-name from class as c1, class as c2 where c1.units > c2.units and c2.c-id = “4604”
Prakash2016 VTCS4604 33
![Page 34: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/34.jpg)
renaming - theta join
find course names with more units than 4604 select c1.c-name from class as c1, class as c2 where c1.units > c2.units and c2.c-id = “4604”
Prakash2016 VTCS4604 34
![Page 35: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/35.jpg)
Overview - detailed - SQL
§ DML – select, from, where – set operations – ordering – aggregate functions – nested subqueries
§ other parts: DDL, constraints etc.
Prakash2016 VTCS4604 35
![Page 36: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/36.jpg)
set operations
find ssn of people taking both 4604 and 4613
TAKESSSN c-id grade
123 4613 A234 4613 B
Prakash2016 VTCS4604 36
![Page 37: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/37.jpg)
set operations
find ssn of people taking both 4604 and 4613 select ssn from takes where c-id=“4604” and c-id=“4613”
Prakash2016 VTCS4604 37
![Page 38: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/38.jpg)
set operations
find ssn of people taking both 4604 and 4613 (select ssn from takes where c-id=“4604” ) Intersect (select ssn from takes where c-id=“4613” )
other ops: union , except
Prakash2016 VTCS4604 38
![Page 39: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/39.jpg)
Overview - detailed - SQL
§ DML – select, from, where – set operations – ordering – aggregate functions – nested subqueries
§ other parts: DDL, constraints etc.
Prakash2016 VTCS4604 39
![Page 40: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/40.jpg)
Ordering
find student records, sorted in name order select * from student where
Prakash2016 VTCS4604 40
![Page 41: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/41.jpg)
Ordering
find student records, sorted in name order select * from student order by name asc asc is the default
Prakash2016 VTCS4604 41
![Page 42: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/42.jpg)
Ordering
find student records, sorted in name order; break ties by reverse ssn select * from student order by name, ssn desc
Prakash2016 VTCS4604 42
![Page 43: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/43.jpg)
Overview - detailed - SQL
§ DML – select, from, where – set operations – ordering – aggregate functions – nested subqueries
§ other parts: DDL, constraints etc.
Prakash2016 VTCS4604 43
![Page 44: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/44.jpg)
Aggregate functions
find avg grade, across all students select ?? from takes
TAKESSSN c-id grade
123 4613 A234 4613 B
Prakash2016 VTCS4604 44
![Page 45: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/45.jpg)
Aggregate functions
find avg grade, across all students select avg(grade) from takes
§ result: a single number § Which other functions?
TAKESSSN c-id grade
123 4613 A234 4613 B
Prakash2016 VTCS4604 45
![Page 46: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/46.jpg)
Aggregate functions
§ A: sum count min max (std)
Prakash2016 VTCS4604 46
![Page 47: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/47.jpg)
Aggregate functions
find total number of enrollments select count(*) from takes
TAKESSSN c-id grade
123 4613 A234 4613 B
Prakash2016 VTCS4604 47
![Page 48: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/48.jpg)
Aggregate functions
find total number of students in 4604 select count(*) from takes where c-id=“4604”
TAKESSSN c-id grade
123 4613 A234 4613 B
Prakash2016 VTCS4604 48
![Page 49: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/49.jpg)
Aggregate functions
find total number of students in each course select count(*) from takes where ???
TAKESSSN c-id grade
123 4613 A234 4613 B
Prakash2016 VTCS4604 49
![Page 50: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/50.jpg)
Aggregate functions
find total number of students in each course select c-id, count(*) from takes group by c-id
c-id count4613 2
TAKESSSN c-id grade
123 4613 A234 4613 B
Prakash2016 VTCS4604 50
![Page 51: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/51.jpg)
Aggregate functions
find total number of students in each course select c-id, count(*) from takes group by c-id order by c-id
c-id count4613 2
TAKESSSN c-id grade
123 4613 A234 4613 B
Prakash2016 VTCS4604 51
![Page 52: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/52.jpg)
Aggregate functions
find total number of students in each course, and sort by count, decreasing select c-id, count(*) as pop from takes group by c-id order by pop desc
c-id pop4613 2
TAKESSSN c-id grade
123 4613 A234 4613 B
Prakash2016 VTCS4604 52
![Page 53: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/53.jpg)
Aggregate functions- ‘having’
find students with GPA > 3.0 SSN c-id grade
123 4613 4234 4613 3
Prakash2016 VTCS4604 53
![Page 54: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/54.jpg)
Aggregate functions- ‘having’
find students with GPA > 3.0 select ???, avg(grade) from takes group by ???
SSN c-id grade123 4613 4234 4613 3
Prakash2016 VTCS4604 54
![Page 55: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/55.jpg)
Aggregate functions- ‘having’
find students with GPA > 3.0 select ssn, avg(grade) from takes group by ssn ???
SSN avg(grade)123 4234 3
SSN c-id grade123 4613 4234 4613 3
Prakash2016 VTCS4604 55
![Page 56: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/56.jpg)
Aggregate functions- ‘having’
find students with GPA > 3.0 select ssn, avg(grade) from takes group by ssn having avg(grade)>3.0 ‘having’ <-> ‘where’ for groups
SSN avg(grade)123 4234 3
SSN c-id grade123 4613 4234 4613 3
Prakash2016 VTCS4604 56
![Page 57: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/57.jpg)
Aggregate functions- ‘having’
find students and GPA, for students with > 5 courses
select ssn, avg(grade) from takes group by ssn having count(*) > 5
SSN c-id grade123 4613 4234 4613 3
SSN avg(grade)123 4234 3
Prakash2016 VTCS4604 57
![Page 58: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/58.jpg)
Drill:Findtheageoftheyoungestsailorforeachra0nglevel
SELECTS.ra7ng,MIN(S.age)asageFROMSailorsSGROUPBYS.ra7ng
(1)Thesailorstuplesareputinto“samera=ng”groups.
(2)ComputetheMinimumageforeachra=nggroup.
Sid Sname Ra7ng Age22 Dus7n 7 45.031 Lubber 8 55.585 Art 3 25.532 Andy 8 25.595 Bob 3 63.5
Ra7ng Age3 25.53 63.57 45.08 55.58 25.5
Ra7ng Age3 25.57 45.08 25.5
(1)
(2)
Prakash2016 VTCS4604 58
![Page 59: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/59.jpg)
Drill:Findtheageoftheyoungestsailorforeachra0nglevel
SELECTS.ra7ng,MIN(S.age)asageFROMSailorsSGROUPBYS.ra7ng
(1)Thesailorstuplesareputinto“samera=ng”groups.
(2)ComputetheMinimumageforeachra=nggroup.
Sid Sname Ra7ng Age22 Dus7n 7 45.031 Lubber 8 55.585 Art 3 25.532 Andy 8 25.595 Bob 3 63.5
Ra7ng Age3 25.53 63.57 45.08 55.58 25.5
Ra7ng Age3 25.57 45.08 25.5
(1)
(2)
Prakash2016 VTCS4604 59
![Page 60: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/60.jpg)
Drill:Findtheageoftheyoungestsailorforeachra0nglevelthathasatleast2members
SELECTS.ra7ng,MIN(S.age)asminage
FROMSailorsSGROUPBYS.ra7ngHAVINGCOUNT(*)>1
1. Thesailorstuplesareputinto“samera=ng”groups.
2. Eliminategroupsthathave<2members.
3. ComputetheMinimumageforeachra=nggroup.
Sid Sname Ra7ng Age22 Dus7n 7 45.031 Lubber 8 55.585 Art 3 25.532 Andy 8 25.595 Bob 3 63.5
Ra7ng Age3 25.53 63.57 45.08 55.58 25.5
Ra7ng Minage3 25.58 25.5Prakash2016 VTCS4604 60
![Page 61: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/61.jpg)
Drill:Findtheageoftheyoungestsailorforeachra0nglevelthathasatleast2members
SELECTS.ra7ng,MIN(S.age)asminage
FROMSailorsSGROUPBYS.ra7ngHAVINGCOUNT(*)>1
1. Thesailorstuplesareputinto“samera=ng”groups.
2. Eliminategroupsthathave<2members.
3. ComputetheMinimumageforeachra=nggroup.
Sid Sname Ra7ng Age22 Dus7n 7 45.031 Lubber 8 55.585 Art 3 25.532 Andy 8 25.595 Bob 3 63.5
Ra7ng Age3 25.53 63.57 45.08 55.58 25.5
Ra7ng Minage3 25.58 25.5Prakash2016 VTCS4604 61
![Page 62: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/62.jpg)
Overview - detailed - SQL
§ DML – select, from, where – set operations – ordering – aggregate functions – nested subqueries
§ other parts: DDL, constraints etc.
Prakash2016 VTCS4604 62
![Page 63: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/63.jpg)
Recap: DML
General form select a1, a2, … an from r1, r2, … rm where P [order by ….] [group by …] [having …]
Prakash2016 VTCS4604 63
![Page 64: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/64.jpg)
DML - nested subqueries
find names of students of 4604 select name from student where ... “ssn in the set of people that take 4604”
Prakash2016 VTCS4604 64
![Page 65: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/65.jpg)
DML - nested subqueries
find names of students of 15-415 select name from student where ………...
select ssn from takes where c-id =“4604”
Prakash2016 VTCS4604 65
![Page 66: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/66.jpg)
DML - nested subqueries
find names of students of 15-415 select name from student where ssn in (
select ssn from takes where c-id =“4604”)
Prakash2016 VTCS4604 66
![Page 67: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/67.jpg)
DML - nested subqueries
§ ‘in’ compares a value with a set of values § ‘in’ can be combined other boolean ops § it is redundant (but user friendly!):
select name from student ….. where c-id = “4604” ….
Prakash2016 VTCS4604 67
![Page 68: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/68.jpg)
DML - nested subqueries
§ ‘in’ compares a value with a set of values § ‘in’ can be combined other boolean ops § it is redundant (but user friendly!):
select name from student, takes where c-id = “4604” and student.ssn=takes.ssn
Prakash2016 VTCS4604 68
![Page 69: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/69.jpg)
DML - nested subqueries
find names of students taking 4604 and living on “main str” select name from student where address=“main str” and ssn in ( select ssn from takes where c-id =“4604”)
Prakash2016 VTCS4604 69
![Page 70: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/70.jpg)
DML - nested subqueries
§ ‘in’ compares a value with a set of values § other operators like ‘in’ ??
Prakash2016 VTCS4604 70
![Page 71: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/71.jpg)
DML - nested subqueries
find student record with highest ssn select * from student where ssn is greater than every other ssn
Prakash2016 VTCS4604 71
![Page 72: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/72.jpg)
DML - nested subqueries
find student record with highest ssn select * from student where ssn greater than every select ssn from student
Prakash2016 VTCS4604 72
![Page 73: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/73.jpg)
DML - nested subqueries
find student record with highest ssn select * from student where ssn > all ( select ssn from student)
Prakash2016 VTCS4604 73
![Page 74: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/74.jpg)
DML - nested subqueries
find student record with highest ssn select * from student where ssn >= all ( select ssn from student)
Prakash2016 VTCS4604 74
![Page 75: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/75.jpg)
DML - nested subqueries
find student record with highest ssn - without nested subqueries?
select S1.ssn, S1.name, S1.address from student as S1, student as S2 where S1.ssn > S2.ssn is not the answer (what does it give?)
Prakash2016 VTCS4604 75
![Page 76: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/76.jpg)
DML - nested subqueries
STUDENTSsn Name Address
123 smith main str234 jones forbes ave
STUDENTSsn Name Address
123 smith main str234 jones forbes ave
S1 S2
S1. ssn S2.ssn ….123 123 …234 123 …123 234234 234
S1 x S2
S1.ssn>S2.ssn
Prakash2016 VTCS4604 76
![Page 77: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/77.jpg)
DML - nested subqueries
select S1.ssn, S1.name, S1.address from student as S1, student as S2 where S1.ssn > S2.ssn gives all but the smallest ssn - aha!
Prakash2016 VTCS4604 77
![Page 78: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/78.jpg)
DML - nested subqueries
find student record with highest ssn - without nested subqueries?
select S1.ssn, S1.name, S1.address from student as S1, student as S2 where S1.ssn < S2.ssn gives all but the highest - therefore….
Prakash2016 VTCS4604 78
![Page 79: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/79.jpg)
DML - nested subqueries
find student record with highest ssn - without nested subqueries?
(select * from student) except (select S1.ssn, S1.name, S1.address from student as S1, student as S2 where S1.ssn < S2.ssn)
Prakash2016 VTCS4604 79
![Page 80: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/80.jpg)
DML - nested subqueries
(select * from student) except (select S1.ssn, S1.name, S1.address from student as S1, student as S2 where S1.ssn < S2.ssn)
select*fromstudentwheressn>=all(selectssnfromstudent)
Prakash2016 VTCS4604 80
![Page 81: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/81.jpg)
DML - nested subqueries
Drill: Even more readable than select * from student where ssn >= all (select ssn from student)
Prakash2016 VTCS4604 81
![Page 82: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/82.jpg)
DML - nested subqueries
Drill: Even more readable than select * from student where ssn >= all (select ssn from student) select * from student where ssn in (select max(ssn) from student)
Prakash2016 VTCS4604 82
![Page 83: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/83.jpg)
from clause
Drill: find the ssn of the student with the highest GPA
STUDENTSsn Name Address
123 smith main str234 jones forbes ave
CLASSc-id c-name units
4602 s.e. 24603 o.s. 2
TAKESSSN c-id grade
123 4613 A234 4613 B
Prakash2016 VTCS4604 83
![Page 84: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/84.jpg)
DML - nested subqueries
Drill: find the ssn and GPA of the student with the highest GPA
select ssn, avg(grade) from takes where
Prakash2016 VTCS4604 84
![Page 85: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/85.jpg)
DML - nested subqueries
Drill: find the ssn and GPA of the student with the highest GPA select ssn, avg(grade) from takes group by ssn having avg( grade) …... greater than every other GPA on file
Prakash2016 VTCS4604 85
![Page 86: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/86.jpg)
DML - nested subqueries
Drill: find the ssn and GPA of the student with the highest GPA select ssn, avg(grade) from takes group by ssn having avg( grade) >= all ( select avg( grade ) from student group by ssn )
} all GPAs
Prakash2016 VTCS4604 86
![Page 87: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/87.jpg)
DML - nested subqueries
§ ‘in’ and ‘>= all’ compares a value with a set of values
§ other operators like these?
Prakash2016 VTCS4604 87
![Page 88: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/88.jpg)
DML - nested subqueries
§ <all(), <>all() ... § ‘<>all’ is identical to ‘not in’ § >some(), >= some () ... § ‘= some()’ is identical to ‘in’ § exists
Prakash2016 VTCS4604 88
![Page 89: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/89.jpg)
DML - nested subqueries
Drill for ‘exists’: find all courses that nobody enrolled in
select c-id from class ….with no tuples in ‘takes’
CLASSc-id c-name units
4602 s.e. 24603 o.s. 2
TAKESSSN c-id grade
123 4613 A234 4613 B
Prakash2016 VTCS4604 89
![Page 90: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/90.jpg)
DML - nested subqueries
Drill for ‘exists’: find all courses that nobody enrolled in
select c-id from class where not exists (select * from takes where class.c-id = takes.c-id)
Prakash2016 VTCS4604 90
![Page 91: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/91.jpg)
CorrelatedvsUncorrelated
§ Theprevioussubqueriesdidnotdependonanythingoutsidethesubquery– …andthusneedtobeexecutedjustonce.– Thesearecalleduncorrelated.
§ Acorrelatedsubquerydependsondatafromtheouterquery– …andthushastobeexecutedforeachrowoftheoutertable(s)
Prakash2016 VTCS4604 91
![Page 92: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/92.jpg)
CorrelatedSubqueries§ Findcoursenamesthathavebeenusedfortwoormore
courses.SELECT CourseNameFROM Courses AS FirstWHERE CourseName IN
(SELECT CourseNameFROM CoursesWHERE (Number <> First.Number)AND (DeptName <> First.DeptName));
Prakash2016 VTCS4604 92
![Page 93: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/93.jpg)
Evalua0ngCorrelatedSubqueriesSELECT CourseNameFROM Courses AS FirstWHERE CourseName IN
(SELECT CourseNameFROM CoursesWHERE (Number <> First.Number)AND (DeptName <> First.DeptName));
§ EvaluatequerybyloopingovertuplesofFirst,andforeachtupleevaluatethesubquery.
§ Scopingrules:anaZributeinasubquerybelongstooneofthetuplevariablesinthatsubquery’sFROMclause,ortotheimmediatelysurroundingsubquery,andsoon.
Prakash2016 VTCS4604 93
![Page 94: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/94.jpg)
Overview - detailed - SQL
§ DML – select, from, where – set operations – ordering – aggregate functions – nested subqueries
§ other parts: DDL, constraints etc.
Prakash2016 VTCS4604 94
![Page 95: CS 4604: Introducon to Database Management Systemscourses.cs.vt.edu/~cs4604/Spring16/lectures/lecture-3.pdf · 2016-05-11 · CS 4604: Introducon to Database Management Systems B.](https://reader035.fdocuments.in/reader035/viewer/2022070800/5f0218da7e708231d4028e31/html5/thumbnails/95.jpg)
(Next Week) Overview - detailed – SQL
§ DML § other parts:
– views – modifications – joins – DDL – Constraints
Prakash2016 VTCS4604 95