58
Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested queries Pair wise and non-pair wise comparison Union Minus intersection

Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

Embed Size (px)

Citation preview

Page 1: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

Chapter ElevenData Manipulation Language (DML)

Nested QueriesDr. Chitsaz

Objectives• Nested queries

• Application of nested queries

• Conditions on nested queries

• Pair wise and non-pair wise comparison

• Union

• Minus

• intersection

Page 2: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

2

SELECT ……

FROM …..

WHERE operator (SELECT ….

FROM ….);

Nested Queries:

Page 3: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

3

Rules:

• Inner query is executed first• Enclosed sub-queries in parentheses.• Sub-queries must be placed on the right side of the

comparison operator• Do not add an ORDER BY to a sub-query • Result is used by outer query• Sub-query can be placed in

WHEREHAVINGFROM

Page 4: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

4

Rules:

Operator:– Single row

= ,<>, > ,< , >= ,<=

– Multiple rowsANY IN ALL

• Use single row operators with a single row sub-query• Use multiple row operators with multiple rows

sub-query

Page 5: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

5

Example Data

SELECT * FROM Student;NAME ID MAJOR MINOR GPA------------------------------- ---- ---- ----------------James 243 COSC MATH 3.21John 102234 COSC MATH 3.32Sarah 201241 MATH COSC 3.20Mary 341235 MATH ENGL 2.11Walter 1111 ENGL MATH 1.41Sally 2001 MATH ENGL 3.00Isaac 201248 MATH COSC 4.00

7 rows selected.

Page 6: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

6

Example Data

SELECT * FROM Faculty;NAME ID SALARY DEPT AREA---------- ---------- -----------------------------------------------------Williams 191 34000 COSC DATA STRUCTURESJohnson 1234 30000 MATH CALCULUSJackson 413 45000 COSC NETWORKINGHook 103 25000 COSC DATABASEMorgan 127 32000 ENGL LITERATUREThomas 243 30000 MATH ALGEBRASmith 849 45000 COSC NETWORKINGAugustine 837 20000 COSC DATA STRUCTURES

8 rows selected.

Page 7: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

7

Example Data

SELECT * FROM Department;DEPARTMENT_NAME ID---- -----------------------------------------------ENGL 2003MATH 4513PSYC 1113COSC 2001MUSC 1233HIST 42513PHSC 4542CHEM 4113IDIS 3543

9 rows selected.

Page 8: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

8

Example Data

SELECT * FROM Student_course; ID C_NUM DEPT CREDITS NAME GRADE----------------------------------- ---------- ---- ---------- --------------

----------- 102234 360 MATH 3 MATH360 A 102234 100 MATH 3 MATH100 B 201241 310 COSC 3 COSC310 C 341235 250 COSC 3 COSC250 F 2001 120 ENGL 3 ENGL120 C 1111 360 ENGL 3 ENGL360 A 243 450 MATH 3 MATH450 B 2001 565 COSC 3 COSC565 C

8 rows selected.

Page 9: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

9

Nested Queries:

• Correlated sub-queries:

SELECT NameFROM Student WHERE GPA >

(SELECT GPA FROM Student WHERE ID= 243);

Page 10: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

10

Results

NAME

---------

John

Sarah

Isaac

Page 11: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

11

*Nested Queries*:

• Scalar sub-queries:

SELECT Name, IDFROM Student_course SORDER BY

(SELECT Department_Name

FROM Department D

WHERE S.id=D.id);

Page 12: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

12

Results

NAME ID--------------------------------------ENGL120 2001COSC565 2001MATH360 102234MATH100 102234ENGL360 1111MATH450 243COSC310 201241COSC250 341235

Page 13: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

13

Using group function in a sub-query:

• SELECT Name

FROM Faculty

WHERE Salary =(SELECT MIN(Salary )

FROM Faculty );

Page 14: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

14

Results

NAME

-------------

Augustine

Page 15: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

15

Using HAVING with sub-queries:

SELECT Dept, MIN(salary)

FROM Faculty

GROUP BY Dept

HAVING MIN(Salary) >

(SELECT MIN(Salary )

FROM Faculty

WHERE Dept='COSC');

Page 16: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

16

Results

DEPT MIN(SALARY)

------------------------------

