sql - home | suanlabsuanlab.com/assets/lectures/dbe/04.pdf•interactive via gui or prompt, or...

234
SQL Suan Lee

Upload: others

Post on 27-Feb-2021

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

Suan Lee

Page 2: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL - Suan Lee 2

Page 3: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

Introduction to SQL

• “S.Q.L.” or “sequel”

• Supported by all major commercial database systems

• Standardized – many new features over time

• Interactive via GUI or prompt, or embedded in programs

• Declarative, based on relational algebra

SQL - Suan Lee 3

Page 4: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

Data Definition Language (DDL)• CREATE TABLE …

• DROP TABLE …

Data Manipulation Language (DML)• SELECT …

• INSERT …

• DELETE …

• UPDATE …

Other Commands

indexes, constraints, views, triggers, transactions, authorization, …

SQL - Suan Lee 4

Page 5: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

The Basic SELECT Statement

SQL - Suan Lee 5

SELECT A1,A2,…,AnFROM R1,R2, …,RmWHERE condition

Page 6: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

The Basic SELECT Statement

ΠA1, …, An(σ condition(R1×…×Rm)

SQL - Suan Lee 6

SELECT A1,A2,…,AnFROM R1,R2, …,RmWHERE condition

Page 7: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

• “S.Q.L.” or “sequel”

• Supported by all major commercial database systems

• Standardized – many new features over time

• Interactive via GUI or prompt, or embedded in programs

• Declarative, based on relational algebra

SQL - Suan Lee 7

Page 8: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL - Suan Lee 8

Page 9: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

Basic SELECT Statement

SQL - Suan Lee 9

SELECT A1,A2,…,AnFROM R1,R2, …,RmWHERE condition

Page 10: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

Basic SELECT Statement

Demo: simple college admissions databaseCollege(cName, state, enrollment)

Student(sID, sName, GPA, sizeHS)

Apply(sID, cName, major, decision)

SQL - Suan Lee 10

SELECT A1,A2,…,AnFROM R1,R2, …,RmWHERE condition

Page 11: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

• Colleges

SQL - Suan Lee 11

Page 12: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

• Students

SQL - Suan Lee 12

Page 13: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

• Apply

SQL - Suan Lee 13

Page 14: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 14

SELECT sID, sName, GPAFROM StudentWHERE GPA > 3.6;

Page 15: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 15

SELECT sID, sNameFROM StudentWHERE GPA > 3.6;

Page 16: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 16

SELECT sName, majorFROM Student, ApplyWHERE Student.sID = Apply.sID;

Page 17: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 17

SELECT sName, majorFROM Student, ApplyWHERE Student.sID = Apply.sID;

duplicate values

duplicate valuesduplicate values

duplicate values

duplicate values

Page 18: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 18

SELECT DISTINCT sName, majorFROM Student, ApplyWHERE Student.sID = Apply.sID;

Page 19: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 19

SELECT sName, GPA, decisionFROM Student, ApplyWHERE Student.sID = Apply.sIDAND sizeHS < 1000AND major = 'CS'AND cName = 'Stanford';

Page 20: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 20

SELECT cNameFROM College, ApplyWHERE College.cName =

Apply.cNameAND enrollment > 20000AND major = 'CS';

Page 21: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 21

SELECT cNameFROM College, ApplyWHERE College.cName =

Apply.cNameAND enrollment > 20000AND major = 'CS';

Page 22: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 22

SELECT College.cNameFROM College, ApplyWHERE College.cName =

Apply.cNameAND enrollment > 20000AND major = 'CS';

Page 23: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 23

SELECT DISTINCT College.cNameFROM College, ApplyWHERE College.cName =

Apply.cNameAND enrollment > 20000AND major = 'CS';

Page 24: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 24

SELECT Student.sID, sName, GPA, Apply.cName, enrollment

FROM Student, College, ApplyWHERE Apply.sID = Student.sIDAND Apply.cName =

College.cName;

Page 25: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 25

SELECT Student.sID, sName, GPA, Apply.cName, enrollment

FROM Student, College, ApplyWHERE Apply.sID = Student.sIDAND Apply.cName =

College.cName;

Page 26: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 26

SELECT Student.sID, sName, GPA, Apply.cName, enrollment

FROM Student, College, ApplyWHERE Apply.sID = Student.sIDAND Apply.cName =

College.cNameORDER BY GPA DESC;

Page 27: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 27

SELECT Student.sID, sName, GPA, Apply.cName, enrollment

FROM Student, College, ApplyWHERE Apply.sID = Student.sIDAND Apply.cName =

College.cNameORDER BY GPA DESC, enrollment;

Page 28: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 28

SELECT sID, majorFROM ApplyWHERE major LIKE '%bio%';

Page 29: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 29

SELECT *FROM ApplyWHERE major LIKE '%bio%';

Page 30: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 30

SELECT *FROM Student, College;

Page 31: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 31

SELECT *FROM Student, College;

Page 32: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 32

SELECT sID, sName, GPA,sizeHS, GPA*(sizeHS/1000.0)

FROM Student;

Page 33: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 33

SELECT sID, sName, GPA,sizeHS, GPA*(sizeHS/1000.0)

FROM Student;

Page 34: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 34

SELECT sID, sName, GPA,sizeHS, GPA*(sizeHS/1000.0)AS scaledGPA

FROM Student;

Page 35: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL - Suan Lee 35

Page 36: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

Table Variables and Set Operators

Demo: simple college admissions databaseCollege(cName, state, enrollment)

Student(sID, sName, GPA, sizeHS)

Apply(sID, cName, major, decision)

SQL - Suan Lee 36

SELECT A1,A2,…,AnFROM R1,R2, …,RmWHERE condition

Table variables

Set Operators: Union, Intersect, Except

Page 37: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 37

SELECT Student.sID, sName,GPA, Apply.cName,enrollment

FROM Student, College, Apply

WHERE Apply.sID = Student.sID

AND Apply.cName = College.cName;

Page 38: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 38

SELECT S.sID, sName,GPA, A.cName,enrollment

FROM Student S, College C, Apply A

WHERE A.sID = S.sIDAND A.cName = C.cName;

Page 39: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 39

SELECT S1.sID, S1.sName,S1.GPA, S2.sID, S2.sName,S2.GPA

FROM Student S1, Student S2WHERE S1.GPA = S2.GPA;

Page 40: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 40

SELECT S1.sID, S1.sName,S1.GPA, S2.sID, S2.sName,S2.GPA

FROM Student S1, Student S2WHERE S1.GPA = S2.GPA;

Page 41: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 41

SELECT S1.sID, S1.sName,S1.GPA, S2.sID, S2.sName,S2.GPA

FROM Student S1, Student S2WHERE S1.GPA = S2.GPAAND S1.sID <> S2.sID;

Page 42: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 42

SELECT S1.sID, S1.sName,S1.GPA, S2.sID, S2.sName,S2.GPA

FROM Student S1, Student S2WHERE S1.GPA = S2.GPAAND S1.sID < S2.sID;

Page 43: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 43

SELECT cNameFROM CollegeUNIONSELECT sNameFROM Student;

Page 44: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 44

SELECT cName AS nameFROM CollegeUNIONSELECT sName AS nameFROM Student;

Page 45: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 45

SELECT cName AS nameFROM CollegeUNION ALLSELECT sName AS nameFROM Student;

Page 46: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 46

SELECT cName AS nameFROM CollegeUNION ALLSELECT sName AS nameFROM StudentORDER BY name;

Page 47: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 47

SELECT sIDFROM ApplyWHERE major = 'CS'INTERSECTSELECT sIDFROM ApplyWHERE major = 'EE‘;

Page 48: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 48

SELECT A1.sIDFROM Apply A1, Apply A2WHERE A1.sID = A2.sIDAND A1.major = 'CS'AND A2.major = 'EE';

Page 49: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 49

SELECT A1.sIDFROM Apply A1, Apply A2WHERE A1.sID = A2.sIDAND A1.major = 'CS'AND A2.major = 'EE';

Page 50: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 50

SELECT DISTINCT A1.sIDFROM Apply A1, Apply A2WHERE A1.sID = A2.sIDAND A1.major = 'CS'AND A2.major = 'EE';

Page 51: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 51

SELECT sIDFROM ApplyWHERE major = 'CS'MINUSSELECT sIDFROM ApplyWHERE major = 'EE‘;

Page 52: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL Result

SQL - Suan Lee 52

SELECT sIDFROM ApplyWHERE major = 'CS'MINUSSELECT sIDFROM ApplyWHERE major = 'EE‘;

Page 53: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 53

SELECT A1.sIDFROM Apply A1, Apply A2WHERE A1.sID = A2.sIDAND A1.major = 'CS'AND A2.major <> 'EE';

Page 54: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 54

SELECT A1.sIDFROM Apply A1, Apply A2WHERE A1.sID = A2.sIDAND A1.major = 'CS'AND A2.major <> 'EE';

Result

Page 55: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 55

SELECT DISTINCT A1.sIDFROM Apply A1, Apply A2WHERE A1.sID = A2.sIDAND A1.major = 'CS'AND A2.major <> 'EE';

Result

Page 56: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL - Suan Lee 56

Page 57: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

Subqueries in WHERE

Demo: simple college admissions databaseCollege(cName, state, enrollment)

Student(sID, sName, GPA, sizeHS)

Apply(sID, cName, major, decision)

SQL - Suan Lee 57

SELECT A1,A2,…,AnFROM R1,R2, …,RmWHERE condition

Expressions involving “subqueries”: nested

Select statements

Page 58: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 58

SELECT sID, sNameFROM StudentWHERE sID IN(SELECT sIDFROM ApplyWHERE major = 'CS'

);

Page 59: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 59

SELECT sID, sNameFROM StudentWHERE sID IN(SELECT sIDFROM ApplyWHERE major = 'CS'

);

Result

Page 60: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 60

SELECT sID, sNameFROM Student, ApplyWHERE Student.sID =

Apply.sIDAND major = 'CS';

Page 61: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 61

SELECT sID, sNameFROM Student, ApplyWHERE Student.sID =

Apply.sIDAND major = 'CS';

Result

Page 62: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 62

SELECT Student.sID, sNameFROM Student, ApplyWHERE Student.sID =

Apply.sIDAND major = 'CS';

Result

Page 63: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 63

SELECT Student.sID, sNameFROM Student, ApplyWHERE Student.sID =

Apply.sIDAND major = 'CS';

Result

SELECT sID, sNameFROM StudentWHERE sID IN(SELECT sIDFROM ApplyWHERE major = 'CS'

);

Page 64: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL - Suan Lee 64

Page 65: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 65

SELECT Student.sID, sNameFROM Student, ApplyWHERE Student.sID =

Apply.sIDAND major = 'CS';

Result

Page 66: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 66

SELECT DISTINCT Student.sID,sName

FROM Student, ApplyWHERE Student.sID =

Apply.sIDAND major = 'CS';

Result

Page 67: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 67

SELECT sNameFROM StudentWHERE sID IN(SELECT sIDFROM ApplyWHERE major = 'CS'

);

Result

Page 68: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 68

SELECT sNameFROM Student, ApplyWHERE Student.sID =

Apply.sIDAND major = 'CS';

Page 69: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 69

SELECT sNameFROM Student, ApplyWHERE Student.sID =

Apply.sIDAND major = 'CS';

Result

Page 70: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 70

SELECT DISTINCT sNameFROM Student, ApplyWHERE Student.sID =

Apply.sIDAND major = 'CS';

Result

Page 71: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 71

SELECT DISTINCT sNameFROM Student, ApplyWHERE Student.sID =

Apply.sIDAND major = 'CS';

Result

SELECT DISTINCT Student.sID,sName

FROM Student, ApplyWHERE Student.sID =

Apply.sIDAND major = 'CS';

Page 72: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 72

SELECT GPAFROM StudentWHERE sID IN(SELECT sIDFROM ApplyWHERE major = 'CS'

);

Result

Page 73: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 73

SELECT GPAFROM Student, ApplyWHERE Student.sID =

Apply.sIDAND major = 'CS';

Result

Page 74: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 74

SELECT DISTINCT GPAFROM Student, ApplyWHERE Student.sID =

Apply.sIDAND major = 'CS';

Result

Page 75: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 75

SELECT DISTINCT GPAFROM Student, ApplyWHERE Student.sID =

Apply.sIDAND major = 'CS';

Result

SELECT GPAFROM StudentWHERE sID IN(SELECT sIDFROM ApplyWHERE major = 'CS'

);

Page 76: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 76

SELECT sID, sNameFROM StudentWHERE sID IN(SELECT sIDFROM ApplyWHERE major = 'CS'

)AND sID NOT IN(SELECT sIDFROM ApplyWHERE major = 'EE'

);

Page 77: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 77

SELECT sID, sNameFROM StudentWHERE sID IN(SELECT sIDFROM ApplyWHERE major = 'CS'

)AND sID NOT IN(SELECT sIDFROM ApplyWHERE major = 'EE'

);

Result

Page 78: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 78

SELECT sID, sNameFROM StudentWHERE sID IN(SELECT sIDFROM ApplyWHERE major = 'CS'

)AND NOT sID IN(SELECT sIDFROM ApplyWHERE major = 'EE'

);

Result

Page 79: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 79

SELECT cName, stateFROM College C1WHERE EXISTS(SELECT *FROM College C2WHERE C2.state = C1.state

);

Page 80: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 80

SELECT cName, stateFROM College C1WHERE EXISTS(SELECT *FROM College C2WHERE C2.state = C1.state

);

Result

Page 81: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 81

SELECT cName, stateFROM College C1WHERE EXISTS(SELECT *FROM College C2WHERE C2.state = C1.stateAND C1.cName <> C2.cName

);

Page 82: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 82

SELECT cName, stateFROM College C1WHERE EXISTS(SELECT *FROM College C2WHERE C2.state = C1.stateAND C1.cName <> C2.cName

);

Result

Page 83: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 83

SELECT cNameFROM College C1WHERE NOT EXISTS(SELECT *FROM College C2WHERE C2.enrollment >

C1.enrollment);

Page 84: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 84

SELECT cNameFROM College C1WHERE NOT EXISTS(SELECT *FROM College C2WHERE C2.enrollment >

C1.enrollment);

Result

Page 85: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 85

SELECT sNameFROM Student S1WHERE NOT EXISTS(SELECT *FROM Student S2WHERE S2.GPA > S1.GPA

);

Page 86: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 86

SELECT sNameFROM Student S1WHERE NOT EXISTS(SELECT *FROM Student S2WHERE S2.GPA > S1.GPA

);

Result

Page 87: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 87

SELECT sName, GPAFROM Student S1WHERE NOT EXISTS(SELECT *FROM Student S2WHERE S2.GPA > S1.GPA

);

Result

Page 88: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 88

SELECT S1.sName, S1.GPAFROM Student S1, Student S2WHERE S1.GPA > S2.GPA;

Page 89: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 89

SELECT S1.sName, S1.GPAFROM Student S1, Student S2WHERE S1.GPA > S2.GPA;

Result

Page 90: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 90

SELECT DISTINCT S1.sName, S1.GPAFROM Student S1, Student S2WHERE S1.GPA > S2.GPA;

Result

Page 91: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 91

SELECT sName, GPAFROM StudentWHERE GPA >= ALL(SELECT GPAFROM Student

);

Page 92: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 92

SELECT sName, GPAFROM StudentWHERE GPA >= ALL(SELECT GPAFROM Student

);

Result

Page 93: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 93

SELECT sNameFROM Student S1WHERE GPA > ALL(SELECT GPAFROM Student S2WHERE S2.sID <> S1.sID

);

Page 94: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 94

SELECT sNameFROM Student S1WHERE GPA > ALL(SELECT GPAFROM Student S2WHERE S2.sID <> S1.sID

);

Result

Page 95: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 95

SELECT cNameFROM College C1WHERE enrollment > ALL(SELECT enrollmentFROM College C2WHERE C2.cName <> C1.cName

);

Result

Page 96: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 96

SELECT cNameFROM College C1WHERE NOT enrollment <= ANY(SELECT enrollmentFROM College C2WHERE C2.cName <> C1.cName

);

Page 97: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 97

SELECT cNameFROM College C1WHERE NOT enrollment <= ANY(SELECT enrollmentFROM College C2WHERE C2.cName <> C1.cName

);

Result

Page 98: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 98

SELECT sID, sName, sizeHSFROM StudentWHERE sizeHS > ANY(SELECT sizeHSFROM Student

);

Page 99: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 99

SELECT sID, sName, sizeHSFROM StudentWHERE sizeHS > ANY(SELECT sizeHSFROM Student

);

Result

Page 100: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 100

SELECT sID, sName, sizeHSFROM Student S1WHERE EXISTS(SELECT *FROM Student S2WHERE S2.sizeHS <

S1.sizeHS);

Page 101: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 101

SELECT sID, sName, sizeHSFROM Student S1WHERE EXISTS(SELECT *FROM Student S2WHERE S2.sizeHS <

S1.sizeHS);

Result

Page 102: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 102

SELECT sID, sNameFROM StudentWHERE sID = ANY(SELECT sIDFROM ApplyWHERE major = 'CS'

)AND sID <> ANY(SELECT sIDFROM ApplyWHERE major = 'EE'

);

Page 103: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 103

SELECT sID, sNameFROM StudentWHERE sID IN(SELECT sIDFROM ApplyWHERE major = 'CS'

)AND NOT sID IN(SELECT sIDFROM ApplyWHERE major = 'EE'

);

Result

Page 104: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 104

SELECT sID, sNameFROM StudentWHERE sID = ANY(SELECT sIDFROM ApplyWHERE major = 'CS'

)AND sID <> ANY(SELECT sIDFROM ApplyWHERE major = 'EE'

);

Page 105: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 105

SELECT sID, sNameFROM StudentWHERE sID = ANY(SELECT sIDFROM ApplyWHERE major = 'CS'

)AND sID <> ANY(SELECT sIDFROM ApplyWHERE major = 'EE'

);

Result

Page 106: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 106

SELECT sID, sNameFROM StudentWHERE sID = ANY(SELECT sIDFROM ApplyWHERE major = 'CS'

)AND NOT sID = ANY(SELECT sIDFROM ApplyWHERE major = 'EE'

);

Page 107: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 107

SELECT sID, sNameFROM StudentWHERE sID = ANY(SELECT sIDFROM ApplyWHERE major = 'CS'

)AND NOT sID = ANY(SELECT sIDFROM ApplyWHERE major = 'EE'

);

Result

Page 108: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL - Suan Lee 108

Page 109: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

Subqueries in FROM and SELECT

Demo: simple college admissions databaseCollege(cName, state, enrollment)

Student(sID, sName, GPA, sizeHS)

Apply(sID, cName, major, decision)

SQL - Suan Lee 109

SELECT A1,A2,…,AnFROM R1,R2, …,RmWHERE condition

Expressions involving “subqueries”: nested

Select statements

Page 110: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 110

SELECT sID, sName, GPA, GPA*(sizeHS/1000.0)AS scaledGPA

FROM StudentWHERE GPA*(sizeHS/1000.0)

- GPA > 1.0OR GPA -

GPA*(sizeHS/1000.0) > 1.0;

Page 111: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 111

SELECT sID, sName, GPA, GPA*(sizeHS/1000.0)AS scaledGPA

FROM StudentWHERE GPA*(sizeHS/1000.0)

- GPA > 1.0OR GPA -

GPA*(sizeHS/1000.0) > 1.0;

Result

Page 112: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 112

SELECT sID, sName, GPA, GPA*(sizeHS/1000.0)AS scaledGPA

FROM StudentWHERE ABS(GPA*(sizeHS/1000.0)

- GPA) > 1.0;

Result

Page 113: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 113

SELECT *FROM (SELECT sID, sName, GPA,

GPA*(sizeHS/1000.0)AS scaledGPA

FROM Student) GWHERE ABS (G.scaledGPA - GPA)

> 1.0;

Page 114: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 114

SELECT *FROM (SELECT sID, sName, GPA,

GPA*(sizeHS/1000.0)AS scaledGPA

FROM Student) GWHERE ABS (G.scaledGPA - GPA)

> 1.0;

Result

Page 115: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 115

SELECT College.cName, state, GPA

FROM College, Apply, Student

WHERE College.cName = Apply.cName

AND Apply.sID = Student.sID

AND GPA >= ALL (SELECT GPAFROM Student, ApplyWHERE Student.sID =

Apply.sIDAND Apply.cName =

College.cName);

Page 116: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 116

SELECT College.cName, state, GPA

FROM College, Apply, Student

WHERE College.cName = Apply.cName

AND Apply.sID = Student.sID

AND GPA >= ALL (SELECT GPAFROM Student, ApplyWHERE Student.sID =

Apply.sIDAND Apply.cName =

College.cName);

Result

Page 117: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 117

SELECT DISTINCT College.cName, state, GPA

FROM College, Apply, Student

WHERE College.cName = Apply.cName

AND Apply.sID = Student.sID

AND GPA >= ALL (SELECT GPAFROM Student, ApplyWHERE Student.sID =

Apply.sIDAND Apply.cName =

College.cName);

Result

Page 118: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 118

SELECT cName, state,( SELECT DISTINCT GPAFROM Apply, StudentWHERE College.cName =

Apply.cNameAND Apply.sID =

Student.sIDAND GPA >= ALL (SELECT GPAFROM Student, ApplyWHERE Student.sID =

Apply.sIDAND Apply.cName =

College.cName )) AS GPAFROM College;

Page 119: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 119

SELECT cName, state,( SELECT DISTINCT GPAFROM Apply, StudentWHERE College.cName =

Apply.cNameAND Apply.sID =

Student.sIDAND GPA >= ALL (SELECT GPAFROM Student, ApplyWHERE Student.sID =

Apply.sIDAND Apply.cName =

College.cName )) AS GPAFROM College;

Result

Page 120: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 120

SELECT cName, state( SELECT DISTINCT sNameFROM Apply, StudentWHERE College.cName =

Apply.cNameAND Apply.sID =

Student.sID ) AS sName

FROM College;

Page 121: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 121

SELECT cName, state( SELECT DISTINCT sNameFROM Apply, StudentWHERE College.cName =

Apply.cNameAND Apply.sID =

Student.sID ) AS sName

FROM College;

Result

Page 122: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL - Suan Lee 122

Page 123: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

Aggregation

SQL - Suan Lee 123

SELECT A1,A2,…,AnFROM R1,R2, …,RmWHERE condition

“Aggregation” functionsover values in multiple rows:min, max, sum, avg, count

Page 124: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

Aggregation

Demo: simple college admissions databaseCollege(cName, state, enrollment)

Student(sID, sName, GPA, sizeHS)

Apply(sID, cName, major, decision)

SQL - Suan Lee 124

SELECT A1,A2,…,AnFROM R1,R2, …,RmWHERE conditionGROUP BY columnsHAVING condition

“Aggregation” functionsover values in multiple rows:min, max, sum, avg, count

New clauses

Page 125: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 125

SELECT * FROM Student;

SELECT AVG(GPA) FROM Student;

SQL

Result Result

Page 126: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 126

SELECT *FROM Student, ApplyWHERE Student.sID =

Apply.sIDAND major = 'CS';

SELECT MIN(GPA)FROM Student, ApplyWHERE Student.sID =

Apply.sIDAND major = 'CS';

SQL

Result Result

Page 127: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 127

SELECT *FROM Student, ApplyWHERE Student.sID =

Apply.sIDAND major = 'CS';

SELECT AVG(GPA)FROM Student, ApplyWHERE Student.sID =

Apply.sIDAND major = 'CS';

SQL

Result Result

Page 128: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 128

SELECT *FROM StudentWHERE sID IN( SELECT sIDFROM ApplyWHERE major = 'CS'

);

SELECT AVG(GPA)FROM StudentWHERE sID IN( SELECT sIDFROM ApplyWHERE major = 'CS'

);

SQL

Result Result

Page 129: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 129

SELECT *FROM CollegeWHERE enrollment > 15000;

SELECT COUNT(*)FROM CollegeWHERE enrollment > 15000;

SQL

Result Result

Page 130: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 130

SELECT COUNT(*)FROM ApplyWHERE cName = 'Cornell';

SELECT COUNT(DISTINCT sID)FROM ApplyWHERE cName = 'Cornell';

SQL

Result Result

Page 131: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 131

SELECT sIDFROM ApplyWHERE cName = 'Cornell';

Result

Page 132: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 132

SELECT *FROM Student S1WHERE( SELECT COUNT(*)FROM Student S2WHERE S2.sID <> S1.sIDAND S2.GPA = S1.GPA

) = ( SELECT COUNT(*)FROM Student S2WHERE S2.sID <> S1.sIDAND S2.sizeHS = S1.sizeHS

);

Result

Page 133: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 133

SELECT CS.avgGPA - NonCS.avgGPAFROM(SELECT AVG(GPA) AS avgGPAFROM StudentWHERE sID IN(SELECT sIDFROM ApplyWHERE major = 'CS')) CS,

(SELECT AVG(GPA) AS avgGPAFROM StudentWHERE sID NOT IN(SELECT sIDFROM ApplyWHERE major = 'CS')) nonCS;

Page 134: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 134

SELECT CS.avgGPA - NonCS.avgGPAFROM(SELECT AVG(GPA) AS avgGPAFROM StudentWHERE sID IN(SELECT sIDFROM ApplyWHERE major = 'CS')) CS,

(SELECT AVG(GPA) AS avgGPAFROM StudentWHERE sID NOT IN(SELECT sIDFROM ApplyWHERE major = 'CS')) nonCS;

Result

Page 135: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 135

SELECT( SELECT AVG(GPA) AS avgGPAFROM StudentWHERE sID IN( SELECT sIDFROM ApplyWHERE major = 'CS' ) ) -

( SELECT AVG(GPA) AS avgGPAFROM StudentWHERE sID NOT IN( SELECT sIDFROM ApplyWHERE major = 'CS' ) ) D

FROM Student;

Result

Page 136: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 136

SELECT DISTINCT( SELECT AVG(GPA) AS avgGPAFROM StudentWHERE sID IN( SELECT sIDFROM ApplyWHERE major = 'CS' ) ) -

( SELECT AVG(GPA) AS avgGPAFROM StudentWHERE sID NOT IN( SELECT sIDFROM ApplyWHERE major = 'CS' ) ) D

FROM Student;

Result

Page 137: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 137

SELECT cName, COUNT(*)FROM ApplyGROUP BY cName;

Result

Page 138: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 138

SELECT *FROM ApplyORDER BY cName;

Result

Page 139: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 139

SELECT cName, COUNT(*)FROM ApplyGROUP BY cName;

Result

Page 140: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 140

SELECT state, SUM(enrollment)FROM CollegeGROUP BY state;

Result

Page 141: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 141

SELECT cName, major, MIN(GPA), MAX(GPA)

FROM Student, ApplyWHERE Student.sID =

Apply.sIDGROUP BY cName, major;

Page 142: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 142

SELECT cName, major, GPAFROM Student, ApplyWHERE Student.sID =

Apply.sIDORDER BY cName, major;

Result

Page 143: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 143

SELECT cName, major, MIN(GPA), MAX(GPA)

FROM Student, ApplyWHERE Student.sID =

Apply.sIDGROUP BY cName, major;

Result

Page 144: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 144

SELECT MAX(mx-mn)FROM( SELECT cName, major,

MIN(GPA) AS mn, MAX(GPA) AS mx

FROM Student, ApplyWHERE Student.sID =

Apply.sIDGROUP BY cName, major

) M;

Result

Page 145: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 145

SELECT Student.sID, COUNT(DISTINCT cName)

FROM Student, ApplyWHERE Student.sID =

Apply.sIDGROUP BY Student.sID;

Page 146: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 146

SELECT Student.sID, cNameFROM Student, ApplyWHERE Student.sID =

Apply.sIDORDER BY Student.sID;

Result

Page 147: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 147

SELECT Student.sID, COUNT(DISTINCT cName)

FROM Student, ApplyWHERE Student.sID =

Apply.sIDGROUP BY Student.sID;

Result

Page 148: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 148

SELECT Student.sID, COUNT(DISTINCT cName)

FROM Student, ApplyWHERE Student.sID =

Apply.sIDGROUP BY Student.sIDUNIONSELECT sID, 0FROM StudentWHERE sID NOT IN( SELECT sID FROM Apply );

Page 149: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 149

SELECT Student.sID, COUNT(DISTINCT cName)

FROM Student, ApplyWHERE Student.sID =

Apply.sIDGROUP BY Student.sIDUNIONSELECT sID, 0FROM StudentWHERE sID NOT IN( SELECT sID FROM Apply );

Result

Page 150: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 150

SELECT cNameFROM ApplyGROUP BY cNameHAVING COUNT(*) < 5;

Page 151: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 151

SELECT cNameFROM ApplyGROUP BY cNameHAVING COUNT(*) < 5;

Result

Page 152: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 152

SELECT cNameFROM Apply A1WHERE 5 >(SELECT COUNT(*)FROM Apply A2WHERE A2.cName = A1.cName

);

Result

Page 153: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 153

SELECT DISTINCT cNameFROM Apply A1WHERE 5 >(SELECT COUNT(*)FROM Apply A2WHERE A2.cName = A1.cName

);

Result

Page 154: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 154

SELECT cNameFROM ApplyGROUP BY cNameHAVING COUNT(DISTINCT sID) < 5;

Result

SQL

SELECT cNameFROM ApplyGROUP BY cNameHAVING COUNT(*) < 5;

Result

Page 155: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 155

SELECT majorFROM Student, ApplyWHERE Student.sID =

Apply.sIDGROUP BY majorHAVING MAX(GPA) < ( SELECT AVG(GPA) FROM Student );

Page 156: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 156

SELECT majorFROM Student, ApplyWHERE Student.sID =

Apply.sIDGROUP BY majorHAVING MAX(GPA) < ( SELECT AVG(GPA) FROM Student );

Result

Page 157: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL - Suan Lee 157

Page 158: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

NULL Values

Demo: simple college admissions databaseCollege(cName, state, enrollment)

Student(sID, sName, GPA, sizeHS)

Apply(sID, cName, major, decision)

SQL - Suan Lee 158

SELECT A1,A2,…,AnFROM R1,R2, …,RmWHERE condition

NULL values: undefined or unknown

Page 159: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 159

SELECT *FROM Student;

Result

Page 160: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 160

INSERT INTO Student VALUES (432, 'Kevin', null, 1500);INSERT INTO Student VALUES (321, 'Lori', null, 2500);

Result

Page 161: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 161

SELECT sID, sName, GPAFROM StudentWHERE GPA > 3.5;

Result

Page 162: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 162

SELECT sID, sName, GPAFROM StudentWHERE GPA <= 3.5;

Result

Page 163: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 163

SELECT sID, sName, GPAFROM StudentWHERE GPA > 3.5 OR

GPA <= 3.5;

Result

Page 164: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 164

SELECT sID, sName, GPAFROM StudentWHERE GPA > 3.5 OR

GPA <= 3.5 ORGPA IS NULL;

Result

Page 165: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 165

SELECT sID, sName, GPA, sizeHS

FROM StudentWHERE GPA > 3.5 OR

sizeHS < 1600;

Result

Page 166: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 166

SELECT sID, sName, GPA, sizeHS

FROM StudentWHERE GPA > 3.5 OR

sizeHS < 1600 ORsizeHS >= 1600;

Result

Page 167: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 167

SELECT COUNT(*)FROM StudentWHERE GPA IS NOT NULL;

Result

Page 168: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 168

SELECT COUNT(DISTINCT GPA)FROM StudentWHERE GPA IS NOT NULL;

Result

Page 169: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 169

SELECT DISTINCT GPAFROM Student;

Result

Page 170: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL - Suan Lee 170

Page 171: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

Data Modification Statements

• Inserting new data (2 methods)

SQL - Suan Lee 171

INSERT INTO TABLEVALUES (A1,A2,…,An)

INSERT INTO TABLESelect-Statement

Page 172: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

Data Modification Statements

• Deleting existing data

SQL - Suan Lee 172

DELETE FROM TABLEWHERE Condition

Page 173: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

Data Modification Statements

• Updating existing data

SQL - Suan Lee 173

UPDATE TABLESET Attribute = ExpressionWHERE Condition

Page 174: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

Data Modification Statements

• Updating existing data

Demo: simple college admissions databaseCollege(cName, state, enrollment)

Student(sID, sName, GPA, sizeHS)

Apply(sID, cName, major, decision)

SQL - Suan Lee 174

UPDATE TABLESET A1 = Expr1, A2 = Expr2, …,

A3 = Expr3, WHERE Condition

Page 175: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 175

INSERT INTO CollegeVALUES ('Carnegie Mellon',

'PA', 11500);

Result

SELECT * FROM College;

Page 176: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 176

SELECT *FROM StudentWHERE sID NOT IN(SELECT sIDFROM Apply

);

Result

Page 177: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 177

SELECT sID, 'Carnegie Mellon', 'CS', NULL

FROM StudentWHERE sID NOT IN(SELECT sIDFROM Apply

);

Result

Page 178: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 178

INSERT INTO ApplySELECT sID, 'Carnegie Mellon’,

‘CS’, NULLFROM StudentWHERE sID NOT IN(SELECT sIDFROM Apply

);

Result

SELECT * FROM Apply;

Page 179: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 179

SELECT *FROM StudentWHERE sID IN(SELECT sIDFROM ApplyWHERE major = ‘EE’AND decision = ‘N’

);

Result

Page 180: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 180

SELECT sID, 'Carnegie Mellon','EE', 'Y'

FROM StudentWHERE sID IN(SELECT sIDFROM ApplyWHERE major = ‘EE’AND decision = ‘N’

);

Result

Page 181: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 181

INSERT INTO ApplySELECT sID, 'Carnegie Mellon',

'EE', 'Y'FROM StudentWHERE sID IN(SELECT sIDFROM ApplyWHERE major = ‘EE’AND decision = ‘N’

);

Result

SELECT * FROM Apply;

Page 182: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 182

SELECT sID, COUNT(DISTINCT major)

FROM ApplyGROUP BY sIDHAVING COUNT(DISTINCT major)

> 2;

Result

Page 183: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 183

DELETEFROM StudentWHERE sID IN(SELECT sIDFROM ApplyGROUP BY sIDHAVING COUNT(DISTINCT major)

> 2);

Result

SELECT * FROM Student;

Page 184: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 184

DELETEFROM ApplyWHERE sID IN(SELECT sIDFROM ApplyGROUP BY sIDHAVING COUNT(DISTINCT major)

> 2);

Result

SELECT * FROM Apply;

Page 185: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 185

SELECT *FROM CollegeWHERE cName NOT IN(SELECT cNameFROM ApplyWHERE major = 'CS'

);

Result

Page 186: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 186

DELETEFROM CollegeWHERE cName NOT IN(SELECT cNameFROM ApplyWHERE major = 'CS'

);

Result

SELECT * FROM College;

Page 187: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 187

SELECT *FROM ApplyWHERE cName =

'Carnegie Mellon'AND sID IN

(SELECT sIDFROM StudentWHERE GPA < 3.6

);

Result

Page 188: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 188

UPDATE ApplySET decision = ‘Y’,

major = ‘economics’WHERE cName =

'Carnegie Mellon'AND sID IN

(SELECT sIDFROM StudentWHERE GPA < 3.6

);

Result

Page 189: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 189

SELECT *FROM ApplyWHERE major = 'EE'AND sID IN

( SELECT sIDFROM StudentWHERE GPA >= ALL( SELECT GPAFROM StudentWHERE sID IN( SELECT sIDFROM ApplyWHERE major = 'EE‘

))

);

Result

Page 190: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 190

UPDATE ApplySET major = 'CSE'WHERE major = 'EE'AND sID IN

( SELECT sIDFROM StudentWHERE GPA >= ALL( SELECT GPAFROM StudentWHERE sID IN( SELECT sIDFROM ApplyWHERE major = 'EE‘

))

);

Result

Page 191: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 191

UPDATE StudentSETGPA = ( SELECT MAX(GPA)

FROM Student ),sizeHS = ( SELECT MIN(sizeHS)

FROM Student );

Result

SELECT * FROM Student;

Page 192: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 192

UPDATE ApplySET decision = 'Y';

Result

SELECT * FROM Apply;

Page 193: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL - Suan Lee 193

Page 194: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

JOIN Operators

SQL - Suan Lee 194

SELECT A1,A2,…,AnFROM R1,R2, …,RmWHERE condition

Explicit Join of tables

Page 195: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

JOIN Operators

• Inner Join On Condition

SQL - Suan Lee 195

SELECT A1,A2,…,AnFROM R1,R2, …,RmWHERE condition

Explicit Join of tables

⋈Θ

Page 196: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

JOIN Operators

• Inner Join On Condition

• Natural Join

SQL - Suan Lee 196

SELECT A1,A2,…,AnFROM R1,R2, …,RmWHERE condition

Explicit Join of tables

⋈Θ

Page 197: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

JOIN Operators

• Inner Join On Condition

• Natural Join

• Inner Join Using(attributes)

SQL - Suan Lee 197

SELECT A1,A2,…,AnFROM R1,R2, …,RmWHERE condition

Explicit Join of tables

⋈Θ

Page 198: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

JOIN Operators

• Inner Join On Condition

• Natural Join

• Inner Join Using(attributes)

• Left | Right | Full Outer Join

SQL - Suan Lee 198

SELECT A1,A2,…,AnFROM R1,R2, …,RmWHERE condition

Explicit Join of tables

⋈Θ

Page 199: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 199

SELECT DISTINCT sName, majorFROM Student, ApplyWHERE Student.sID = Apply.sID;

Result

Page 200: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 200

SELECT DISTINCT sName, majorFROM Student INNER JOIN ApplyON Student.sID = Apply.sID;

Result

Page 201: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 201

SELECT DISTINCT sName, majorFROM Student JOIN ApplyON Student.sID = Apply.sID;

Result

Page 202: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 202

SELECT sName, GPAFROM Student, ApplyWHERE Student.sID = Apply.sIDAND sizeHS < 1000AND major = 'CS'AND cName = 'Stanford';

Result

Page 203: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 203

SELECT sName, GPAFROM Student JOIN ApplyON Student.sID = Apply.sIDWHERE sizeHS < 1000AND major = 'CS'AND cName = 'Stanford';

Result

Page 204: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 204

SELECT sName, GPAFROM Student JOIN ApplyON Student.sID = Apply.sIDAND sizeHS < 1000AND major = 'CS'AND cName = 'Stanford';

Result

Page 205: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 205

SELECT sName, GPAFROM Student JOIN ApplyON Student.sID = Apply.sIDWHERE sizeHS < 1000AND major = 'CS'AND cName = 'Stanford';

Result

Page 206: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 206

SELECT Apply.sID, sName, GPA, Apply.cName, enrollment

FROM Apply, Student, CollegeWHERE Apply.sID = Student.sIDAND Apply.cName =

College.cName;

Result

Page 207: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 207

SELECT Apply.sID, sName, GPA, Apply.cName, enrollment

FROM Apply JOIN Student JOIN College

ON Apply.sID = Student.sIDAND Apply.cName =

College.cName;

Result

Page 208: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 208

SELECT Apply.sID, sName, GPA, Apply.cName, enrollment

FROM (Apply JOIN Student ONApply.sID = Student.sID)

JOIN CollegeON Apply.cName =

College.cName;

Page 209: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 209

SELECT Apply.sID, sName, GPA, Apply.cName, enrollment

FROM (Apply JOIN Student ONApply.sID = Student.sID)

JOIN CollegeON Apply.cName =

College.cName;

Result

Page 210: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 210

SELECT DISTINCT sName, majorFROM Student INNER JOIN ApplyON Student.sID = Apply.sID;

Result

Page 211: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 211

SELECT DISTINCT sName, majorFROM StudentNATURAL JOIN Apply;

Result

Page 212: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 212

SELECT *FROM StudentNATURAL JOIN Apply;

Result

Page 213: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 213

SELECT DISTINCT sIDFROM StudentNATURAL JOIN Apply;

Result

Page 214: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 214

SELECT DISTINCT sIDFROM Student, Apply;

Result

Page 215: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 215

SELECT sName, GPAFROM Student JOIN ApplyON Student.sID = Apply.sIDWHERE sizeHS < 1000AND major = 'CS'AND cName = 'Stanford';

Result

Page 216: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 216

SELECT sName, GPAFROM StudentNATURAL JOIN ApplyWHERE sizeHS < 1000AND major = 'CS'AND cName = 'Stanford';

Result

Page 217: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 217

SELECT sName, GPAFROM StudentJOIN Apply USING(sID)WHERE sizeHS < 1000AND major = 'CS'AND cName = 'Stanford';

Page 218: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 218

SELECT sName, GPAFROM StudentJOIN Apply USING(sID)WHERE sizeHS < 1000AND major = 'CS'AND cName = 'Stanford';

Result

Page 219: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 219

SELECT *FROM Student S1 NATURAL JOIN Student S2;

Result

Page 220: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 220

SELECT *FROM Student;

Result

Page 221: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 221

SELECT sName, sID, cName, majorFROM StudentINNER JOIN Apply USING(sID);

Result

Page 222: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 222

SELECT sName, sID, cName, majorFROM StudentOUTER JOIN Apply USING(sID);

Result

Page 223: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 223

SELECT sName, sID, cName, majorFROM StudentLEFT OUTER JOIN Apply USING(sID);

Result

Page 224: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 224

SELECT sName, sID, cName, majorFROM StudentLEFT JOIN Apply USING(sID);

Result

Page 225: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 225

SELECT sName, sID, cName, majorFROM StudentNATURAL LEFT OUTER JOIN Apply;

Result

Page 226: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 226

SELECT sName, Student.sID, cName, major

FROM Student, ApplyWHERE Student.sID = Apply.sIDUNIONSELECT sName, sID, NULL, NULLFROM StudentWHERE sID NOT IN( SELECT sID FROM Apply );

Result

Page 227: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 227

SELECT sName, sID, cName, majorFROM StudentNATURAL LEFT OUTER JOIN Apply;

Result

Page 228: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 228

INSERT INTO Apply VALUES (321, 'MIT', 'history', 'N');INSERT INTO Apply VALUES (321, 'MIT', 'psychology', 'Y');

Page 229: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 229

SELECT sName, sID, cName, majorFROM ApplyNATURAL LEFT OUTER JOIN Student;

Result

Page 230: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 230

SELECT sName, sID, cName, majorFROM StudentNATURAL RIGHT OUTER JOIN Apply;

Result

Page 231: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 231

SELECT sName, sID, cName, majorFROM StudentFULL OUTER JOIN Apply USING(sID);

Result

Page 232: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 232

SELECT sName, sID, cName, majorFROM StudentLEFT OUTER JOIN Apply USING(sID)UNIONSELECT sName, sID, cName, majorFROM StudentRIGHT OUTER JOIN Apply USING(sID)

Result

Page 233: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL

SQL - Suan Lee 233

SELECT sName, Student.sID, cName, major

FROM Student, ApplyWHERE Student.sID = Apply.sIDUNIONSELECT sName, sID, NULL, NULLFROM StudentWHERE sID NOT IN ( SELECT sID FROM Apply )UNIONSELECT NULL, sID, cName, majorFROM ApplyWHERE sID NOT IN( SELECT sID FROM Student );

Result

Page 234: SQL - Home | SuanLabsuanlab.com/assets/lectures/dbe/04.pdf•Interactive via GUI or prompt, or embedded in programs •Declarative, based on relational algebra SQL - Suan Lee 7. SQL

SQL - Suan Lee 234