ISOM MIS710 Module 2 Query Languages – RA/RC and SQL Arijit Sengupta
Preview:
Citation preview
- Slide 1
- ISOM MIS710 Module 2 Query Languages RA/RC and SQL Arijit
Sengupta
- Slide 2
- ISOM Structure of this semester Database Fundamentals
Relational Model Normalization Conceptual Modeling Query Languages
Advanced SQL Transaction Management Java DB Applications JDBC Data
Mining 0. Intro 1. Design 3. Applications 4. Advanced Topics
NewbieUsersProfessionalsDesigners MIS710 2. Querying
Developers
- Slide 3
- ISOM Todays Buzzwords Query Languages Formal Query Languages
Procedural and Declarative Languages Relational Algebra Relational
Calculus SQL Aggregate Functions Nested Queries
- Slide 4
- ISOM Objectives At the end of the lecture, you should Get a
formal as well as practical perspective on query languages Have a
background on query language basics (how they came about) Be able
to write simple SQL queries from the specification Be able to look
at SQL queries and understand what it is supposed to do Be able to
write complex SQL queries involving nesting Execute queries on a
database system
- Slide 5
- ISOM Set Theory Basics A set: a collection of distinct items
with no particular order Set description: { b | b is a Database
Book} {c | c is a city with a population of over a million} {x | 1
< x < 10 and x is a natural number} Most basic set operation:
Membership: x S (read as x belongs to S if x is in the set S) 3.7
who have taken a CIS Course TRC: DRC:">
- ISOM Find students with GPA > 3.7 who have taken a CIS
Course TRC: DRC:
- Slide 24
- ISOM Find students who have taken all CIS courses DRC: TRC: How
will you do this with Relational Algebra?
- Slide 25
- ISOM Monotonic and Non-Monotonic Queries Monotonic queries:
queries for which the size of the results either increase or stay
the same as the size of the inputs increase. The result size never
decreases Non-monotonic queries: queries for which it is possible
that the size of the result will DECREASE when the size of the
input increases Examples of each? Which of the algebra operations
is non-monotonic? What does this signify?
- Slide 26
- ISOM Structured Query Language Need for SQL Operations on Data
Types Definition Manipulation Operations on Sets Declarative
(calculus) vs. Procedural (algebra) Evolution of SQL
SEQUEL..SQL_92.. SQL_93 SQL Dialects Does SQL treat Relations as
Sets?
- Slide 27
- ISOM Horizontal Slices Restriction Specifying Conditions
Unconditional List all students select* fromSTUDENT; (Student)
Conditional List all students with GPA > 3.0 select* fromSTUDENT
whereGPA > 3.0; GPA > 3.0 (Student) Algebra: selection or
restriction (R)
- Slide 28
- ISOM Pattern Matching %any string with n characters, n>=0
_any single character. x exact sequence of string x. List all CIS
3200 level courses. select* fromCOURSE wherecourse# like ? ; List
all CIS courses. select* fromCOURSE wherecourse# like CIS%;
- Slide 29
- ISOM Specifying Conditions List all students in... select*
fromSTUDENT wherecity in (Boston,Atlanta); List all students in...
select* fromSTUDENT wherezip not between 60115 and 60123;
- Slide 30
- ISOM Missing or Incomplete Information List all students whose
address or telephone number is missing: select* fromSTUDENT
whereAddress is null or GPA is null;
- Slide 31
- ISOM Vertical Slices Projection Specifying Elements No
Specification List all information about Students select*
fromSTUDENT; (Student) Conditional List IDs, names, and addresses
of all students select StudentID, name, address from STUDENT;
StudentID, name, address (Student) Algebra: projection (R)
- Slide 32
- ISOM Does SQL treat Relations as Sets? What are the different
salaries we pay to our employees? selectsalary fromEMPLOYEE; OR is
the following better? selectDISTINCT salary fromEMPLOYEE;
- Slide 33
- ISOM Horizontal and Vertical Query: List all student ID, names
and addresses who have GPA > 3.0 and date of birth before Jan 1,
1980. selectStudentID, Name, Address fromSTUDENT whereGPA > 3.0
and DOB < 1-Jan-80 order byName DESC; Algebra: StudentID,name,
address ( GPA > 3.0 and DOB < 1-Jan-80 (STUDENT)) Calculus:
{t.StudentID, t.name, t.address | t Student t.GPA > 3.0 t.DOB
< 1-Jan-80} Order by sorts result in descending (DESC) order.
Note: The default order is ascending (ASC) as in: order by
Name;
- Slide 34
- ISOM Summaries and Aggregates Calculate the average GPA
selectavg. (GPA) from STUDENT, Find the lowest GPAselectmin (GPA)
as minGPA from STUDENT, How many CIS majors?selectcount (StudentId)
fromSTUDENT wheremajor=CIS; Discarding duplicatesselectavg
(distinct GPA) STUDENT where major=CIS (is this above query
correct?)
- Slide 35
- ISOM Aggregate Functions COUNT (attr)- a simple count of values
in attr SUM (attr)- sum of values in attr AVG (attr)- average of
values in attr MAX (attr)- maximum value in attr MIN (attr)-
minimum value in attr Take effect after all the data is retrieved
from the database Applied to either the entire resulting relation
or groups Cant be involved in any query qualifications (where
clause) n Would the following query be permitted? selectStudentId
fromSTUDENT whereGPA = max (GPA);
- Slide 36
- ISOM Grouping Results Obtained n Show all students enrolled in
each course. selectcno, StudentID fromREGISTRATION group by cno;Is
this grouping OK? n Calculate the average GPA of students by
county. selectcounty, avg (GPA) as CountyGPA fromSTUDENT group by
county; n Calculate the enrollment of each class. selectcno, year,
term, count (StudentID) as enroll fromREGISTRATION group by cno,
year, term;
- Slide 37
- ISOM Selections on Groups n Show all CIS courses that are full.
selectcno, count (StudentID) fromREGISTRATION group by cno
havingcount (StudentID) > 29;
- Slide 38
- ISOM Union n List students who live in Atlanta or GPA > 3.0
selectStudentID, Name, DOB, Address fromSTUDENT where Address =
Atlanta union selectStudentID, Name, DOB, Address fromSTUDENT where
GPA > 3.0; Can we perform a Union on any two Relations ?
- Slide 39
- ISOM Union Compatibility n Two relations, A and B, are
union-compatible if A and B contain a same number of attributes,
and The corresponding attributes of the two have the same domains
Examples CIS=Student (ID: D id ; Name: D name ; Address: D addr ;
Grade: D grade ); Senior-Student (SName: D name ; S#: D id ; Home:
D addr ; Grade: D grade ); Course (C#: D number ; Title: D str ;
Credits: D number ) Are CIS-Student and Senior-Student union
compatible? Are CIS-Student and Course union compatible? What
happens if we have duplicate tuples? What will be the column names
in the resulting Relation?
- Slide 40
- ISOM Union, Intersect, Minus selectCUSTNAME, ZIP fromCUSTOMER
where STATE = MA UNION selectSUPNAME, ZIP fromSUPPLIER whereSTATE =
MA ORDER BY 2; selectCUSTNAME, ZIP fromCUSTOMER where STATE = MA
UNION selectSUPNAME, ZIP fromSUPPLIER whereSTATE = MA ORDER BY 2;
selectCUSTNAME, ZIP fromCUSTOMER where STATE = MA INTERSECT
selectSUPNAME, ZIP fromSUPPLIER whereSTATE = MA ORDER BY 2;
selectCUSTNAME, ZIP fromCUSTOMER where STATE = MA INTERSECT
selectSUPNAME, ZIP fromSUPPLIER whereSTATE = MA ORDER BY 2;
selectCUSTNAME, ZIP fromCUSTOMER where STATE = MA MINUS
selectSUPNAME, ZIP fromSUPPLIER whereSTATE = MA ORDER BY 2;
selectCUSTNAME, ZIP fromCUSTOMER where STATE = MA MINUS
selectSUPNAME, ZIP fromSUPPLIER whereSTATE = MA ORDER BY 2; B A B A
B AA
- Slide 41
- ISOM Connecting/Linking Relations List information about all
students and the classes they are taking What can we use to
connect/link Relations? Join: Connecting relations so that relevant
tuples can be retrieved. Student Class
- Slide 42
- ISOM Join Cartesian Product Student: 30 tuplesClass: 4 tuples
Total Number of Tuples in the Cartesian Product. ? (match each
tuple of student to every tuple of class) Select tuples having
identical Student Ids. Expected number of such Tuples: Join
Selectivity R1R2
- Slide 43
- ISOM Join Forms General Join Forms Equijoin Operator Dependent
Natural Join Outer Join Left Right Full selects.*, c.* fromSTUDENT
s, CLASS c wheres.StudentID = c.SID (+); selects.*, c.* fromSTUDENT
s, CLASS c wheres.StudentID = c. SID; = x > y ... R1R2 R1R2
- Slide 44
- ISOM Grouping Results after Join n Calculate the average GPA of
each class selectcourse#, avg (GPA) fromSTUDENT S, CLASS C
whereS.StudentID = C.SID group by course#,
- Slide 45
- ISOM Nesting Queries SELECTattribute(s) FROMrelation(S)
WHEREattr [not] {in | comparison operator | exists } ( query
statement(s) ); List names of students who are taking BA201 select
Name from Student whereStudentID in ( selectStudentID
fromREGISTRATION where course#=BA201);
- Slide 46
- ISOM Sub Queries List all students enrolled in CIS courses
selectname fromSTUDENT where StudentId in (selectStudentId
fromREGISTRATION wherecno like CIS%); List all students enrolled in
CIS courses selectname fromSTUDENT where StudentId in
(selectStudentId fromREGISTRATION wherecno like CIS%); List all
courses taken by Student (Id 1011) selectcname fromCOURSE wherecnum
= any (selectcno fromREGISTRATION whereStudentId = 1011);
- Slide 47
- ISOM Sub Queries Who received the highest grade in CIS 8140
selectStudentId fromREGISTRATION wherecnum = CIS 8140 and grade
>=all (selectgrade fromREGISTRATION wherecno = CIS 8140); Who
received the highest grade in CIS 8140 selectStudentId
fromREGISTRATION wherecnum = CIS 8140 and grade >=all
(selectgrade fromREGISTRATION wherecno = CIS 8140); List all
students enrolled in CIS courses. selectname fromSTUDENT S
whereexists (select* fromREGISTRATION whereStudentId = S.StudentId
and cno like CIS%);
- Slide 48
- ISOM Relational Views Relations derived from other relations.
Views have no stored tuples. Are useful to provide multiple user
views. View 1View 2View N Base Relation 1 Base Relation 2 What
level in the three layer model do views belong? Which kind of
independence do they support?
- Slide 49
- ISOM View Creation Create View view-name [ ( attr [, attr ]...)
] AS subquery [ with check option ] ; DROP VIEW view-name; Create a
view containing the student ID, Name, Age and GPA for those who are
qualified to take 300 level courses, i.e., GPA >=2.0.
- Slide 50
- ISOM View Options With Check Option enforces the query
condition for insertion or update To enforce the GPA >=2.0
condition on all new student tuples inserted into the view A view
may be derived from multiple base relations Create a view that
includes student IDs, student names and their instructors names for
all CIS 300 students.
- Slide 51
- ISOM View Retrieval Queries on views are the same as that on
base relations. Queries on views are expanded into queries on their
base relations. selectName, Instructor-Name fromCIS300-Student
whereName = Instructor-Name;
- Slide 52
- ISOM View: Update Update on a view actually changes its base
relation(s)! update Qualified-Student setGPA = GPA-0.1
whereStudentID = s3; insert intoQualified-Student values( s9, Lisa,
4.0 ) insert intoQualified-Student values( s10, Peter, 1.7 ) Why
are some views not updateable? What type of views are
updateable?
- Slide 53
- ISOM Non-monotonic queries again! Need to use either MINUS or
NOT EXISTS! Find courses where no student has gpa over 3.5 Find
students who have taken all courses that Joe has taken How would
you solve these?
- Slide 54
- ISOM Summary SQL is a low-complexity, declarative query
language The good thing about being declarative is that internally
the query can be changed automatically for optimization Good thing
about being low-complexity? No SQL query ever goes into an infinite
loop No SQL query will ever take indefinite amount of space to get
the solution Can be used for highly complex problems!