ENGL 32000

MATH 30000

Page 17: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

17

Incorrect Statements:

SELECT Name

FROM Faculty

WHERE Salary =

(SELECT MIN(Salary )

FROM Faculty

GROUP BY Dept);

Page 18: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

18

No Value

SELECT Name

FROM Student

WHERE GPA =

(SELECT GPA

FROM Student

WHERE Name=‘NOHN');

Page 19: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

19

Multiple Row Sub-query:

• Name of students having Grade A:SELECT NameFROM Student WHERE ID IN

(SELECT ID FROM Student_Course

WHERE Grade='A' ); WHERE EXISTSWHERE NOT IN …. WHERE NOT EXISTS

Page 20: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

20

Results

NAME

-------

Walter

John

Page 21: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

21

Multiple Row Sub-query:

SELECT Name, IDFROM StudentWHERE ID IN

(SELECT ID FROM Faculty WHERE Dept IN

(SELECT Department_Name FROM Department WHERE ID = 2001) );

Page 22: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

22

Multiple Row Sub-query:

SELECT Name

FROM Student

WHERE GPA < ANY (SELECT GPA

FROM Student

WHERE Major='COSC' );

Page 23: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

23

Results

NAME

--------

James

Sarah

Mary

Walter

Sally

Page 24: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

24

*Multiple Row Sub-query*:

SELECT Name

FROM Student

WHERE ID > ALL

(SELECT ID FROM

Student_Course

WHEREMajor='COSC' );

Page 25: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

25

Results

NAME

--------

Sarah

Mary

Walter

Sally

Isaac

Page 26: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

26

Multiple Row Sub-query:

SELECT NameFROM FacultyWHERE Salary <

(SELECT Salary FROM Faculty

WHERE Faculty.ID =1234)

AND Dept =

(SELECT DeptFROM Faculty

WHEREArea='DATABASE');

Page 27: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

27

Results

NAME

------------

Hook

Augustine

Page 28: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

28

Multiple Row Sub-query:

• Name of Faculty who took courses

SELECT Name

FROM Faculty

WHERE EXISTS // IN (SELECT *

FROM Student_Course

WHERE Faculty.ID =

Student_Course.ID);

Page 29: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

29

Results

NAME

---------

Thomas

Page 30: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

30

Multiple Row Sub-query:

• Name of Faculty who did not take courses

SELECT Name

FROM Faculty

WHERE NOT EXISTS (SELECT *

FROM Student_Course

WHERE Faculty.ID =

Student_Course.ID);

Page 31: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

31

Results

NAME------------WilliamsJohnsonJacksonHookMorganSmithAugustine

Page 32: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

32

How to write this query?

– Find the department name and faculty name of the department with more than one faculty member.

Page 33: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

33

How to write this query?

– Find Departments with more than one Faculty

SELECT Dept, COUNT(*)FROM FacultyGROUP BY DeptHAVING COUNT(*) > 1;

Result: DEPT COUNT(*)

----------------------------COSC 5MATH 2

Page 34: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

34

How to write this query?

– Find department and name of faculty that are in each department with more than one faculty:

SELECT Dept, Name, COUNT(*)

FROM Faculty

GROUP BY Dept, Name

HAVING COUNT(*) > 1;

Page 35: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

35

How to write this query?

– SELECT Dept, Name

FROM Faculty a

WHERE EXISTS

(SELECT *

FROM Faculty b

WHERE a.Dept = b.Dept

GROUP BY b.Dept

HAVING COUNT(b.ID) > 1);

Page 36: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

36

Results

DEPT NAME--------------------------COSC Williams

MATH Johnson

COSC Jackson

COSC Hook

MATH Thomas

COSC Smith

COSC Augustine

Page 37: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

37

Multiple Column Sub-queries:

SELECT col1,col2, col3,…

FROM table

WHERE (col1,col2, ….) IN (SELECT (col1,col2,

….)

FROM table

WHERE condition );

Page 38: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

38

(Pair-wise Comparison)

• Name of students who have the same major and minor as Mary:

SELECT Name, ID, GPA

FROM Student

WHERE (major, minor) IN (SELECT Major, Minor

FROM Student

WHERE Name='MARY');

Page 39: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

39

Results

NAME ID GPA

