Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by...

45
Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query Formulation with SQL

Transcript of Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by...

Page 1: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Database Design, Application Development, and Administration, 5th Edition

Copyright © 2011 by Michael V. Mannino, All rights reserved.

Chapter 4

Query Formulation with SQL

Page 2: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 2Chapter 4: Query Formulation with SQL

Outline Background Getting started Joining tables Summarizing tables Problem solving guidelines Advanced problems Data manipulation statements

Page 3: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 3Chapter 4: Query Formulation with SQL

What is SQL? Structured Query Language Language for database definition,

manipulation, and control International standard Standalone and embedded usage Intergalactic database speak

Page 4: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 4Chapter 4: Query Formulation with SQL

SQL StatementsStatement Chapter

CREATE TABLE 3, 14, 19

SELECT 4, 9, 10, 17, 18

INSERT, UPDATE 4, 10, 19

DELETE 4, 9, 10

CREATE VIEW 10, 17

CREATE TRIGGER 11

GRANT, REVOKE 14

COMMIT, ROLLBACK, SET TRANSACTION 15

CREATE TYPE 19

Page 5: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 5Chapter 4: Query Formulation with SQL

SQL Standardization

Relatively simple standard: SQL-86 and revision (SQL-89)

Modestly complex standard: SQL-92 Complex standards: SQL:1999,

SQL:2003, and SQL:2008

Page 6: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 6Chapter 4: Query Formulation with SQL

SQL Conformance No official conformance testing Vendor claims about conformance Reasonable conformance on Core SQL Large variance on conformance outside of

Core SQL Difficult to write portable SQL code outside

of Core SQL

Page 7: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 7Chapter 4: Query Formulation with SQL

SELECT Statement Overview

SELECT <list of column expressions> FROM <list of tables and join operations> WHERE <list of logical expressions for rows> GROUP BY <list of grouping columns> HAVING <list of logical expressions for groups> ORDER BY <list of sorting specifications>

Expression: combination of columns, constants, operators, and functions

Page 8: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 8Chapter 4: Query Formulation with SQL

University Database

Page 9: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 9Chapter 4: Query Formulation with SQL

First SELECT Examples

Example 1 SELECT * FROM Faculty

Example 2 (Access) SELECT * FROM Faculty WHERE FacSSN = '543210987'

Example 3 SELECT FacFirstName, FacLastName, FacSalary FROM Faculty

Example 4 SELECT FacFirstName, FacLastName, FacSalary FROM Faculty WHERE FacSalary > 65000 AND FacRank = 'PROF'

Page 10: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 10Chapter 4: Query Formulation with SQL

Using Expressions

Example 5 (Access) SELECT FacFirstName, FacLastName, FacCity, FacSalary*1.1 AS IncreasedSalary, FacHireDate FROM Faculty WHERE year(FacHireDate) > 1998

Example 5 (Oracle)SELECT FacFirstName, FacLastName, FacCity, FacSalary*1.1 AS IncreasedSalary, FacHireDate FROM Faculty WHERE to_number(to_char(FacHireDate, 'YYYY')) > 1998

Page 11: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 11Chapter 4: Query Formulation with SQL

Inexact Matching

• Match against a pattern: LIKE operator

• Use meta characters to specify patterns– Wildcard (* or %)

– Any single character (? or _)

Example 6 (Access) SELECT * FROM Offering WHERE CourseNo LIKE 'IS*'

Example 6 (Oracle) SELECT * FROM Offering WHERE CourseNo LIKE 'IS%'

Page 12: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 12Chapter 4: Query Formulation with SQL

Using Dates

• Dates are numbers

• Date constants and functions are not standard

Example 7 (Access)SELECT FacFirstName, FacLastName, FacHireDate FROM Faculty WHERE FacHireDate BETWEEN #1/1/2001# AND #12/31/2002#

Example 7 (Oracle)SELECT FacFirstName, FacLastName, FacHireDate FROM Faculty WHERE FacHireDate BETWEEN '1-Jan-2001' AND '31-Dec-2002'

Page 13: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 13Chapter 4: Query Formulation with SQL

Other Single Table Examples

Example 8: Testing for null values SELECT OfferNo, CourseNo FROM Offering WHERE FacSSN IS NULL AND OffTerm = 'SUMMER' AND OffYear = 2010

