1 Advanced SQL Queries. 2 Example Tables Used Reserves sidbidday 22 58 101 103 10/10/04 11/12/04 Sailors sidsnameratingage 22 31 58 Dustin Lubber Rusty.

Slides:



Advertisements
Similar presentations
SQL: The Query Language Part 2
Advertisements

SQL: The Query Language Part 1 R &G - Chapter 5 Life is just a bowl of queries. -Anon (not Forrest Gump)
SQL: Queries.
TURKISH STATISTICAL INSTITUTE 1 /34 SQL FUNDEMANTALS (Muscat, Oman)
DB Review Session. ER Diagrams 1 Where does the salary attribute belong? Actor id name address birthday Acted In Movie title type year salary.
1 TRC vs DRC 한욱신. 2 Queries in TRC and DRC  TRC Q = {t| f(t)} where t is a (free) tuple variable and f(t) is a well-formed formula  DRC.
Chapter (7): Advanced SQL
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Queries, Programming, Triggers Chapter 5 Modified by Donghui Zhang.
Introduction to Database Systems 1 SQL: The Query Language Relation Model : Topic 4.
1 SQL: Structured Query Language (‘Sequel’) Chapter 5.
CS 166: Database Management Systems
SQL and Relational Algebra Zaki Malik September 02, 2008.
SQL: The Query Language Jianlin Feng School of Software SUN YAT-SEN UNIVERSITY courtesy of Joe Hellerstein and etc for some slides.
Database Management Systems, R. Ramakrishnan and J. Gehrke1 SQL: Queries, Programming, Triggers Chapter 5.
CS 405G: Introduction to Database Systems
SQL (2).
M ATH IN SQL. 222 A GGREGATION O PERATORS Operators on sets of tuples. Significant extension of relational algebra. SUM ( [DISTINCT] A): the sum of all.
SQL Review.
 CS 405G: Introduction to Database Systems Lecture 7: Relational Algebra II Instructor: Chen Qian Spring 2014.