---------- ---------------------------

Mary 341235 2.11

Sally 2001 3.00

Page 40: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

40

(Non-pair-wise Comparison)

SELECT Name, ID, SalaryFROM FacultyWHERE Salary IN

(SELECT SalaryFROM FacultyWHERE Dept='COSC') OR Area IN

(SELECT Area FROM Faculty

WHERE name =‘Williams');

Page 41: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

41

Results

NAME ID SALARY

-------------------------------------------------

Williams 191 34000

Jackson 413 45000

Hook 103 25000

Smith 849 45000

Augustine 837 20000

Page 42: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

42

Using a sub-query in the FROM clause

SELECT a.Dept, avgsalary

FROM Faculty a ,

(SELECT Dept , AVG(Salary) avgsalary FROM Faculty

GROUP BY Dept) b

WHERE a.Dept = b.Dept;

Page 43: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

43

Results

DEPT AVGSALARY----------------------------COSC 33800COSC 33800COSC 33800COSC 33800COSC 33800ENGL 32000MATH 30000MATH 30000

Page 44: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

44

Correlated Subquery

SELECT *

FROM Student

WHERE EXISTS (SELECT NULL

FROM Faculty

WHERE Faculty.Dept =

Student.Major);

Page 45: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

45

Results

NAME ID MAJOR MINOR GPA--------------------------------------------------------------------------

James 243 COSC MATH 3.21

John 102234 COSC MATH 3.32

Sarah 201241 MATH COSC 3.2

Mary 341235 MATH ENGL 2.11

Walter 1111 ENGL MATH 1.41

Sally 2001 MATH ENGL 3.0

Isaac 201248 MATH COSC 4.0

Page 46: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

46

SELECT ID

FROM Student

WHERE ID NOT IN

(SELECT ID

FROM Faculty

WHERE ID IS NOT NULL);

Note: If Faculty ID is nullable

Page 47: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

47

Results

ID----------

102234 201241 341235 1111 2001 201248

Page 48: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

48

Inline View

SELECT S.ID

FROM Student S, (SELECT IDFROM Faculty)

F

WHERE S.ID < > F.ID;

Page 49: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

49

Manipulating Data

• UNION:

List of students and faculty.

SELECT Name

FROM StudentUNION

SELECT Name

FROM Faculty;

Page 50: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

50

ResultsNAME------------AugustineHookIsaacJacksonJamesJohnJohnsonMaryMorganSallySarahSmithThomasWalterWilliams

Page 51: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

51

Manipulating Data

• UNION:

List of students and faculty.

SELECT Name

FROM StudentUNION ALL

SELECT Name

FROM Faculty;

Page 52: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

52

ResultsNAME----------JamesJohnSarahMaryWalterSallyIsaacWilliamsJohnsonJacksonHookMorganThomasSmithAugustine

Page 53: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

53

Manipulating Data

• INTERSECT:

List of students who are also a faculty member.

SELECT Name

FROM StudentINTERSECT

SELECT Name

FROM Faculty;

Page 54: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

54

Manipulating Data

• MINUS:

SELECT Name

FROM StudentMINUS

SELECT Name

FROM Faculty;

Page 55: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

55

Results

NAME-----------IsaacJamesJohnMarySallySarahWalter

Page 56: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

56

Question:

How many times will the subquery run?

SELECT a.ID, a.Name

FROM Student a

WHERE a.Major = (SELECT Name

From Department

---------------------);

DELETE FROM Student

WHERE ID = (SELECT MIN(ID)

FROM MyTable);

Page 57: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

57

Question:

How does this query proceed?

SELECT ID, Name, GPA, Major

FROM Student s

WHERE GPA = (SELECT MAX(GPA)

FROM Student

WHERE Major = s.Major);

Page 58: Chapter Eleven Data Manipulation Language (DML) Nested Queries Dr. Chitsaz Objectives Nested queries Application of nested queries Conditions on nested

58

Question:

Which query will run faster?

SELECT s.NameFROM Student sWHERE s.GPA = (SELECT MAX(GPA)

FROM Student);

SELECT *FROM (SELECT s.Name, GPA,

DENSE_RANK OVER (ORDER BY GPA DESC) d

FROM Student s)WHERE d = 1;