Example 9: Mixing AND and OR SELECT OfferNo, CourseNo, FacSSN FROM Offering WHERE (OffTerm = 'FALL' AND OffYear = 2009) OR (OffTerm = 'WINTER' AND OffYear = 2010)

Page 14: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 14Chapter 4: Query Formulation with SQL

Join Operator

Most databases have many tables Combine tables using the join operator Specify matching condition

Can be any comparison but usually = PK = FK most common join condition Relationship diagram useful when combining

tables

Page 15: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 15Chapter 4: Query Formulation with SQL

Join Example

FacNo FacName 111-11-1111 joe 222-22-2222 sue 333-33-3333 sara

OfferNo FacNo

1111 111-11-1111 2222 222-22-2222 3333 111-11-1111

FacNo FacName OfferNo 111-11-1111 joe 1111

222-22-2222 sue 2222

111-11-1111 joe 3333

Faculty

Offering

Natural Join of Offering and Faculty

Page 16: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 16Chapter 4: Query Formulation with SQL

Cross Product Style

• List tables in the FROM clause

• List join conditions in the WHERE clause

Example 10 (Access)SELECT OfferNo, CourseNo, FacFirstName, FacLastName FROM Offering, Faculty WHERE OffTerm = 'FALL' AND OffYear = 2009 AND FacRank = 'ASST' AND CourseNo LIKE 'IS*' AND Faculty.FacNo = Offering.FacNo

Page 17: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 17Chapter 4: Query Formulation with SQL

Join Operator Style

• Use INNER JOIN and ON keywords

• FROM clause contains join operations

Example 11 (Access)SELECT OfferNo, CourseNo, FacFirstName, FacLastName FROM Offering INNER JOIN Faculty ON Faculty.FacNo = Offering.FacNo WHERE OffTerm = 'FALL' AND OffYear = 2009 AND FacRank = 'ASST' AND CourseNo LIKE 'IS*'

Page 18: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 18Chapter 4: Query Formulation with SQL

Name Qualification

Ambiguous column reference More than one table in the query contains a column

referenced in the query Ambiguity determined by the query not the database

Use column name alone if query is not ambiguous

Qualify with table name if query is ambiguous Readability versus writability

Page 19: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 19Chapter 4: Query Formulation with SQL

Summarizing Tables Row summaries important for decision-making

tasks Row summary

Result contains statistical (aggregate) functions Conditions involve statistical functions

SQL keywords Aggregate functions in the output list GROUP BY: summary columns HAVING: summary conditions

Page 20: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 20Chapter 4: Query Formulation with SQL

GROUP BY Examples

Example 12: Grouping on a single column SELECT FacRank, AVG(FacSalary) AS AvgSalary FROM Faculty GROUP BY FacRank

Example 13: Row and group conditions SELECT StdMajor, AVG(StdGPA) AS AvgGpa FROM Student WHERE StdClass IN ('JR', 'SR') GROUP BY StdMajor HAVING AVG(StdGPA) > 3.1

Page 21: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 21Chapter 4: Query Formulation with SQL

SQL Summarization Rules

Columns in SELECT and GROUP BY SELECT: non aggregate and aggregate

columns GROUP BY: list all non aggregate columns

WHERE versus HAVING Row conditions in WHERE Group conditions in HAVING

Page 22: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 22Chapter 4: Query Formulation with SQL

Summarization and Joins

• Powerful combination

• List join conditions in the WHERE clause

Example 14: List the number of students enrolled in each 2008 offering. SELECT Offering.OfferNo, COUNT(*) AS NumStudents FROM Enrollment, Offering WHERE Offering.OfferNo = Enrollment.OfferNo AND OffYear = 2010 GROUP BY Offering.OfferNo

Page 23: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 23Chapter 4: Query Formulation with SQL

Conceptual Evaluation Process

FROM Tables:Cross Product and

Join Operations

GROUPBY?

Restrictionon WHEREConditions

Sort onGROUP BY

Columns

ComputeAggregatesand ReduceEach Group

to 1 Row

ORDERBY?

SortColumns inORDER BY

1

2

3

4

6

7

Yes

