SQL Queries and Subqueries Zaki Malik September 04, 2008.

Slides:



Advertisements
Similar presentations
1 Advanced SQL Queries. 2 Example Tables Used Reserves sidbidday /10/04 11/12/04 Sailors sidsnameratingage Dustin Lubber Rusty.
Advertisements

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Queries, Programming, Triggers Chapter 5 Modified by Donghui Zhang.
1 Database Systems ( 資料庫系統 ) October 22/24, 2007 Lecture #5.
Review Session ER and Relational –ER  Relational –Constraints, Weak Entities, Aggregation, ISA Relational Algebra  Relational Calculus –Selections/Projections/Joins/Division.
Introduction to Database Systems 1 SQL: The Query Language Relation Model : Topic 4.
1 SQL: Structured Query Language (‘Sequel’) Chapter 5.
1 Lecture 11: Basic SQL, Integrity constraints
CS 166: Database Management Systems
SQL: Queries, Constraints, Triggers
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Queries, Constraints, Triggers Chapter 5.
Database Management Systems 1 Raghu Ramakrishnan SQL: Queries, Programming, Triggers Chpt 5.
SQL.
SQL: The Query Language Jianlin Feng School of Software SUN YAT-SEN UNIVERSITY courtesy of Joe Hellerstein and etc for some slides.
SQL Part II: Advanced Queries. 421B: Database Systems - SQL Queries II 2 Aggregation q Significant extension of relational algebra q “Count the number.
Database Management Systems, R. Ramakrishnan and J. Gehrke1 SQL: Queries, Programming, Triggers Chapter 5.
CS 405G: Introduction to Database Systems
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.
1 Today’s Class  Relational Model  SQL CS F212 Database Systems.
SQL Review.
Database Management Systems, R. Ramakrishnan and J. Gehrke1 SQL: Queries, Programming, Triggers Chapter 5.
1 SQL: Structured Query Language (‘Sequel’) Chapter 5.
CMPT 354, Simon Fraser University, Fall 2008, Martin Ester 90 Database Systems I SQL Queries.
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.
Rutgers University SQL: Queries, Constraints, Triggers 198:541 Rutgers University.
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.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Queries, Constraints, Triggers Chapter 5.
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.
CSC343 – Introduction to Databases - A. Vaisman1 SQL: Queries, Programming, Triggers.
Chapter 5.  Data Manipulation Language (DML): subset of SQL which allows users to create queries and to insert, delete and modify rows.  Data Definition.
INFS614 - Lecture week 9 1 More on SQL Lecture Week 9 INFS 614, Fall 2008.
CSC 411/511: DBMS Design Dr. Nan WangCSC411_L6_SQL(1) 1 SQL: Queries, Constraints, Triggers Chapter 5 – Part 1.
SQL Examples CS3754 Class Note 11 CS3754 Class Note 11, John Shieh,
SQL 2 Introduction Structured Query Language (SQL): the most widely used commercial relational database language Originally.
Unit 5/COMP3300/ SQL: Queries, Programming, Triggers Chapter 5.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Queries, Constraints, Triggers Chapter 5.
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.
1 Database Systems ( 資料庫系統 ) October 24, 2005 Lecture #5.
1 SQL: Queries, Constraints, Triggers Chapter 5. 2 Example Instances R1 S1 S2  We will use these instances of the Sailors and Reserves relations in our.
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.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Queries, Constraints, Triggers Chapter 5.
CMPT 258 Database Systems SQL Queries (Chapter 5).
1 SQL: Queries, Constraints, Triggers Chapter 5. 2 Overview: Features of SQL  Data definition language: used to create, destroy, and modify tables and.
1 SY306 Web and Databases for Cyber Operations Set #13: SQL SELECT Grouping and sub-queries.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Database Management Systems Chapter 5 SQL.
1 SQL: The Query Language (Part II). 2 Expressions and Strings v Illustrates use of arithmetic expressions and string pattern matching: Find triples (of.
1 SQL: Structured Query Language (‘Sequel’) Chapter 5.
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.
SQL and Query Execution for Aggregation. Example Instances Reserves Sailors Boats.
SQL: The Query Language Part 1 R&G - Chapter 5 1.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Basic SQL Queries.
CENG 351 File Structures and Data Management1 SQL: Structured Query Language Chapter 5.
1 CS122A: Introduction to Data Management Lecture 9 SQL II: Nested Queries, Aggregation, Grouping Instructor: Chen Li.
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.
1 CS122A: Introduction to Data Management Lecture 8 Introduction to SQL 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
CS4222 Principles of Database System
SQL: Structured Query Language
Presentation transcript:

SQL Queries and Subqueries Zaki Malik September 04, 2008

Basic SQL Query SELECT [DISTINCT] target-list FROM relation-list WHERE qualification; Relation-list: A list of relation names (possibly with range- variable after each name). Target-list: A list of attributes of relations in relation-list Qualification: conditions on attributes DISTINCT: optional keyword for duplicate removal. – Default = no duplicate removal!

SQL Comparison Operators

How to evaluate a query? SELECT [DISTINCT] target-list FROM relation-list WHERE qualification; Conceptual query evaluation using relational operators: 1)Compute the cross-product of relation-list. 2)Discard resulting tuples if they fail qualifications. 3)Delete attributes that are not in target-list. (called column-list) 4)If DISTINCT is specified, eliminate duplicate rows. SELECT S.sname FROM Sailors S, Reserves R WHERE S.sid=R.sid AND R.bid=103;

