CS340 · Chapter 7 · Annotated SlidesAdvanced SQL
Original
Overview

Advanced SQL

NULLs and three-valued logic, nested and correlated subqueries (IN, ANY/ALL, EXISTS, UNIQUE), joins (inner, natural, outer, multiway), aggregation, GROUP BY and HAVING, views, schema changes with DROP and ALTER, and running queries from Java with JDBC.

How to read this page

Every original slide is shown unchanged. Yellow marks on a slide point to a numbered note: hover or tap a mark to jump to its note, and hover a note to see its marks. Questions tagged Past exam appeared on a real paper; Prediction questions are likely angles, not confirmed. Pick an answer to each question: a wrong pick tells you why it is wrong, so you can try again.

All 64 slides
  1. 1 Advanced SQL
  2. 2 LEARNING GOALS
  3. 3 SCHEMA REMINDER: EXAMPLES
  4. 4 NULL VALUES
  5. 5 Slide 5
  6. 6 3 VALUED LOGIC
  7. 7 NULL IN SQL QUERIES
  8. 8 select presenter
  9. 9 Workshop
  10. 10 Workshop
  11. 11 Outer query SELECT *
  12. 12 NESTED QUERIES
  13. 13 COMPARISON OPERATORS FOR NESTED QUERIES
  14. 14 NESTED QUERY EXERCISES
  15. 15 Austin
  16. 16 NESTED QUERY EXERCISES
  17. 17 SQL EXPLICIT SETS
  18. 18 CORRELATED NESTED QUERIES
  19. 19 CORRELATED NESTED QUERIES
  20. 20 CORRELATED NESTED QUERIES
  21. 21 CORRELATED NESTED QUERY EVALUATION
  22. 22 CORRELATED NESTED QUERIES
  23. 23 EXISTS AND UNIQUE
  24. 24 NOT EXISTS
  25. 25 EXERCISES
  26. 26 MORE JOINS
  27. 27 Course Faculty id name Lecturer_id id First_name Last_name 1 Introduction to Database 1 1 Maram Alajlan 2 Operating systems 2 2 Roohi Jan 3 Programming 1 2 3 Khwlah Alrajhi 4 Data structure Null
  28. 28 Course Faculty id name Lecturer_id id First_name Last_name 1 Introduction to Database 1 1 Maram Alajlan 2 Operating systems 2 2 Roohi Jan 3 Programming 1 2 3 Khwlah Alrajhi 4 Data structure Null
  29. 29 Course Faculty id name Lecturer_id id First_name Last_name 1 Introduction to Database 1 1 Maram Alajlan 2 Operating systems 2 2 Roohi Jan 3 Programming 1 2 3 Khwlah Alrajhi 4 Data structure Null
  30. 30 Course Faculty id name Lecturer_id id First_name Last_name 1 Introduction to Database 1 1 Maram Alajlan 2 Operating systems 2 2 Roohi Jan 3 Programming 1 2 3 Khwlah Alrajhi 4 Data structure Null
  31. 31 Course Faculty id name Lecturer_id id First_name Last_name 1 Introduction to Database 1 1 Maram Alajlan 2 Operating systems 2 2 Roohi Jan 3 Programming 1 2 3 Khwlah Alrajhi 4 Data structure Null
  32. 32 NATURAL JOIN
  33. 33 INNER JOIN
  34. 34 OUTER JOIN
  35. 35 LIST OF IDENTICAL JOINS WITH DIFFERENT NAMES
  36. 36 OTHER TYPES OF JOIN
  37. 37 MULTIWAY JOIN
  38. 38 SUMMARY
  39. 39 JOIN EXERCISES
  40. 40 AGGREGATION
  41. 41 Student
  42. 42 Student
  43. 43 Student
  44. 44 Student
  45. 45 AGGREGATION
  46. 46 d
  47. 47 AGGREGATES IN NESTED QUERIES
  48. 48 EXERCISES
  49. 49 GROUP BY CLAUSE
  50. 50 Student
  51. 51 GROUP BY CLAUSE
  52. 52 NULLS IN GROUPS
  53. 53 old
  54. 54 SUMMARY OF SQL (NOW THAT WE KNOW MORE)
  55. 55 VIEWS
  56. 56 Employees(EmployeeID, Name, Position, salary, hiring date)
  57. 57 MATERIALIZED VS NON-MATERIALIZED VIEWS
  58. 58 VIEW FUNCTIONS
  59. 59 SCHEMA CHANGES (DROP AND ALTER)
  60. 60 SCHEMA CHANGES (DROP AND ALTER)
  61. 61 EXECUTING QUERIES IN CODE
  62. 62 EXAMPLE (JAVA)
  63. 63 PROJECT CODE
  64. 64 SUMMARY
