fundamentals, design, and implementation, 9/e cpe 481 database processing chapter 6 structured query...

38
Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor: Suthep Madarasmi, Ph.D. ดด. ดดดดด ดดดดดดดดด Email: [email protected] Telephone: 02-470-9080 Messages: 02-470-9085 Fax: 02-872-5050 David M. Kroenke

Upload: samson-byrd

Post on 31-Dec-2015

224 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Fundamentals, Design, and Implementation, 9/e

CPE 481 Database ProcessingChapter 6 Structured Query Language (SQL)

Instructor: Suthep Madarasmi, Ph.D.

ดร . สุ�เทพ มาดาร�ศม Email: [email protected]

Telephone: 02- -4709080

Messages: 02- -4709085

Fax: 02- -8725050

David M. Kroenke

Page 2: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/2 Database Processing by Suthep Madarasmi

Introduction

Structured Query Language (SQL) is a data sublanguage that has constructs for defining and processing a database

It can be – Used stand-alone within a DBMS command– Embedded in triggers and stored procedures– Used in scripting or programming languages

Page 3: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/3 Database Processing by Suthep Madarasmi

SQL-92

SQL was developed by IBM in late 1970s SQL-92 was endorsed as a national standard by

ANSI in 1992 SQL3 incorporates some object-oriented concepts

but has not gained acceptance in industry Data Definition Language (DDL) is used to define

database structures Data Manipulation Language (DML) is used to

query and update data SQL statement is terminated with a semicolon

Page 4: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/4 Database Processing by Suthep Madarasmi

Sample Database

Page 5: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/5 Database Processing by Suthep Madarasmi

Sample Data

Page 6: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/6 Database Processing by Suthep Madarasmi

Sample Data

Page 7: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/7 Database Processing by Suthep Madarasmi

CREATE TABLE

CREATE TABLE statement is used for creating relations Each column is described with three parts: column name,

data type, and optional constraints Syntax CREATE TABLE [database.[owner].]table_name

(   {col_name column_properties [constraint [constraint

[...constraint]]]   | [[,] constraint]}        [[,] {next_col_name | next_constraint}...])

ExampleCREATE TABLE PROJECT (ProjectID Integer Primary Key,Name Char(25) Unique Not Null,Department VarChar(100) Null,MaxHours Numeric(6,1) Default 100);

Page 8: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/8 Database Processing by Suthep Madarasmi

Data Types

Standard data types– Char for fixed-length character– VarChar for variable-length character

• It requires additional processing than Char data types

– Integer for whole number– Numeric

There are many more data types in the SQL-92 standard

Page 9: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/9 Database Processing by Suthep Madarasmi

Constraints

Constraints can be defined within the CREATE TABLE statement, or they can be added to the table after it is created using the ALTER table statement

Five types of constraints:– PRIMARY KEY may not have null values– UNIQUE may have null values– NULL/NOT NULL– FOREIGN KEY– CHECK

Page 10: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/10 Database Processing by Suthep Madarasmi

ALTER Statement

ALTER statement changes table structure, properties, or constraints after it has been created

ExampleALTER TABLE ASSIGNMENT

ADD CONSTRAINT EmployeeFK

FOREIGN KEY (EmployeeNum) REFERENCES EMPLOYEE (EmployeeNumber)

ON UPDATE CASCADE

ON DELETE NO ACTION;

Page 11: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/11 Database Processing by Suthep Madarasmi

DROP Statements

DROP TABLE statement removes tables and their data from the database

A table cannot be dropped if it contains foreign key values needed by other tables– Use ALTER TABLE DROP CONSTRAINT to

remove integrity constraints in the other table first

Example: – DROP TABLE CUSTOMER;– ALTER TABLE ASSIGNMENT DROP

CONSTRAINT ProjectFK;

Page 12: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/12 Database Processing by Suthep Madarasmi

SELECT Statement

SELECT can be used to obtain values of specific columns, specific rows, or both

Basic format: SELECT (column names or *)

FROM (table name(s))

[WHERE (conditions)];

Page 13: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/13 Database Processing by Suthep Madarasmi

WHERE Clause Conditions

Require quotes around values for Char and VarChar columns, but no quotes for Integer and Numeric columns

AND may be used for compound conditions IN and NOT IN indicate ‘match any’ and ‘match all’

sets of values, respectively Wildcards _ and % can be used with LIKE to

specify a single or multiple unknown characters, respectively

IS NULL can be used to test for null values

Page 14: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/14 Database Processing by Suthep Madarasmi

Example: SELECT Statement

SELECT Name, Department, MaxHours

FROM PROJECT;

Insert Figure 6-2 (PROJECT Table only)

Page 15: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/15 Database Processing by Suthep Madarasmi

Example: SELECT DISTINCT

SELECT DISTINCT Department

FROM PROJECT;