Example of Conceptual Evaluation (1) sidsnameratingage 22dustin lubber rusty (1) Compute the cross-product of relation- list. SELECT S.sname FROM Sailors S, Reserves R WHERE S.sid=R.sid AND R.bid=103; SailorsReserves sidbidday /10/ /12/96 X

Example of Conceptual Evaluation (2) (2) Discard tuples if they fail qualifications. S.sidsnameratingageR.sidbidday 22dustin /10/96 22dustin /12/96 31lubber /10/96 31lubber /12/96 58rusty /10/96 58rusty /12/96 SELECT S.sname FROM Sailors S, Reserves R WHERE S.sid=R.sid AND R.bid=103; Sailors X Reserves

Example of Conceptual Evaluation (3) (sid)snameratingage(sid)bidday 22dustin /10/96 22dustin /12/96 31lubber /10/96 31lubber /12/96 58rusty /10/96 58rusty /12/96 (3) Delete attribute columns that are not in target-list. Sailors X Reserves SELECT S.sname FROM Sailors S, Reserves R WHERE S.sid=R.sid AND R.bid=103; sname rusty

Renaming / Aliasing Consider the following SALESREPS relation Empl_numnameageRep_officemanager 105Bill Bob Sam5211NULL How do we determine the name of Bob’s manager?

Aliasing SELECT s2.name FROM SALESREPS s1, SALESREPS s2 WHERE s1.name=‘Bob’ AND s1.manager=s2.empl_num; Aliases must be used here. The row referenced by s1 is intended to be Bob… …while s2 will be his manager’s. Remember, first FROM, then WHERE, then SELECT

Relational Design Example Students (PID: string, Name: string, Address: string ) Professors (PID: string, Name: string, Office: string, Age: integer, DepartmentName: string ) Courses (Number: integer, DeptName: string, CourseName: string, Classroom: string, Enrollment: integer ) Teach (ProfessorPID: string, Number: integer, DeptName: string ) Take (StudentPID: string, Number: integer, DeptName: string, Grade: string, ProfessorEvaluation: integer) Departments (Name: string, ChairmanPID: string ) PreReq (Number: integer, DeptName: string, PreReqNumber: integer, PreReqDeptName: string )