Slide 1 / 64

Advanced SQL

Slide 1: Advanced SQL
Slide 2 / 64

LEARNING GOALS

Slide 2: LEARNING GOALS
Slide 3 / 64

SCHEMA REMINDER: EXAMPLES

Slide 3: SCHEMA REMINDER: EXAMPLES
Slide 4 / 64

NULL VALUES

Slide 4: NULL VALUES

Notes

  1. Trap WHERE x = NULL is never true; write WHERE x IS NULL.

Exam angle

PredictionQ1

Which finds employees with no supervisor?

Slide 5 / 64

Slide 5

Slide 5: Slide 5
Slide 6 / 64

3 VALUED LOGIC

Slide 6: 3 VALUED LOGIC

Notes

  1. Three-valued logic: TRUE, FALSE, UNKNOWN. Any comparison with NULL is UNKNOWN; WHERE keeps only TRUE rows.

Slide 7 / 64

NULL IN SQL QUERIES

Slide 7: NULL IN SQL QUERIES
Slide 8 / 64

select presenter

Slide 8: select presenter
Slide 9 / 64

Workshop

Slide 9: Workshop
Slide 10 / 64

Workshop

Slide 10: Workshop
Slide 11 / 64

Outer query SELECT *

Slide 11: Outer query SELECT *
Slide 12 / 64

NESTED QUERIES

Slide 12: NESTED QUERIES
Slide 13 / 64

COMPARISON OPERATORS FOR NESTED QUERIES

Slide 13: COMPARISON OPERATORS FOR NESTED QUERIES

Notes

  1. = ANY (SOME) is like IN; > ALL means greater than every value returned.

Exam angle

PredictionQ1

Salary > ALL (SELECT Salary FROM EMPLOYEE WHERE Dno = 5) finds employees who earn:

Slide 14 / 64

NESTED QUERY EXERCISES

Slide 14: NESTED QUERY EXERCISES
Slide 15 / 64

Austin

Slide 15: Austin
Slide 16 / 64

NESTED QUERY EXERCISES

Slide 16: NESTED QUERY EXERCISES
Slide 17 / 64

SQL EXPLICIT SETS

Slide 17: SQL EXPLICIT SETS
Slide 18 / 64

CORRELATED NESTED QUERIES

Slide 18: CORRELATED NESTED QUERIES

Notes

  1. Correlated subquery: refers to the outer query’s row, so it is re-evaluated for each outer row.

Slide 19 / 64

CORRELATED NESTED QUERIES

Slide 19: CORRELATED NESTED QUERIES
Slide 20 / 64

CORRELATED NESTED QUERIES

Slide 20: CORRELATED NESTED QUERIES
Slide 21 / 64

CORRELATED NESTED QUERY EVALUATION

Slide 21: CORRELATED NESTED QUERY EVALUATION
Slide 22 / 64

CORRELATED NESTED QUERIES

Slide 22: CORRELATED NESTED QUERIES
Slide 23 / 64

EXISTS AND UNIQUE

Slide 23: EXISTS AND UNIQUE

Notes

  1. EXISTS (subquery) is TRUE if it returns at least one row; NOT EXISTS if it returns none.

Exam angle

PredictionQ1

Find employees who have no dependents.