1 SQL: Structured Query Language (‘Sequel’) Chapter 5.
1 SQL (Simple Query Language). 2 Query Components A query can contain the following clauses –select –from –where –group by –having –order by Only select.
FALL 2004CENG 351 File Structures and Data Management1 SQL: Structured Query Language Chapter 5.
1 Views and Null values. 2 What does this return? SELECT B.bid, COUNT(*) FROM Boats B, Reserves R WHERE R.bid=B.bid and B.color=‘red’ GROUP BY B.bid For.
Rutgers University SQL: Queries, Constraints, Triggers 198:541 Rutgers University.
1 Table Alteration. 2 Altering Tables Table definition can be altered after its creation –Adding columns –Changing columns’ definition –Dropping columns.
1 Rewriting Minus Queries Using Not In SELECT S.sname FROM Sailors S, Boats B, Reserves R WHERE S.sid = R.sid and R.bid = B.bid and B.color = ‘red’ MINUS.
RELATIONAL ALGEBRA (III) Prof. Sin-Min LEE Department of Computer Science.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Queries, Constraints, Triggers Chapter 5.
Relational Algebra Chapter 4 - part I. 2 Relational Query Languages  Query languages: Allow manipulation and retrieval of data from a database.  Relational.
1 The Oracle Database System Querying the Data Database Course The Hebrew University of Jerusalem.
1 SQL: Structured Query Language Chapter 5. 2 SQL and Relational Calculus relationalcalculusAlthough relational algebra is useful in the analysis of query.
1 Rewriting Intersect Queries Using In SELECT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid = R.sid and R.bid = B.bid and B.color = ‘red’ INTERSECT.
1 Advanced SQL. 2 Consider the following relations: –pupil (pupil_name, address, class, birthyear) –subject (subject_name, class, teacher) –grades (pupil_name,
RELATIONAL ALGEBRA (II) Prof. Sin-Min LEE Department of Computer Science.
Relational Algebra.
Chapter 5.  Data Manipulation Language (DML): subset of SQL which allows users to create queries and to insert, delete and modify rows.  Data Definition.
SQL Queries and Subqueries Zaki Malik September 04, 2008.
CSC 411/511: DBMS Design Dr. Nan WangCSC411_L6_SQL(1) 1 SQL: Queries, Constraints, Triggers Chapter 5 – Part 1.
10/20/20151 Introduction to SQL and the Relational Model ICOS Big Data Summer Camp June 2, 2015 Mike Anderson (slides from Mike Cafarella)
SQL Examples CS3754 Class Note 11 CS3754 Class Note 11, John Shieh,
SQL: Queries, Programming, Triggers. Example Instances We will use these instances of the Sailors and Reserves relations in our examples. If the key for.
ICS 321 Fall 2009 SQL: Queries, Constraints, Triggers Asst. Prof. Lipyeow Lim Information & Computer Science Department University of Hawaii at Manoa 9/8/20091Lipyeow.
ICS 321 Fall 2011 The Relational Model of Data (i) Asst. Prof. Lipyeow Lim Information & Computer Science Department University of Hawaii at Manoa 8/29/20111Lipyeow.
1 Database Systems ( 資料庫系統 ) October 24, 2005 Lecture #5.
ICS 321 Spring 2011 The Database Language SQL (iii) Asst. Prof. Lipyeow Lim Information & Computer Science Department University of Hawaii at Manoa 3/14/20111Lipyeow.
Introduction to SQL ; Christoph F. Eick & R. Ramakrishnan and J. Gehrke 1 Using SQL as a Query Language COSC 6340.
CMPT 258 Database Systems SQL Queries (Chapter 5).
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Database Management Systems Chapter 5 SQL.
1 SQL: Structured Query Language (‘Sequel’) Chapter 5.
CSCI 4333 Database Design and Implementation – Exercise (2) Xiang Lian The University of Texas Rio Grande Valley Edinburg, TX 78539
SQL: The Query Language Part 1 R &G - Chapter 5 The important thing is not to stop questioning. Albert Einstein.
1 SQL: The Query Language. 2 Example Instances R1 S1 S2 v We will use these instances of the Sailors and Reserves relations in our examples. v If the.
Database Management Systems 1 Raghu Ramakrishnan SQL: Queries, Programming, Triggers Chpt 5 Jianping Fan.
1 CS122A: Introduction to Data Management Lecture #7 Relational Algebra I Instructor: Chen Li.
1 CS122A: Introduction to Data Management Lecture 9 SQL II: Nested Queries, Aggregation, Grouping Instructor: Chen Li.
Basic SQL Queries Go over example queries, like 10 > ALL.
COP Introduction to Database Structures
© פרופ' יהושע שגיב, האוניברסיטה העברית
01/31/11 SQL Examples Edited by John Shieh CS3754 Classnote #10.
SQL The Query Language R & G - Chapter 5
Database Systems October 14, 2009 Lecture #5.
Database Systems (資料庫系統)
CS 405G: Introduction to Database Systems
CSCI 6315 Applied Database Systems – Exercise (3)
Relational Algebra Chapter 4 - part I.
קורס קבצים ובסיסי נתונים
CS4222 Principles of Database System
SQL: Structured Query Language
Relational Algebra Chapter 4 - part I.
SQL: The Query Language (Part III)
Presentation transcript:

1 Advanced SQL Queries

2 Example Tables Used Reserves sidbidday /10/04 11/12/04 Sailors sidsnameratingage Dustin Lubber Rusty Boats bidbnamecolor Nancy Gloria red green

3 Rewriting Minus Queries SELECT S.sname, S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid = R.sid and R.bid = B.bid and B.color = ‘red’ MINUS SELECT S.sname, S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid = R.sid and R.bid = B.bid and B.color = ‘green’; Name and id of sailors that has reserved at least one red boat and has never reserved green boat

4 Rewriting Minus Queries Using Not In SELECT S.sname, S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid = R.sid and R.bid = B.bid and B.color = ‘red’ and S.sid NOT IN ( SELECT R.sid FROM Boats B, Reserves R WHERE R.bid = B.bid and B.color = ‘green’);

5 Rewriting Minus Queries Using Not Exists SELECT S.sname, S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid = R.sid and R.bid = B.bid and B.color = ‘red’ and NOT EXISTS ( SELECT * FROM Boats B, Reserves R WHERE R.sid = S.sid and R.bid = B.bid and B.color = ‘green’);

6 Division Consider: A(X,Y) and B(Y). Then A  B = In general, we require that the set of fields in B be contained in those of A.

7 Suppliers from A who supply All Parts from B (1) snopno S1 S2 S3 S4 P1 P2 P3 P4 P1 P2 P4 A P2 pno B1 sno  =

8 Suppliers from A who supply All Parts from B (1) snopno S1 S2 S3 S4 P1 P2 P3 P4 P1 P2 P4 A P2 pno B1 sno  = S1 S2 S3 S4

9 Suppliers from A who supply All Parts from B (2) snopno S1 S2 S3 S4 P1 P2 P3 P4 P1 P2 P4 A sno  = P2 P4 pno B2

10 Suppliers from A who supply All Parts from B (2) snopno S1 S2 S3 S4 P1 P2 P3 P4 P1 P2 P4 A sno  = P2 P4 pno B2 S1 S4

11 Suppliers from A who supply All Parts from B (3) snopno S1 S2 S3 S4 P1 P2 P3 P4 P1 P2 P4 A sno  = P1 P2 P4 pno B3

12 Suppliers from A who supply All Parts from B (3) snopno S1 S2 S3 S4 P1 P2 P3 P4 P1 P2 P4 A sno  = P1 P2 P4 pno B3 S1

13 Sailors who Reserved all Boats (  sid,bid Reserves)  (  bid Boats) Sailor S whose "set of boats reserved" contains the "set of all boats"

14 Division in SQL (1) SELECT sid FROM Sailors S WHERE NOT EXISTS (SELECT B.bid FROM Boats B WHERE B.bid NOT IN (SELECT R.bid FROM Reserves R WHERE R.sid = S.sid)); Sailor S for which there does not exist a boat B in Boats that he did not reserve

15 Division in SQL (2) SELECT S.sid FROM Sailors S WHERE NOT EXISTS( SELECT B.bid FROM Boats B WHERE NOT EXISTS( SELECT R.bid FROM Reserves R WHERE R.bid=B.bid and R.sid=S.sid)) Sailor S for which there does not exist a boat B in Boats that he did not reserve

16 Division in SQL (3) SELECT S.sid FROM Sailors S WHERE NOT EXISTS((SELECT B.bid FROM Boats B) MINUS (SELECT R.bid FROM Reserves R WHERE R.sid = S.sid)); Sailor S for which there does not exist a boat B in Boats for which there is no reservation in Reserves

17 Aggregation

18 Aggregate Operators The aggregate operators available in SQL are: –COUNT(*) –COUNT([DISTINCT] A) –SUM([DISTINCT] A) –AVG([DISTINCT] A) –MAX(A) –MIN(A) NULL values are ignored

19 Some Examples SELECT COUNT(*) FROM Sailors S SELECT AVG(S.age) FROM Sailors S WHERE S.rating=10 SELECT COUNT(distinct color) FROM Boats SELECT COUNT(sid) FROM Sailors S 

20 Find Average Age for each Rating So far, aggregation has been applied to all tuples that passed the WHERE clause test. How can we apply aggregation to groups of tuples?

21 Basic SQL Query SELECT [Distinct] target-list FROM relation-list WHERE condition GROUP BY grouping-list HAVING group-condition; target-list: Fields appearing in grouping-list and aggregation operators group-condition: Can only constrain attributes appearing in grouping-list and aggregation operators

22 Evaluation 1.Compute cross product of relations in FROM 2.Tuples failing WHERE are thrown away 3.Tuples are partitioned into groups by values of grouping-list attributes 4.The group-condition is applied to eliminate groups 5.One answer in generated for each group

23 Find Average Age for each Rating SELECT AVG(age) FROM Sailors GROUP BY rating;

24 Sailors sidsnameratingage Dustin Lubber Rusty Fluffy Morley Popeye Sailors sidsnameratingage Dustin Fluffy Morley Lubber Rusty Popeye

25 Find name and age of oldest Sailor SELECT S.sname, MAX(S.age) FROM Sailors S Wrong! SELECT S.sname, MAX(S.age) FROM Sailors S GROUP BY S.sname Wrong: we don’t obtain what we want

26 Find name and age of oldest Sailor SELECT S.sname, S.age FROM Sailors S WHERE S.age >= ALL (SELECT S2.age FROM Sailors S2) SELECT S.sname, S.age FROM Sailors S WHERE S.age = (SELECT MAX(S2.age) FROM Sailors S2) Right!! How else can this be done? Hint: >= ALL

27 What does this return? SELECT B.bid, COUNT(*) FROM Boats B, Reserves R WHERE R.bid=B.bid and B.color=‘red’ GROUP BY B.bid Tuples: (id of reserved red boat, number of reservations of the red boat) What would happen if we put the condition about the color in the HAVING clause?

28 What would happen if we put the condition about the color in the HAVING clause? SELECT B.bid, COUNT(*) FROM Boats B, Reserves R WHERE R.bid=B.bid GROUP BY B.bid, B.color HAVING B.color=‘red’ We have also to put the color in the grouping list!

29 Names of Boats that were not Reserved on more than 5 days Can we move the condition in the HAVING to the WHERE? SELECT bname FROM Boats B, Reserves R WHERE R.bid=B.bid GROUP BY bid, bname HAVING count(DISTINCT day) <= 5 Aggregate functions are not allowed in WHERE

30 The Color for which there are the most boats SELECT color FROM Boats B GROUP BY color HAVING max(count(bid)) What is wrong with this? How would you fix it?

31 The Color for which there are the most boats SELECT color FROM Boats B GROUP BY color HAVING count(bid) >= ALL (SELECT count(bid) FROM Boats GROUP BY Color)

32 Aggregation Instead of Exists Aggregation can take the place of exists. Example: SELECT color FROM Boats B1 WHERE NOT EXISTS( SELECT * FROM Boats B2 WHERE B1.bid <> B2.bid AND B1.color=B2.color) The color of the boat that there is no other boat of this color

33 Aggregation Instead of Exists SELECT color FROM Boats B1 GROUP BY color HAVING count(bid) = 1

34 Sub-queries and Views

35 A Complex Query We would like to create a table containing 3 columns: –Sailor id –Sailor age –Age of the oldest Sailor How can this be done?

36 Attempt 1 SELECT S.sid, S.age, MAX(S.age) FROM Sailors S; Why is this wrong?

37 Attempt 2 SELECT S.sid, S.age, MAX(S.age) FROM Sailors S GROUP BY S.sid, S.age; Why is this wrong? Each group contains only one tuple

38 Solution 1: Sub-query in FROM SELECT S.sid, S.age, M.mxage FROM Sailors S,(SELECT MAX(S2.age) as mxage FROM Sailors S2) M; We can put a query in the FROM clause instead of a table The sub-query in the FROM clause must be renamed with a range variable (M in this case).

39 Solution 2: Sub-query in SELECT SELECT S.sid, S.age, (SELECT MAX(S2.age) FROM Sailors S2) FROM Sailors S; A sub-query in the SELECT clause must return at most one value for each row returned by the outer query.

40 Another Example of a Sub-query in SELECT SELECT S.sid, S.age, (SELECT MAX(S2.age) FROM Sailors S2 WHERE S2.age<S.age) FROM Sailors S; What does this query return? For each sailor S, the age of the oldest sailor among the sailors younger than S Note the use of S (defined in the outer query) in the sub-query.

41 Another Example of a Sub-query in FROM?? SELECT S.sid, S.age, M.mxage FROM Sailors S, (SELECT MAX(S2.age) as mxage FROM Sailors S2 WHERE S2.age<S.age) M; Why is this wrong? We cannot refer to S.age in a sub-query in FROM

42 Solution 3: Create a Table CREATE TABLE MaxAge as SELECT MAX(S.age) as mxage FROM Sailors S; SELECT S.sid, S.age, M.mxage FROM Sailors S, MaxAge M; MUST Rename! Problem: how to update MaxAge table?

43 Views A view is a "virtual table" defined using a query You can use a view as if it were a table, even though it doesn't contain data The view is computed every time that it is referenced

44 Advantages and Disadvantages Advantages: –no memory used for views –update of table does not require updating views –gives query processor more choices for optimizing Disadvantages: –must be recomputed every time used –if tables that view uses are dropped, view data is lost

45 Solution 4: Views A View is a query that looks like a table and can be used as a table. CREATE OR REPLACE VIEW MaxAge as SELECT MAX(S.age) as mxage FROM Sailors S; SELECT S.sid, S.age, M.mxage FROM Sailors S, MaxAge M; MUST Rename!

46 Another Example of Views CREATE OR REPLACE VIEW MaxAges AS SELECT S1.sid, S2.age AS mxage FROM Sailors S1, Sailors S2 WHERE S2.age = (SELECT MAX(S3.age) FROM Sailors S3 WHERE S3.age < S1.age); SELECT S.sid, S.age, M.mxage FROM Sailors S, MaxAges M WHERE S.sid = M.sid;

47 Views For Restricting Access Suppose that we have a table: Grades(Login, Exercise, Grade) We would like a user to only be able to see his own grades. We create the following view and grant privileges to query the view (not the underlying table) CREATE OR REPLACE VIEW UserGrades as SELECT * FROM Grades WHERE Login = User; The system defines the user name.