Motivation for Subqueries Find the name of the professor who teaches “CS 4604.” SELECT Name FROM Professors, Teach WHERE (PID = ProfessorPID) AND (Number = ‘4604’) AND(DeptName = ‘CS’) ; Do we need to take the natural join of two big relations just to get a relation with one tuple? Can we rewrite the query without using a join?

Nesting A query can be put inside another query Most commonly in the WHERE clause Sometimes in the FROM clause (depending on the software) This subquery is executed first (if possible)

Subquery Example Find the name of the professor who teaches “CS 4604.” SELECT Name FROM Professors WHERE PID = (SELECT ProfessorPID FROM Teach WHERE (Number = 4604) AND (DeptName = ’CS’) ); When using =, the subquery must return a single tuple

Conditions Involving Relations SQL includes a number of operators that apply to a relation and produce a boolean result. These operators are very useful to apply on results of sub- queries. Let R be a relation and t be a tuple with the same set of attributes. – EXISTS R is true if and only if R contains at least one tuple. – t IN R is true if and only if t equals a tuple in R. – t > ALL R is true if and only if R is unary (has one attribute) and t is greater than every value in R. Can use any of the other five comparison operators. If we use <>, R need not be unary. – t > ANY R (which is unary) is true if and only if t is greater than at least one value in R. We can use NOT to negate EXISTS, ALL, and ANY.

Subqueries Using Conditions Find the departments of the courses taken by the student with name ‘Suri’. SELECT DeptName FROM Take WHERE StudentPID IN ( SELECT PID FROM Students WHERE (Name = ‘Suri’) );

Correlated vs Uncorrelated The previous subqueries did not depend on anything outside the subquery – …and thus need to be executed just once. – These are called uncorrelated. A correlated subquery depends on data from the outer query – … and thus has to be executed for each row of the outer table(s)

Correlated Subqueries Find course names that have been used for two or more courses. SELECT CourseName FROM Courses AS First WHERE CourseName IN (SELECT CourseName FROM Courses WHERE (Number <> First.Number) AND (DeptName <> First.DeptName) );

Evaluating Correlated Subqueries SELECT CourseName FROM Courses AS First WHERE CourseName IN (SELECT CourseName FROM Courses WHERE (Number <> First.Number) AND (DeptName <> First.DeptName) ); Evaluate query by looping over tuples of First, and for each tuple evaluate the subquery. Scoping rules: an attribute in a subquery belongs to one of the tuple variables in that subquery’s FROM clause, or to the immediately surrounding subquery, and so on.

Subqueries in FROM clauses Can use a subquery as a relation in a FROM clause. We must give such a relation an alias using the AS keyword. Let us find different ways of writing the query “Find the names of Professors who have taught the student whose first name is ’Suri’.” The old way: SELECT Professors.Name FROM Professors, Take, Teach, Students WHERE (Professors.PID = Teach.ProfessorPID) AND (Teach.CourseNumber = Take.CourseNumber) AND (Teach.DeptName = Take.DeptName) AND (Take.StudentPID = Student.PID) AND (Student.Name = ’Suri %’);

“Find the names of (Professors who have taught (courses taken by (student with first name ’Suri’))).” SELECT Name FROM Professors WHERE PID IN (SELECT ProfessorPID FROM Teach WHERE (Number, DeptName) IN ( SELECT Number, DeptName FROM TakeWHERE StudentPID IN (SELECT PID FROM Students WHERE Name = ’Suri %’) ) );

21 Aggregate Operators COUNT (*) COUNT ( [DISTINCT] A) – A is a column SUM ( [DISTINCT] A) AVG ( [DISTINCT] A) MAX (A) MIN (A) Count the number of sailors SELECT COUNT (*) FROM Sailors S

22 Find the average age of sailors with rating = 10 Sailors(sid: integer, sname: string, rating: integer, age: real) SELECT AVG (S.age) FROM Sailors S WHERE S.rating=10

23 Count the number of different sailor names Sailors(sid: integer, sname: string, rating: integer, age: real) SELECT COUNT (DISTINCT S.sname) FROM Sailors S