Compare with the model answer

SELECT Fname, Lname FROM EMPLOYEE E WHERE NOT EXISTS (SELECT * FROM DEPENDENT D WHERE D.Essn = E.Ssn);

Slide 24 / 64

NOT EXISTS

Slide 24: NOT EXISTS
Slide 25 / 64

EXERCISES

Slide 25: EXERCISES
Slide 26 / 64

MORE JOINS

Slide 26: MORE JOINS
Slide 27 / 64

Course Faculty id name Lecturer_id id First_name Last_name 1 Introduction to Database 1 1 Maram Alajlan 2 Operating systems 2 2 Roohi Jan 3 Programming 1 2 3 Khwlah Alrajhi 4 Data structure Null

Slide 27: Course Faculty id name Lecturer_id id First_name Last_name 1 Introduction to Database 1 1 Maram Alajlan 2 Operating systems 2 2 Roohi Jan 3 Programming 1 2 3 Khwlah Alrajhi 4 Data structure Null
Slide 28 / 64

Course Faculty id name Lecturer_id id First_name Last_name 1 Introduction to Database 1 1 Maram Alajlan 2 Operating systems 2 2 Roohi Jan 3 Programming 1 2 3 Khwlah Alrajhi 4 Data structure Null

Slide 28: Course Faculty id name Lecturer_id id First_name Last_name 1 Introduction to Database 1 1 Maram Alajlan 2 Operating systems 2 2 Roohi Jan 3 Programming 1 2 3 Khwlah Alrajhi 4 Data structure Null
Slide 29 / 64

Course Faculty id name Lecturer_id id First_name Last_name 1 Introduction to Database 1 1 Maram Alajlan 2 Operating systems 2 2 Roohi Jan 3 Programming 1 2 3 Khwlah Alrajhi 4 Data structure Null

Slide 29: Course Faculty id name Lecturer_id id First_name Last_name 1 Introduction to Database 1 1 Maram Alajlan 2 Operating systems 2 2 Roohi Jan 3 Programming 1 2 3 Khwlah Alrajhi 4 Data structure Null
Slide 30 / 64

Course Faculty id name Lecturer_id id First_name Last_name 1 Introduction to Database 1 1 Maram Alajlan 2 Operating systems 2 2 Roohi Jan 3 Programming 1 2 3 Khwlah Alrajhi 4 Data structure Null

Slide 30: Course Faculty id name Lecturer_id id First_name Last_name 1 Introduction to Database 1 1 Maram Alajlan 2 Operating systems 2 2 Roohi Jan 3 Programming 1 2 3 Khwlah Alrajhi 4 Data structure Null
Slide 31 / 64

Course Faculty id name Lecturer_id id First_name Last_name 1 Introduction to Database 1 1 Maram Alajlan 2 Operating systems 2 2 Roohi Jan 3 Programming 1 2 3 Khwlah Alrajhi 4 Data structure Null

Slide 31: Course Faculty id name Lecturer_id id First_name Last_name 1 Introduction to Database 1 1 Maram Alajlan 2 Operating systems 2 2 Roohi Jan 3 Programming 1 2 3 Khwlah Alrajhi 4 Data structure Null
Slide 32 / 64

NATURAL JOIN

Slide 32: NATURAL JOIN

Notes

  1. NATURAL JOIN joins on all same-named columns and keeps one copy of each.

Slide 33 / 64

INNER JOIN

Slide 33: INNER JOIN
Slide 34 / 64

OUTER JOIN

Slide 34: OUTER JOIN

Notes

  1. LEFT/RIGHT/FULL OUTER JOIN also keep unmatched rows from the left/right/both side, padded with NULLs.

Exam angle

PredictionQ1

List all employees, with their department name if they have one:

Slide 35 / 64

LIST OF IDENTICAL JOINS WITH DIFFERENT NAMES

Slide 35: LIST OF IDENTICAL JOINS WITH DIFFERENT NAMES
Slide 36 / 64

OTHER TYPES OF JOIN

