361 likes | 444 Views
Explore Q1, Q2, and Q3 SQL query examples and observe their implementation with animated execution. Learn about the row operations involved and the impact on databases of varying sizes.
E N D
Animation of SQL Queries • To illustrate three SQL queries: • Q1: simple select (one table) • Q2: select with conditions (one table) • Q3: select requiring a JOIN operation. • Observe how they are “implemented” • Measure the number of “row operations”
First, define a database: Schema, instances Schema Sailors ( sid: integer, sname: string, rating: integer, age: real ) Reserves ( sid: integer, bid: integer, day: date ) An instance R of Reserves These illustrative examples are small. An instance S of Sailors
First, define a database: Schema, instances Schema Sailors ( sid: integer, sname: string, rating: integer, age: real ) Reserves ( sid: integer, bid: integer, day: date ) An instance R of Reserves But, also imagine larger tables: 1000 sailors, 5000 reserves An instance S of Sailors
Query Q1 Simple Select
Q1. Find the names and ages of all sailors. SELECT S.sname, S.age FROM Sailors S The corresponding SQL query. S (instance of Sailors) Now, animate the execution of the SQL query!
Q1. Find the names and ages of all sailors. [Step 0] SELECT S.sname, S.age FROM Sailors S Result S (instance of Sailors) Query result is also a database table.
Q1. Find the names and ages of all sailors. [Step 1] SELECT S.sname, S.age FROM Sailors S Result S (instance of Sailors) Output only the required fields in this entry.
Q1. Find the names and ages of all sailors. [Step 2] SELECT S.sname, S.age FROM Sailors S Result S (instance of Sailors)
Q1. Find the names and ages of all sailors. [Step 3] SELECT S.sname, S.age FROM Sailors S Result S (instance of Sailors)
Q1. Find the names and ages of all sailors. [Step 4] SELECT S.sname, S.age FROM Sailors S Result S (instance of Sailors)
Q1. Find the names and ages of all sailors. [Step 5] SELECT S.sname, S.age FROM Sailors S Result S (instance of Sailors)
Q1. Find the names and ages of all sailors. [Step 6] SELECT S.sname, S.age FROM Sailors S Result S (instance of Sailors) End of Algorithm
Summary of Q1: • Result of SQL query • is another table • derived from original table. • A simple analysis shows • This takes (n) row operations, where n is size (the number of records) in table S. • Eg: Query on large S --- 1000 row operations; Query on large R --- 5000 row operations; • This query is also called a “projection” • It is the same as the “e-project” primitive • It simply selected a subset of the columns
Query Q3 Select with conditions
Q2. Find all sailors with a rating above 7. SELECT S.sid, S.sname FROM Sailors S WHERE (S.rating > 7) The corresponding SQL query. S (instance of Sailors) Now, animate the execution of the SQL query!
CPU Q2. Find all sailors with a rating above 7.[Step 0] SELECT S.sid, S.sname FROM Sailors S WHERE (S.rating > 7) S (instance of Sailors) Result Query result is also a database table.
CPU Q2. Find all sailors with a rating above 7.[Step 1] SELECT S.sid, S.sname FROM Sailors S WHERE (S.rating > 7) 7 > 7? No! Condition is false Do not output this entry. S (instance of Sailors) Result
CPU Q2. Find all sailors with a rating above 7.[Step 2] SELECT S.sid, S.sname FROM Sailors S WHERE (S.rating > 7) 8 > 7? Yes. Condition is true Output this entry. S (instance of Sailors) Result
CPU Q2. Find all sailors with a rating above 7.[Step 3] SELECT S.sid, S.sname FROM Sailors S WHERE (S.rating > 7) 10 > 7? Yes. Condition is true Output this entry. S (instance of Sailors) Result
CPU Q2. Find all sailors with a rating above 7.[Step 4] SELECT S.sid, S.sname FROM Sailors S WHERE (S.rating > 7) 10 > 7? Yes. S (instance of Sailors) Result
CPU Q2. Find all sailors with a rating above 7.[Step 5] SELECT S.sid, S.sname FROM Sailors S WHERE (S.rating > 7) 9 > 7? Yes. S (instance of Sailors) Result
CPU Q2. Find all sailors with a rating above 7.[Step 6] SELECT S.sid, S.sname FROM Sailors S WHERE (S.rating > 7) S (instance of Sailors) Result End of Algorithm
Summary of Q2: • Result of SQL query • is another table • row-inclusion is determined by the where-clause. • A simple analysis shows • This takes (n) row operations; • where n is size (the number of records) in table S. • Eg: Query on large S --- 1000 row operations; Query on large R --- 5000 row operations; • This query can be decomposed into • an “e-select”, followed by an “e-project” primitives
Query Q3 Select requiring a JOINof multiple tables
Q3. Find the names of sailors who have reserved boat number 103. DB (2 tables) An instance R of Reserves An instance S of Sailors This query requires information from both tables S and R. To answer this query, a JOIN operation needs to be performed.
IMPT: “Join Condition”This specifies how S and R are to be joined together. Q3. Find the names of sailors who have reserved boat number 103. SELECT S.name FROM Sailors S, Reserves R WHERE (S.sid = R.sid) AND (R.bid = 103) The corresponding SQL query. DB (2 tables) An instance R of Reserves An instance S of Sailors This query requires information from both tables S and R. To answer this query, a JOIN operation needs to be performed.
Q3. Find the names of sailors who have reserved boat number 103. SELECT S.name FROM Sailors S, Reserves R WHERE (S.sid = R.sid) AND (R.bid = 103) S (instance of Sailors) • Overview: • A JOIN operation works as follows: • for each row in table S; • + try to “join” with each row in R • (match the “where” conditions) Analysis: So, a JOIN takes (nm) row operations where n = size of table S, and m = size of table R. R (instance of Reserves)
CPU Q3. Find the names of sailors who have reserved boat number 103. SELECT S.name FROM Sailors S, Reserves R WHERE (S.sid = R.sid) AND (R.bid = 103) Result S (instance of Sailors) S.sid = 22 R.sid = 22 (S.sid = R.sid) R.bid = 101 (R.bid ≠ 103) ! R (instance of Reserves) Condition is false Do not output this entry.
CPU Q3. Find the names of sailors who have reserved boat number 103. SELECT S.name FROM Sailors S, Reserves R WHERE (S.sid = R.sid) AND (R.bid = 103) Result S (instance of Sailors) S.sid = 22 R.sid = 58 (S.sid ≠ R.sid) ! R (instance of Reserves) Condition is false Do not output this entry.
CPU Q3. Find the names of sailors who have reserved boat number 103. SELECT S.name FROM Sailors S, Reserves R WHERE (S.sid = R.sid) AND (R.bid = 103) Result S (instance of Sailors) S.sid = 31 R.sid = 22 (S.sid ≠ R.sid) ! R (instance of Reserves) Condition is false Do not output this entry.
CPU Q3. Find the names of sailors who have reserved boat number 103. SELECT S.name FROM Sailors S, Reserves R WHERE (S.sid = R.sid) AND (R.bid = 103) Result S (instance of Sailors) S.sid = 31 R.sid = 58 (S.sid ≠ R.sid) ! R (instance of Reserves) Condition is false Do not output this entry.
CPU Q3. Find the names of sailors who have reserved boat number 103. SELECT S.name FROM Sailors S, Reserves R WHERE (S.sid = R.sid) AND (R.bid = 103) Result S (instance of Sailors) S.sid = 58 R.sid = 22 (S.sid ≠ R.sid) ! R (instance of Reserves) Condition is false Do not output this entry.
CPU Q3. Find the names of sailors who have reserved boat number 103. SELECT S.name FROM Sailors S, Reserves R WHERE (S.sid = R.sid) AND (R.bid = 103) Result S (instance of Sailors) S.sid = 58 R.sid = 58 (S.sid = R.sid) ! R.bid = 103 (R.bid = 103) ! R (instance of Reserves) Condition is true Output this entry.
CPU Q3. Find the names of sailors who have reserved boat number 103. SELECT S.name FROM Sailors S, Reserves R WHERE (S.sid = R.sid) AND (R.bid = 103) Result S (instance of Sailors) End of Algorithm R (instance of Reserves)
Summary of Q3: • Result of SQL query requires • information from two tables (often more) • a JOIN operation is necessary • A simple analysis shows JOIN is expensive • This takes (nm) row operations; • where n is size (the number of records) of table S, and m is size (the number of records) of table R. • Eg: Query on large S and R: • = 1000 * 5000 = 5,000,000 row operations! • This query can be decomposed into • an “e-join”, then “e-select”, “e-project” primitives
RECAP: SQL Queries • We illustrated three SQL queries: • Q1: simple select (one table) • Q2: select with conditions (one table) • Q3: select requiring a JOIN operation (of multiple tables) • We know how they are “implemented” • Measure the number of “row operations” JOIN is expensive