24 Find the age of the oldest sailor Sailors(sid: integer, sname: string, rating: integer, age: real) SELECT MAX(S.AGE) FROM Sailors S

25 Find name and age of the oldest sailor(s) SELECT S.sname, MAX (S.age) FROM Sailors S This is illegal, but why? – Cannot combine a column with a value SELECT S.sname, S.age FROM Sailors S WHERE S.age = (SELECT MAX (S2.age) FROM Sailors S2)

26 GROUP BY and HAVING So far, aggregate operators are applied to all (qualifying) tuples. – Can we apply them to each of several groups of tuples? Example: find the age of the youngest sailor for each rating level. – In general, we don ’ t know how many rating levels exist, and what the rating values for these levels are! – Suppose we know that rating values go from 1 to 10; we can write 10 queries that look like this: SELECT MIN (S.age) FROM Sailors S WHERE S.rating = i For i = 1, 2,..., 10:

27 Find the age of the youngest sailor for each rating level SELECT S.rating, MIN (S.age) as age FROM Sailors S GROUP BY S.rating (1) The sailors tuples are put into “ same rating ” groups. (2) Compute the Minimum age for each rating group. SidSnameRatingAge 22Dustin Lubber Art Andy Bob363.5 RatingAge RatingAge (1) (2)

Find the age of the youngest sailor for each rating level that has at least 2 members SELECT S.rating, MIN (S.age) as minage FROM Sailors S GROUP BY S.rating HAVING COUNT(*) > 1 1.The sailors tuples are put into “ same rating ” groups. 2.Eliminate groups that have < 2 members. 3.Compute the Minimum age for each rating group. SidSnameRatingAge 22Dustin Lubber Art Andy Bob363.5 RatingAge RatingMinage

29 Queries With GROUP BY and HAVING SELECT [DISTINCT] target-list FROM relation-list WHERE qualification GROUP BY grouping-list HAVING group-qualification The target-list contains (i) attribute names (ii) terms with aggregate operations (e.g., AVG (S.age)). The attribute list (e.g., S.rating) in target-list must be in grouping-list. The attributes in group-qualification must be in grouping-list. SELECT S.rating, MIN (S.age) as age FROM Sailors S GROUP BY S.rating HAVING S.rating > 5

30 Starwars Exercises char(name, race, homeworld, affiliation) planets(name, type, affiliation) timetable(cname, pname, movie, arrival, departure) Which planet does Princess Leia go to in movie3? SELECT distinct pname FROM timetable WHERE cname ='Princess Leia' and movie=3;

31 Starwars Exercises char(name, race, homeworld, affiliation) planets(name, type, affiliation) timetable(cname, pname, movie, arrival, departure) How many humans stay on Dagobah in movie 3? SELECT count(*) FROM timetable, characters WHERE movie=3 and pname =‘Dagobah’ and timetable.cname=characters.name and characters.race=‘Human’;

32 Starwars Exercises char(name, race, homeworld, affiliation) planets(name, type, affiliation) timetable(cname, pname, movie, arrival, departure) Who has been to his/her homeworld in movie 2? SELECT distinct c.name FROM characters c, timetable t WHERE c.name=t.cname and t.pname=c.homeworld and movie=2;

33 Starwars Exercises char(name, race, homeworld, affiliation) planets(name, type, affiliation) timetable(cname, pname, movie, arrival, departure) Find distinct names of the planets visited by those of race “ droid ”. SELECT distinct t.pname FROM char c, timetable t WHERE c.name=t.cname and c.race=‘droid’;

34 Starwars Exercises char(name, race, homeworld, affiliation) planets(name, type, affiliation) timetable(cname, pname, movie, arrival, departure) For each character and for each neutral planet, how much time total did the character spend on the planet? SELECT c.name, p.name, SUM(t.departure-t.arrival) as amount FROM characters c, timetable t, planets p WHERE t.cname=c.name and t.pname=p.name and p.affiliation='neutral' GROUP BY c.name, p.name;