Slide 36: OTHER TYPES OF JOIN
Slide 37 / 64

MULTIWAY JOIN

Slide 37: MULTIWAY JOIN
Slide 38 / 64

SUMMARY

Slide 38: SUMMARY
Slide 39 / 64

JOIN EXERCISES

Slide 39: JOIN EXERCISES
Slide 40 / 64

AGGREGATION

Slide 40: AGGREGATION

Notes

  1. Aggregates: COUNT, SUM, MAX, MIN, AVG. COUNT(*) counts rows; COUNT(col) ignores NULLs.

Exam angle

PredictionQ1

COUNT(Super_ssn) on a table where 2 of 8 rows have NULL Super_ssn returns:

Slide 41 / 64

Student

Slide 41: Student
Slide 42 / 64

Student

Slide 42: Student
Slide 43 / 64

Student

Slide 43: Student
Slide 44 / 64

Student

Slide 44: Student
Slide 45 / 64

AGGREGATION

Slide 45: AGGREGATION
Slide 46 / 64

d

Slide 46: d
Slide 47 / 64

AGGREGATES IN NESTED QUERIES

Slide 47: AGGREGATES IN NESTED QUERIES
Slide 48 / 64

EXERCISES

Slide 48: EXERCISES
Slide 49 / 64

GROUP BY CLAUSE

Slide 49: GROUP BY CLAUSE

Notes

  1. GROUP BY splits rows into groups; aggregates are computed per group. Every non-aggregated SELECT column must be in GROUP BY.

Slide 50 / 64

Student

Slide 50: Student
Slide 51 / 64

GROUP BY CLAUSE

Slide 51: GROUP BY CLAUSE
Slide 52 / 64

NULLS IN GROUPS

Slide 52: NULLS IN GROUPS
Slide 53 / 64

old

Slide 53: old

Notes

  1. HAVING filters GROUPS (after grouping); WHERE filters ROWS (before grouping).

  2. Memory trick Condition on an aggregate (SUM, COUNT…) → HAVING.

Exam angle

Past exam · Midterm exam

Q15: customers whose orders total over $500

PredictionQ1

Departments with more than 5 employees:

Slide 54 / 64

SUMMARY OF SQL (NOW THAT WE KNOW MORE)

Slide 54: SUMMARY OF SQL (NOW THAT WE KNOW MORE)
Slide 55 / 64

VIEWS

Slide 55: VIEWS

Notes

  1. View: a virtual table defined by a query (CREATE VIEW v AS SELECT …).

Exam angle

Slide 56 / 64

Employees(EmployeeID, Name, Position, salary, hiring date)

Slide 56: Employees(EmployeeID, Name, Position, salary, hiring date)
Slide 57 / 64

MATERIALIZED VS NON-MATERIALIZED VIEWS

Slide 57: MATERIALIZED VS NON-MATERIALIZED VIEWS
Slide 58 / 64

VIEW FUNCTIONS

Slide 58: VIEW FUNCTIONS
Slide 59 / 64

SCHEMA CHANGES (DROP AND ALTER)

Slide 59: SCHEMA CHANGES (DROP AND ALTER)

Notes

  1. DROP TABLE removes a table (CASCADE / RESTRICT). ALTER TABLE adds/drops columns or constraints.

Exam angle

PredictionQ1

Remove the foreign-key constraint fk_publisher from BOOK:

Slide 60 / 64

SCHEMA CHANGES (DROP AND ALTER)

Slide 60: SCHEMA CHANGES (DROP AND ALTER)
Slide 61 / 64

EXECUTING QUERIES IN CODE

Slide 61: EXECUTING QUERIES IN CODE

Notes

  1. From code: connect (JDBC), prepare a statement, execute, read the ResultSet.

Slide 62 / 64

EXAMPLE (JAVA)

Slide 62: EXAMPLE (JAVA)
Slide 63 / 64

PROJECT CODE

Slide 63: PROJECT CODE
Slide 64 / 64

SUMMARY

Slide 64: SUMMARY