Presentation is loading. Please wait.

Presentation is loading. Please wait.

Nov 24, 2003Murali Mani SQL B term 2004: lecture 12.

Similar presentations


Presentation on theme: "Nov 24, 2003Murali Mani SQL B term 2004: lecture 12."— Presentation transcript:

1 Nov 24, 2003Murali Mani SQL B term 2004: lecture 12

2 Nov 24, 2003Murali Mani SELECT-FROM-WHERE SELECT * FROM Student WHERE sName=“Greg” AND address=“320 FL”  (sName=“Greg” AND address=“320 FL”) (Student)

3 Nov 24, 2003Murali Mani Project SELECT sNumber, sName FROM Student  (sNumber, sName) (Student)

4 Nov 24, 2003Murali Mani Extended Projection SELECT sNumber || sName AS info FROM Student WHERE address=“320 FL”  (sNumber||sName  info) (  (address=‘320 FL’) (Student)) In short,  L (  C (R)) becomes SELECT L FROM R WHERE C

5 Nov 24, 2003Murali Mani Renaming SELECT s1.sNumber as num FROM Student S1 WHERE s1.sNumber >= 1;  (s1.sNumber  num) (  (s1.sNumber >= 1) (  S1 (Student)))

6 Nov 24, 2003Murali Mani String comparison operators =,, <>, >=, <=: Based on lexicographic ordering. Concatenation operator: || ‘ represented in strings with two consecutive ‘ Pattern match: s LIKE p p = pattern % : any sequence of 0 or more characters - : matches 1 character Patterns can explicitly declare escape characters as: s LIKE ‘x%am%’ ESCAPE ‘x’

7 Nov 24, 2003Murali Mani Comparison with NULL values Arithmetic operations on NULL return NULL. Comparison operators on NULL return UNKNOWN. We can explicitly check whether a value is null or not, by IS NULL, IS NOT NULL.

8 Nov 24, 2003Murali Mani Truth table with UNKNOWN UNKNOWN AND TRUE = UNKNOWN UNKNOWN OR TRUE = TRUE UNKNOWN AND FALSE = FALSE UNKNOWN OR FALSE = UNKNOWN UNKNOWN AND UNKNOWN = UNKNOWN UNKNOWN OR UNKNOWN = UNKNOWN NOT UNKNOWN = UNKNOWN A WHERE clause is satisfied only when it evaluates to TRUE.

9 Nov 24, 2003Murali Mani UNION, INTERSECT, EXCEPT (SELECT sName FROM Student) EXCEPT (SELECT sName FROM Student WHERE address=‘320 FL’) UNION, INTERSECT, EXCEPT have set sematics. For bag semantics, use UNION ALL, INTERSECT ALL, EXCEPT ALL

10 Nov 24, 2003Murali Mani Joins SELECT sName FROM Student, Professor WHERE pName=‘MM’ AND pName=professor;  (sName) (Student ⋈ (pName=‘MM’ and pname=professor) Professor)

11 Nov 24, 2003Murali Mani Cross Product (Cartesian Product) SELECT * FROM Student CROSS JOIN Professor; Student X Professor can also be written as: SELECT sNumber, sName, pNumber, pName FROM Student, Professor

12 Nov 24, 2003Murali Mani Theta Join SELECT * FROM Student JOIN Professor ON professor=pname; Student ⋈ (professor=pname) Professor SELECT sNumber, sName, pNumber, pName FROM Student, Professor WHERE professor=pName;

13 Nov 24, 2003Murali Mani Natural Join SELECT * FROM Student NATURAL JOIN Professor Student ⋈ Professor

14 Nov 24, 2003Murali Mani Outer Joins SELECT * FROM Student NATURAL FULL OUTER JOIN Professor Student ⋈ o Professor SELECT * FROM Student NATURAL LEFT OUTER JOIN Professor Student ⋈ o L Professor

15 Nov 24, 2003Murali Mani Outer Joins SELECT * FROM Student NATURAL RIGHT OUTER JOIN Professor Student ⋈ o R Professor

16 Nov 24, 2003Murali Mani Sorting: ORDER BY clause SELECT * FROM Student WHERE sNumber >= 1 ORDER BY sNumber, sName  (sNumber, sName) (  (sNumber >= 1) (Student))

17 Nov 24, 2003Murali Mani Subqueries SELECT * FROM Student WHERE professor = (SELECT pname FROM Professor WHERE pnumber=1) Note: the inner subquery returns a relation, but SQL runtime ensures that the subquery returns a relation with one column and with one row, otherwise it is a run-time error.

18 Nov 24, 2003Murali Mani Subqueries We can use IN, EXISTS, ALL, ANY can be used with comparisons SELECT * FROM Student WHERE (sNumber, professor) IN (SELECT pNumber, pName FROM Professor)

19 Nov 24, 2003Murali Mani Subqueries SELECT * FROM Student WHERE sNumber > ALL (SELECT pNumber FROM Professor)

20 Nov 24, 2003Murali Mani Subqueries SELECT * FROM Student WHERE EXISTS (SELECT pname FROM Professor WHERE Student.professor=pName)

21 Nov 24, 2003Murali Mani Subqueries with negation SELECT * FROM Student WHERE (sNumber, professor) NOT IN (SELECT pNumber, pName FROM Professor) For ALL, ANY, EXISTS, we can do SELECT * FROM Student WHERE NOT sNumber > ALL (SELECT pNumber FROM Professor)

22 Nov 24, 2003Murali Mani Subqueries in FROM clause SELECT sName, pName FROM Student, (SELECT * FROM Professor WHERE pNumber=1) WHERE professor=pName;

23 Nov 24, 2003Murali Mani Duplicate Elimination SELECT DISTINCT * FROM Student;  (Student) SELECT DISTINCT address FROM Student WHERE sNumber >= 1;

24 Nov 24, 2003Murali Mani Aggregation SELECT COUNT (*) FROM Student; SELECT COUNT (sNumber) FROM Student; SELECT MIN (sNumber) FROM Student; SELECT MAX (sNumber) FROM Student; SELECT SUM (sNumber) FROM Student; SELECT AVG (sNumber) FROM Student; We can have distinct such as: SELECT COUNT (DISTINCT sNumber) FROM Student

25 Nov 24, 2003Murali Mani Grouping SELECT COUNT (sName) FROM Student GROUP BY address;  (COUNT (sName)) (  (address, COUNT (sName)) (Student)) SELECT COUNT (sName) FROM Student GROUP BY address HAVING COUNT (sNumber) >= 1;

26 Nov 24, 2003Murali Mani Aggregation and NULLs NULLs are ignored in any aggregation; except COUNT (*) However if the set of attributes to be grouped on has null values, then grouping is done on the null values as well.

27 Nov 24, 2003Murali Mani SQL Queries - Summary SELECT [DISTINCT] a1, a2, …, an FROM R1, R2, …, Rm [WHERE C1] [GROUP BY g1, g2, …, gl [HAVING C2]] [ORDER BY o1, o2, …, oj]


Download ppt "Nov 24, 2003Murali Mani SQL B term 2004: lecture 12."

Similar presentations


Ads by Google