1 Chapter 5 SQL: QUERIES, CONSTRAINTS, TRIGGERS. 2 INTRODUCTION  The current presentation is...
of 32
/32

date post
21Dec2015 
Category
Documents

view
219 
download
0
Embed Size (px)
Transcript of 1 Chapter 5 SQL: QUERIES, CONSTRAINTS, TRIGGERS. 2 INTRODUCTION  The current presentation is...
 Slide 1
 1 Chapter 5 SQL: QUERIES, CONSTRAINTS, TRIGGERS
 Slide 2
 2 INTRODUCTION  The current presentation is consistent with both SQL92 and SQL: 99 (differences will be noted when necessary).  We shall cover  query capabilities  advanced integrity constraints  transaction management (later)  We shall use, in the examples, the same sample relational instances as those used in the previous chapter.
 Slide 3
 3 THE BASIC SQL QUERY  The basic form of an SQL query: optional (removes duplicate rows) SELECT [DISTINCT] selectlist FROM fromlist WHERE qualification  The conceptual evaluation strategy is an algorithm that constructs the relational instance that is created in response tq an SQL query statement: 1. Compute the crossproduct of the tables in the fromlist. 2. Delete rows in the crossproduct that fail the qualification condition. 3. Delete all columns that do not appear in the selectlist. 4. If DISTINCT is specified, eliminate duplicate rows. This algorithm is laborious and may demand construction of very large tables.  A practical approach: 1. Locate the relevant tables in the fromlist. 2. Locate the attributes affected by the qualification condition. 3. locate the attributes required by the selectlist. 4. Create a path between the tables containing the attributes from (3) above and the tables containing the attributes from (2) above (this path is established by linking common attributes in pairs of tables, hopping between tables as necessary).
 Slide 4
 4 EXAMPLES AND APPLICATIONS (1) Given the two sample instances (Q1): Find the names of sailors who have reserved boat number 103 The SQL query is SELECT S.sname FROM Sailors S, Reserves R WHERE S,sid = R.sid AND R.bid = 103
 Slide 5
 5 EXAMPLES AND APPLICATIONS (2) Application of the conceptual evaluation strategy: (1) Construct the crossproduct S4 R3: (2) Apply the qualification S.sid = R.sid AND R.bid = 103: That eliminates all but the last row. (3) Eliminate unwanted columns, leaving only S.sname. The final result is { }.
 Slide 6
 6 EXAMPLES AND APPLICATIONS (3) The practical approach would be to proceed as follows: 1. Locate the relevant tables: Sailors and Reserves. 2. Locate attribute affected by the qualification i.e. R.bid 3. Locate attribute required by select list i.e. S.sname 4. Create a path from (2) to (3): The only attribute these two tables have in common is sid; therefore they must be linked through this common attribute.
 Slide 7
 7 EXAMPLES OF BASIC SQL QUERIES (1) (Q16) Find the sids of sailors who have reserved a red boat. SELECT R.sid FROM Boats B, Reserves R WHERE B.bid = R.bid AND B.color = red N. B. We have to hop from Boats to Reserves. (Q2) Find the names of sailors who have reserved a red boat. SELECT S. name FROM Sailors S, Reserves R, Boats B WHERE S.sid = R.sid AND R.bid = B.bid AND B.color = red N. B. We have to hop from Boats to Reserves to Sailors.
 Slide 8
 8 EXAMPLES OF BASIC SQL QUERIES (2) (Q3) Find the colors of boats reserved by Lubber. SELECT B.color FROM Sailors S, Reserves R, Boats B WHERE S.sid = R.sid AND R.bid = B.bid AND S.name = Lubber (Q4) Find the names of sailors who have reserved at least one boat. SELECT S. name FROM Sailors S, Reserves R WHERE S.sid = R.sid
 Slide 9
 9 EXPRESSIONS AND STRINGS IN THE SELECT COMMAND (1)  Each item in a selectlist can be of the form expression AS column_name where expression is any arithmetic or string expression over column names and column_name is a new name for this column in the answer.  Each item can contain aggregates (see section 5.5).  Expressions over date and time values are part of the SQL standard.  Many implementations support various builtin functions (sqrt, sin, mod).  Each item in a qualification can be of the form expression1 = expression2.  String comparison is available through the usual comparison operators. SQL also allows the user to specify the alphabetical collation order.  A limited form of pattern matching can be realized with the LIKE operator, using the following symbols: % which stands for zero or more arbitrary symbols _ (underscore) which stands for one arbitrary character.
 Slide 10
 10 EXPRESSIONS AND STRINGS IN THE SELECT COMMAND (2) (Q17) Compute increments for the rating of persons who have sailed two different boats on the same day. SELECT S,name, S.rating + 1 AS rating FROM Sailors S, Reserves R1, Reserves R2 WHERE S.sid = R1.sid AND S.sid = R2.sid AND R1.day = R2.day AND R1.bid R2.bid As another illustration: SELECT S1.sname AS name1, S2.name AS name2 FROM Sailors S1, Sailors S2 WHERE 2*S1.rating = S2.rating  1
 Slide 11
 11 EXPRESSIONS AND STRINGS IN THE SELECT COMMAND (3) (Q18) Find the ages of sailors whose name begins and ends with B and has at least three characters. SELECT S.age FROM Sailors S WGERE S.name LIKE B_%B
 Slide 12
 12 SET OPERATIONS IN SQL It is often useful to think of the operations described by an SQL statement as a sequence of set operations working on the tuples of various relational instances with the following operators : UNION : INTERSECT  : EXCEPT (or MINUS) : IN : NOT IN : EXISTS : NOT EXISTS op ANY and op ALL compare a value with the elements in a given set, using comparison operator op. N.B. Remember that, while relational algebra and calculus handle strictly sets, SQL usually deals with multiset unless stated otherwise.
 Slide 13
 13 EXAMPLES OF SET OPERATIONS IN SQL (Q6) Find the names of sailors who have reserved both a red and a green boat. This example illustrates especially well the set operational aspect of SQL. The answer is easily understood as the union of the sets of sailors who have reserved red boats and those who have reserved green boats. SELECT S.name FROM Sailors S, Reserves R, Boats B WHERE B,color = red AND B.bid = R.bid AND R.sid = S.sid UNION SELECT S2.name, FROMSailors S2, Boats B2, Reserves R2 WHEREB2.color = green AND B2.bid = R2.bid AND R2.sid = B2.sid N.B. (1) Note that the order of the logical and operand is immaterial, which is not always the case in natural language. (2) If the query is changed to or, the SQL statement must use INTERSECTION. (3) If the query requests the names of sailors who have reserved a red but not a green boat, the SQL statement must use EXCEPT. (4) The default for UNION, INTERSECTION, and EXCEPT is that duplicates are eliminated unless ALL is added as in UNION ALL.
 Slide 14
 14 NESTED QUERIES The power of the set operators shows up in socalled nested queries, Example: (Q1) Find the names of sailors who have reserved boat 103. SELECT S.name FROM Sailors S WHERE S.sid IN ( SELECT R.sid FROM ReservesR WHERE R.bid = 103 ) The inner set is created first and the outer set selects from it the required rows. There can be as many degree of nesting as desired. Effectively, nesting is used instead of tablehopping. Inner set Outer set
 Slide 15
 15 MORE NESTED QUERIES (Q2) Find the names of sailors who have reserved a red boat. SELECT S.name FROM Sailors S WHERE S.sid IN ( SELECT R.sid FROM Reserves R WHERE R.bid IN ( SELECT B.bid FROM Boats B WHERE B.color = red ) )
 Slide 16
 16 MORE ON NESTED QUERIES (1)  Nested queries can be correlated (section 5.4.2)  Nested queries can use set comparison operators (these may be tricky) Example: (Q22) Find sailors whose rating is better (l.e. higher) than some sailor called Horatio. SELECT S.sid FROM Sailors S WHERE S.rating > ANY ( SELECT S2.rating FROM Sailors S2 WHERE S2.name = Horatio ) N. B.  What if the inner set is empty?  In that case the comparison > is defined to return false, and the query returns an empty answer set.
 Slide 17
 17 MORE ON NESTED QUERIES (2) (Q23) Find sailors whose rating is better than every sailor called Horatio. SELECT S.sid FROM Sailors S WHERE S.rating > ALL ( SELECT S2.rating FROM Sailors S2 WHERE S2.name = Horatio ) N. B. (1) What if the inner set is empty? In this case the comparison is defined to return true! The query would then return the names of all the sailors. (2) IN is equivalent to = ANY. NOT IN is equivalent to .
 Slide 18
 18 AGGREGATE OPERATORS The aggregate operators listed below were added for convenience to SQL although they are not part of relational algebra nor of relational calculus. 1. COUNT ([DISTINCT] A): # of (unique) values in attribute A. 2. SUM ([DIDTINCT] A): Sum of all (unique) values in attribute A. 3. AVG ([DISTINCT] A): Average of all (unique) values in A. 4. MAX (A): Maximum value in attribute A. 5. MIN (A): Minimum value in attribute A. N. B. There are a few tricky features in these operators.
 Slide 19
 19 EXAMPLES OF AGGREGATE OPERATORS (1) (Q25) Find the average age of sailors with a rating of 10. SELECT AVG (S.age) FROM Sailors S WHERE S.rating =10 (Q27) Find the name and age of the oldest sailor. The following SQL statement is illegal: SELECT S.name, MAX (S.age) FROM Sailors S It is illegal because if the SELECT clause uses an aggregate operation, then it must use only aggregate operations unless the query uses a GROUP BY clause (we shall see these shortly).
 Slide 20
 20 EXAMPLES OF AGGREGATE OPERATORS (2) To avoid the previous problem we have to use a nested query: SELECT S.name, S.age FROM Sailors S WHERE S.age = ( SELECT MAX (S2.age) FROM Sailors S2)
 Slide 21
 21 GROUP BY AND HAVING CLAUSES (1) These special clauses are used when we want to apply aggregate operations to a group of tuples (corresponding to some subset of the instance) grouped according to some specified condition. Example: (Q31) Find the age of the youngest sailor for each rating. SELECT S.rating, MIN (S.age) AS minage FROM Sailors S GROUP BY S.rating This query yields the answer: ratingminage 133.0 325.5 735.0 825.5 935.0 1035.0
 Slide 22
 22 GROUP BY AND HAVING CLAUSES (2) The general form of an SQL query including these new extensions is now: SELECT [DISTINCT] selectlist FROM fromlist WHERE qualification GROUP BY groupinglist HAVING groupqualification Remarks: 1. Every attribute in selectlist must also appear in groupinglist. 2. The expressions appearing in the groupqualification must have a single value per group. 3. If GROUP BY is omitted, the entire table is regarded as a single group.
 Slide 23
 23 GROUP BY AND HAVING CLAUSES (3) The conceptual evaluation strategy is extended as follows: 1. Construct the crossproduct of tables in the fromlist (as before). 2. Eliminate unwanted rows as per the WHERE clause (as before). 3. Eliminate unwanted columns keeping only those mentioned in the SELECT, GROUP BY and HAVING clauses. 4. Sort the table according to the GROUP BY clause. 5. Eliminate unwanted rows by applying the groupqualification in the HAVING clause. 6. Generate one answer row for each qualified group. N. B. (1) The order of steps 2 and 3 are especially important. (2) Nesting can occur in the HAVING and (in some implementations) in the FROM clauses.
 Slide 24
 24 EXAMPLES OF GROUP BY AND HAVING CLAUSES (2) Given (Q33) For each red boat, find the number of reservations for this boat. SELECTB.bid, COUNT (*) AS reservationcount FROMBoats B, Reserves R WHEREB.color = red AND B.bid = R.bid GROUP BY B.bid Answer: {, }
 Slide 25
 25 EXAMPLES OF GROUP BY AND HAVING CLAUSES (3) (Q35) Find the average age of sailors who are of voting age (i.e. at least 18 years old) for each rating level that has at least two sailors. SELECT S.rating, AVG ( S.age) AS average FROM Sailors S WHERE S.age >= 18 GROUP BY S.rating HAVING 1 < ( SELECT COUNT (*) FROM Sailors S2 WHERE S.rating = S2.rating )
 Slide 26
 26 NULL VALUES PROBLEMS (1)  NULL values represent a significant problem in SQL:  (1) They cannot be avoided in real practice.  (2) Their semantics is ambiguous.  (3) They cannot be used in primary keys.  (4) They represent special integrity constraints  (5) They require special treatment in  (A) predicate operations  (B) relational operations  (C) arithmetical operations  (D) aggregate operations We shall consider each of these problems in turn.
 Slide 27
 27 NULL VALUES PROBLEMS (2)  Impossible to avoid: (i) They often show up as initial values under various conditions:  certain attributes may be unknown at creation time  certain attributes may not be applicable (e. g. spouse name)  certain attributes may be confidential (e. g. telephone #) (ii) They may appear as a result of certain join operations.  The three different conditions shown above are not differentiated.  NULL values in primary keys destroy unique identity.  NOT NULL must be specified explicitly. We shall next consider the special handling needed in various situations where null values are found.
 Slide 28
 28 NULL VALUES PROBLEMS (3) (A) Predicate Handling (logical values) A predicate specifying a NULL value for a variable cannot be classified as either TRUE or FALSE. Threevalued logic is then used with the new value called UNKNOWN, yielding the following truth tables: a a TRUEFALSE TRUE UNKNOWN aba AND bA OR b TRUE FALSE TRUE UNKNOWN TRUE FALSETRUEFALSETRUE FALSE UNKNOWNFALSEUNKNOWN TRUEUNKNOWNTRUE UNKNOWNFALSE UNKNOWN
 Slide 29
 29 NULL VALUES PROBLEMS (4) (B) Relational Operations  If either, or both, operand in the comparison operations (, =. etc.) is UNKNOWN, then the result is UNKNOWN. (C) Arithmetic Operations  If one or both arguments are UNKNOWN the result is also UNKNOWN. (D) Aggregate Operations  All the aggregate operators (with or without DISTINCT) simply discard NULL values except COUNT(*) where they get counted. If these operators (apart from COUNT) are applied to only NULL values the result is NULL.
 Slide 30
 30 NULL VALUES PROBLEMS (5) Outer Joins There are three kinds of outer joins: right outer join, left outer join, full outer join. Given the following instances We obtain the following results sidbid 22101 31Null 58103 sidbid 22101 58103 sidbid 22101 31Null 58103 Left Outer Join Right Outer Join Full Outer Join
 Slide 31
 31 COMPLEX INTEGRITY CONSTRAINTS (1) 1. Constraints Over a Single Table (table constraints) Format: CHECK conditionalexpression Example: CREATE TABLE Sailors (sid INTEGER, sname CHAR (10), rating INTEGER, age REAL, PRIMARY KEY (sid), CHECK (rating >= 1 AND rating