Insert Figure 6-2 (PROJECT Table only)

Page 16: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/16 Database Processing by Suthep Madarasmi

Example: SELECT Statement

SELECT *

FROM PROJECT

WHERE Department =’Finance’ AND MaxHours > 100;

Insert Figure 6-2 (PROJECT Table only)

Page 17: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/17 Database Processing by Suthep Madarasmi

Example: IN/NOT IN

SELECT Name, Phone, Department

FROM EMPLOYEE

WHERE Department IN (‘Accounting’, ‘Finance’, ‘Marketing’);

Insert Figure 6-2 (EMPLOYEE Table only)

SELECT Name, Phone, Department

FROM EMPLOYEE

WHERE Department NOT IN (‘Accounting’, ‘Finance’, ‘Marketing’);

Insert Figure 6-2 (EMPLOYEE Table only)

Page 18: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/18 Database Processing by Suthep Madarasmi

Example: BETWEEN

SELECT Name, Department

FROM EMPLOYEE

WHERE EmployeeNumber BETWEEN 200 AND 500;

– Or WHERE EmployeeNumber >= 200 AND EmployeeNumber <= 500;

Insert Figure 6-2 (EMPLOYEE table only)

Page 19: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/19 Database Processing by Suthep Madarasmi

Example: LIKE

SELECT *FROM EMPLOYEEWHERE Phone LIKE

‘285-_ _ _ _’;

SELECT *FROM EMPLOYEEWHERE Phone LIKE

‘285%’;

Insert Figure 6-2 (EMPLOYEE Table only)

Page 20: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/20 Database Processing by Suthep Madarasmi

Example: IS NULL

SELECT Name, Department

FROM EMPLOYEE

WHERE Phone IS NULL; Insert Figure 6-2 (EMPLOYEE Table only)

Page 21: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/21 Database Processing by Suthep Madarasmi

Sorting the Results

ORDER BY phrase can be used to sort rows from SELECT statement

SELECT Name, Department

FROM EMPLOYEE

ORDER BY Department;

Two or more columns may be used for sorting purposes

SELECT Name, Department

FROM EMPLOYEE

ORDER BY Department DESC, Name ASC;

Page 22: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/22 Database Processing by Suthep Madarasmi

Built-in Functions

Five built-in functions for SELECT statement: – COUNT counts the number of rows in the result– SUM totals the values in a numeric column– AVG calculates an average value– MAX retrieves a maximum value– MIN retrieves a minimum value

Result is a single number (relation with a single row and a single column)

Column names cannot be mixed with built-in functions

Built-in functions cannot be used in WHERE clauses

Page 23: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/23 Database Processing by Suthep Madarasmi

Example: Built-in Functions

SELECT COUNT (DISTINCT Department)

FROM PROJECT;

SELECT MIN(MaxHours), MAX(MaxHours), SUM(MaxHours)

FROM PROJECT

WHERE ProjectID < 1500;

Page 24: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/24 Database Processing by Suthep Madarasmi

Built-in Functions and Grouping

GROUP BY allows a column and a built-in function to be used together

GROUP BY sorts the table by the named column and applies the built-in function to groups of rows having the same value of the named column

WHERE condition must be applied before GROUP BY phrase

ExampleSELECT Department, Count(*)FROM EMPLOYEEWHERE EmployeeNumber < 600GROUP BY DepartmentHAVING COUNT(*) > 1;

Page 25: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/25 Database Processing by Suthep Madarasmi

Querying Multiple Tables

Multiple tables can be queried by using either subqueries or joins

If all of the result data comes from a single table, subqueries can be used

If results come from two or more tables, joins must be used

Joins cannot substitute for correlated subqueries nor for queries that involve EXISTS and NOT EXISTS

Page 26: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/26 Database Processing by Suthep Madarasmi

Subqueries

Subqueries can be extended to include many levels

ExampleSELECT DISTINCT NameFROM EMPLOYEEWHERE EmployeeNumber IN

(SELECT EmployeeNumFROM ASSIGNMENTWHERE HoursWorked > 40AND ProjectID IN

(SELECT ProjectIDFROM PROJECTWHERE Department = ‘Accounting’));

Page 27: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/27 Database Processing by Suthep Madarasmi

Joins

The basic idea of a join is to form a new relation by connecting the contents of two or more other relations

This joined table can be processed like any other table

ExampleSELECT PROJECT.Name, HoursWorked,

EMPLOYEE.NameFROM PROJECT, ASSIGNMENT, EMPLOYEEWHERE PROJECT.ProjectID = ASSIGNMENT.ProjectIDAND EMPLOYEE.EmployeeNumber =

ASSIGNMENT.EmployeeNum;

Page 28: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/28 Database Processing by Suthep Madarasmi

Alternate Join Syntax

SQL-92’s alternative join syntax substitutes the words JOIN and ON for WHERE