No

Yes

No

Finish

Restrictionon HAVINGConditions

5

ProjectColumns in

SELECT

Page 24: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 24Chapter 4: Query Formulation with SQL

Conceptual Evaluation Lessons

Row operations before group operations FROM and WHERE before GROUP BY and

HAVING Check row operations first

Grouping occurs only one time Use small sample tables

Page 25: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 25Chapter 4: Query Formulation with SQL

Conceptual Evaluation Problem

Example 15: List the number of offerings taught in 2010 by faculty rank and department. Exclude combinations of faculty rank and department with less than two offerings taught. SELECT FacRank, FacDept, COUNT(*) AS NumOfferings FROM Faculty, Offering WHERE Offering.FacNo = Faculty.FacNo AND OffYear = 2010 GROUP BY FacRank, FacDept HAVING COUNT(*) > 1

Page 26: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 26Chapter 4: Query Formulation with SQL

Query Formulation Process

Problem Statement

Problem Statement

Database Representation

Database Language Statement

Page 27: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 27Chapter 4: Query Formulation with SQL

Critical Questions

What tables? Columns in output Conditions to test (including join conditions)

How to combine the tables? Usually join PK to FK More complex ways to combine

Individual rows or groups of rows? Aggregate functions in output Conditions with aggregate functions

Page 28: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 28Chapter 4: Query Formulation with SQL

Efficiency Considerations

Little concern for efficiency Intelligent SQL compilers Correct and non redundant solution

No extra tables No unnecessary grouping Use HAVING for group conditions only

Chapter 8 provides additional tips for avoiding inefficient SELECT statements

Page 29: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 29Chapter 4: Query Formulation with SQL

Advanced Problems

Joining multiple tables Self joins Grouping after joining multiple tables Traditional set operators

Page 30: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 30Chapter 4: Query Formulation with SQL

Joining Three Tables

Example 16: List Leonard Vince’s teaching schedule in fall 2009. For each course, list the offering number, course number, number of units, days, location, and time.

SELECT OfferNo, Offering.CourseNo, OffDays, CrsUnits, OffLocation, OffTime FROM Faculty, Course, Offering WHERE Faculty.FacNo = Offering.FacNo AND Offering.CourseNo = Course.CourseNo AND OffYear = 2009 AND OffTerm = 'FALL' AND FacFirstName = 'Leonard' AND FacLastName = 'Vince'

Page 31: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 31Chapter 4: Query Formulation with SQL

Joining Four Tables

Example 17: List Bob Norbert’s course schedule in spring 2010. For each course, list the offering number, course number, days, location, time, and faculty name.

SELECT Offering.OfferNo, Offering.CourseNo, OffDays, OffLocation, OffTime, FacFirstName, FacLastName FROM Faculty, Offering, Enrollment, Student WHERE Offering.OfferNo = Enrollment.OfferNo AND Student.StdNo = Enrollment.StdNo AND Faculty.FacNo = Offering.FacNo AND OffYear = 2010 AND OffTerm = 'SPRING' AND StdFirstName = 'BOB' AND StdLastName = 'NORBERT'

Page 32: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 32Chapter 4: Query Formulation with SQL

Self-Join

Join a table to itself Usually involve a self-referencing

relationship Useful to find relationships among rows of

the same table Find subordinates within a preset number of

levels Find subordinates within any number of levels

requires embedded SQL

Page 33: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 33Chapter 4: Query Formulation with SQL

Self-Join Example

Example 18: List faculty members who have a higher salary than their supervisor. List the social security number, name, and salary of the faculty and supervisor.

SELECT Subr.FacNo, Subr.FacLastName, Subr.FacSalary, Supr.FacSSN, Supr.FacLastName, Supr.FacSalary FROM Faculty Subr, Faculty Supr WHERE Subr.FacSupervisor = Supr.FacNo AND Subr.FacSalary > Supr.FacSalary

Page 34: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 34Chapter 4: Query Formulation with SQL

Multiple Joins Between Tables

Example 19: List the names of faculty members and the course number for which the faculty member teaches the same course number as his or her supervisor in 2010.

SELECT FacFirstName, FacLastName, O1.CourseNo

FROM Faculty, Offering O1, Offering O2