Using aliases for table names improves the readability of a join

Example: alias E is assigned to the EMPLOYEE table

SELECT P.Name, HoursWorked, E.NameFROM PROJECT P JOIN ASSIGNMENT AON P.ProjectID = A.ProjectIDJOIN EMPLOYEE EON A.EmployeeNum = E.EmployeeNumber;

Page 29: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/29 Database Processing by Suthep Madarasmi

Outer Joins

Outer joins can be used to ensure that all rows from a table appear in the result

Left (right) outer join: every row on the table on the left (right) hand side is included in the results even though the row may not have a match

Outer joins can be nested

Page 30: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/30 Database Processing by Suthep Madarasmi

Example: Outer Join

Left outer joinSELECT Name, HoursWorkedFROM PROJECT LEFT JOIN ASSIGNMENTON PROJECT.ProjectID = ASSIGNMENT.ProjectID;

Nested outer joinSELECT PROJECT.Name, HoursWorked,

EMPLOYEE.NameFROM ((PROJECT LEFT JOIN ASSIGNMENTON PROJECT.ProjectID = ASSIGNMENT.ProjectID)LEFT JOIN EMPLOYEEON EMPLOYEE.EmployeeNumber =Assignment.EmployeeNum);

Page 31: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/31 Database Processing by Suthep Madarasmi

INSERT INTO Statement

The order of the column names must match the order of the values

Values for all NOT NULL columns must be provided No value needs to be provided for a surrogate

primary key It is possible to use a select statement to provide the

values for bulk inserts from a second table Examples:

– INSERT INTO PROJECT VALUES (1600, ‘Q4 Tax Prep’, ‘Accounting’, 100);

– INSERT INTO PROJECT (Name, ProjectID) VALUES (‘Q1+ Tax Prep’, 1700);

Page 32: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/32 Database Processing by Suthep Madarasmi

UPDATE Statement

UPDATE statement is used to modify values of existing data

Example:UPDATE EMPLOYEESET Phone = ‘287-1435’WHERE Name = ‘James Nestor’;

UPDATE can also be used to modify more than one column value at a time

UPDATE EMPLOYEESET Phone = ‘285-0091’, Department = ‘Production’WHERE EmployeeNumber = 200;

Page 33: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/33 Database Processing by Suthep Madarasmi

DELETE FROM Statement

Delete statement eliminates rows from a table

ExampleDELETE FROM PROJECT

WHERE Department = ‘Accounting’;

ON DELETE CASCADE removes any related referential integrity constraint of a deleted row

Page 34: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/34 Database Processing by Suthep Madarasmi

EXISTS in MS ACCESS - Examples

Lists the name, title, and salary of every sales representative whose salary is higher than tha

t of all managers and directors.

SELECT [Last Name], [First Name], Title, Salary FROM Employees

WHERE Title LIKE "Sales Rep*" AND Salary > ALL (SELECT Salary FROM Employees

* *WHERE (Title LIKE " Manager ") OR (Title LIK E "*Director*"));

Page 35: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/35 Database Processing by Suthep Madarasmi

Examples in Access

Lists the name and unit price of every product whose unit price is the same a

s that of Aniseed Syrup.

SELECT DISTINCTROW [Product Name], [ Unit Price] FROM Products WHERE [Unit Price] =

(SELECT [Unit Price] FROM [Products] WHERE [Product Name] = "Aniseed Syru

p");

Page 36: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/36 Database Processing by Suthep Madarasmi

Examples in Access

Lists the company and contact of every customer who placed an order in the se

cond quarter of 1 9 9 3 .

SELECTDISTINCTROW[ContactName], [CompanyName], [ContactTitle], Phone FROM Customers WHERE [Customer ID] I

N (SELECTDISTINCTROW[CustomerI D]

FROM Orders WHERE [Order Date] BETWE EN #04/1/93# AND #07/1/93#);

Page 37: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/37 Database Processing by Suthep Madarasmi

Examples in Access

Lists employees whose salary is higher than th e average salary for all employees.

SELECT [Last Name], [First Name], Title, Salary FROM Employees T1

WHERE Salary >= (SELECT AVG(Salary)

FROM Employees WHERE Employees.Title = T1 .Title) ORDER BY Title;

Page 38: Fundamentals, Design, and Implementation, 9/e CPE 481 Database Processing Chapter 6 Structured Query Language (SQL) Instructor:Suthep Madarasmi, Ph.D

Lecture 3/38 Database Processing by Suthep Madarasmi

Examples in Access Selects the name of every employee who h

as booked at least one order. This could al so be done with an INNER JOIN.

SELECT [First Name], [Last Name] FROM Employees AS E

WHERE EXISTS (SELECT *

FROM Orders AS O WHERE O.[Employee ID] = E.[Employee ID]);