WHERE Faculty.FacNo = O1.FacSSN

AND Faculty.FacSupervisor = O2.FacNo

AND O1.OffYear = 2010 AND O2.OffYear = 2010

AND O1.CourseNo = O2.CourseNo

Page 35: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 35Chapter 4: Query Formulation with SQL

Multiple Column Grouping

Example 20: List the course number, the offering number, and the number of students enrolled. Only include courses offered in spring 2010.

SELECT CourseNo, Enrollment.OfferNo,

Count(*) AS NumStudents

FROM Offering, Enrollment

WHERE Offering.OfferNo = Enrollment.OfferNo

AND OffYear = 2010 AND OffTerm = 'SPRING'

GROUP BY Enrollment.OfferNo, CourseNo

Page 36: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 36Chapter 4: Query Formulation with SQL

Traditional Set Operators

A UNION B

A INTERSECT B

A MINUS B

Page 37: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 37Chapter 4: Query Formulation with SQL

Union Compatibility Requirement for the traditional set

operators Strong requirement

Same number of columns Each corresponding column is compatible Positional correspondence

Apply to similar tables by removing columns first

Page 38: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 38Chapter 4: Query Formulation with SQL

SQL UNION Example

Example 21: Retrieve basic data about all university people

SELECT FacNo AS PerNo, FacFirstName AS FirstName, FacLastName AS LastName, FacCity AS City, FacState AS State FROM Faculty

UNION SELECT StdNo AS PerNo, StdFirstName AS FirstName, StdLastName AS LastName, StdCity AS City, StdState AS State FROM Student

Page 39: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 39Chapter 4: Query Formulation with SQL

Oracle INTERSECT Example

Example 22: Show teaching assistants, faculty who are students. Only show the common columns in the result.

SELECT FacNo AS PerNo, FacFirstName AS FirstName, FacLastName AS LastName, FacCity AS City, FacState AS State FROM Faculty INTERSECTSELECT StdNo AS PerNo, StdFirstName AS FirstName, StdLastName AS LastName, StdCity AS City, StdState AS State FROM Student

Page 40: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 40Chapter 4: Query Formulation with SQL

Oracle MINUS Example

Example 23: Show faculty who are not students (pure faculty). Only show the common columns in the result.

SELECT FacNo AS PerNo, FacFirstName AS FirstName, FacLastName AS LastName, FacCity AS City, FacState AS State FROM Faculty MINUSSELECT StdNo AS PerNo, StdFirstName AS FirstName, StdLastName AS LastName, StdCity AS City, StdState AS State FROM Student

Page 41: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 41Chapter 4: Query Formulation with SQL

Data Manipulation Statements

INSERT: adds one or more rows UPDATE: modifies one or more rows DELETE: removes one or more rows Use SELECT statement to INSERT multiple

rows UPDATE and DELETE can use a WHERE

clause Not as widely used as SELECT statement

Page 42: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 42Chapter 4: Query Formulation with SQL

INSERT ExampleExample 24: Insert a row into the Student table supplying values for all columns.

INSERT INTO Student

(StdNo, StdFirstName, StdLastName,

StdCity, StdState, StdZip, StdClass,

StdMajor, StdGPA)

VALUES ('999999999','JOE','STUDENT','SEATAC',

'WA','98042-1121','FR','IS', 0.0)

Page 43: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 43Chapter 4: Query Formulation with SQL

UPDATE ExampleExample 25: Change the major and class of Homer Wells.

UPDATE Student

SET StdMajor = 'ACCT',

StdClass = 'SO'

WHERE StdFirstName = 'HOMER'

AND StdLastName = 'WELLS'

Page 44: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 44Chapter 4: Query Formulation with SQL

DELETE ExampleExample 26: Delete all IS majors who are seniors.

DELETE FROM Student

WHERE StdMajor = 'IS'

AND StdClass = 'SR'

Page 45: Database Design, Application Development, and Administration, 5 th Edition Copyright © 2011 by Michael V. Mannino, All rights reserved. Chapter 4 Query.

Slide 45Chapter 4: Query Formulation with SQL

Summary

SQL is a broad language SELECT statement is complex Use problem solving guidelines Lots of practice to master query

formulation and SQL