chapter 4 sql - yu.ac.krynucc.yu.ac.kr/~hrcho/courses/db/chap4-1.pdfdatabase retrieval z basic sql...

32
1 Chapter 4 SQL Chapter 4 - 1 Table of Contents 1. Background 2. Database Retrieval 3. Database Update 4. Data Definition Language 5. Security Enforcement 6. Embedded SQL

Upload: others

Post on 29-Mar-2021

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

1

Chapter 4SQL

Chapter 4 - 1

Table of Contents

1. Background

2. Database Retrieval

3. Database Update

4. Data Definition Language

5. Security Enforcement

6. Embedded SQL

Page 2: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

2

Chapter 4 - 2

1. Backgroundz SQL

✔ A complete data access and manipulation language✔ Defined for relational DBMS✔ An industry standard for relational DBMS✔ A non-procedural language

z Non Procedural - No Statements for:✔ GO TO✔ PERFORM✔ DO LOOP✔ OPEN FILE, CLOSE FILE, END OF FILE

Chapter 4 - 3

SQL is a Set-Level Language

Select the set ofall employees in theemployee table

Select the set ofall employees in theemployee table whoare in department 401

Select the set ofall employees in theemployee table whoearn more than$35,000

Select the set ofall employees in theemployee table whoare in department401 and who earnmore than $35,000

Page 3: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

3

Chapter 4 - 4

SQL Functions (1)z Data Definition Language

✔ CREATE - Define a new table, index, view✔ DROP - Remove a table, index, view definition✔ ALTER - Table structure and protection definition

z Data Manipulation Language✔ INSERT - Place a new row into a table✔ SELECT - Perform relational query functions✔ UPDATE - Modify values in an existing row✔ DELETE - Remove a row from a table

Chapter 4 - 5

SQL Functions (2)z Data Control Language

✔ Authorization– GRANT - Give users’ privileges– REVOKE - Remove users’ privileges

✔ Transaction Management– COMMIT - Commit transaction’s effect– ROLLBACK - Abort transaction’s effect

✔ Integrity Constraint– TRIGGER - Define side effect of database update– ASSERTION - Define domain constraints

Page 4: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

4

Chapter 4 - 6

Review of Relational Concepts(1)z Table

A two dimensional representation of data composed of rows and columns

z RowOne occurrence in a relational table: a record

z ColumnThe smallest category of data in a relational model: a field

z Data ValueThe smallest unit of data in a relational model: the

intersection of a column and a row

Chapter 4 - 7

Review of Relational Concepts(2)z Domain

The real world values on which data values in a column or columns must be based

z Primary KeyColumn(s) that uniquely identify a specific row in a table

z Foreign KeyColumn(s) in one table that serve as the primary key

elsewhere in the system

Page 5: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

5

Chapter 4 - 8

A Table with Rows and Columns

EmployeeNumber

M anagerEmployeeNumber

Depart-m entNumber

JobCode

LastName

FirstName

HireDate

B irthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJam es

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

Chapter 4 - 9

Table Relationshipsz What is the department name for employee 1004?

z Who is the manager of that employee?

z What happens if manager 1003 quits?

EmployeeNumber

M anagerEmployeeNumber

Depart-m entNumber

JobCode

LastName

FirstName

HireDate

B irthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJam es

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

Page 6: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

6

Chapter 4 - 10

EmployeeNum ber

M anagerEmployeeNum ber

Depart-m entNum ber

JobCode

LastNam e

FirstNam e

HireDate

B irthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJames

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

DepartmentNumber Department Name Budget

Amount

ManagerEmployeeNumber

PK FK

501301302403402401201

Marketing salesResearch and developmentProduct planningEducationSoftware supportCustomer supportTechnical operations

800500465600226000932000308000982300293800

1017101910161005101110031025

Chapter 4 - 11

2. Database Retrieval

z Basic SQL SELECT

z SELECT Subquery

z Join

z Aggregation Functions

z Set Operations

Page 7: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

7

Chapter 4 - 12

2.1 Basic SQL SELECT

SELECT [DISTINCT] {*, column [alias], …}

FROM table

WHERE conditions(s)

ORDER BY {column [ASC | DESC], …};

Chapter 4 - 13

A Simple SQL SelectSELECT employee_number

FROM employee;

EmployeeNumber

ManagerEmployeeNumber

Depart-mentNumber

JobCode

LastName

FirstName

HireDate

BirthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJames

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

Page 8: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

8

Chapter 4 - 14

Selecting All Columns and RowsSELECT *

FROM employee;

EmployeeNumber

ManagerEmployeeNumber

Depart-mentNumber

JobCode

LastName

FirstName

HireDate

BirthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJames

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

Chapter 4 - 15

Using Where for QualificationSELECT employee_number, hire_date, last_name, first_name

FROM employee

WHERE department_number = 401;

EmployeeNumber

ManagerEmployeeNumber

Depart-mentNumber

JobCode

LastName

FirstName

HireDate

BirthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJames

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

Page 9: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

9

Chapter 4 - 16

Order BySELECT employee_number, hire_date, last_name, first_name

FROM employee

WHERE department_number = 401

ORDER BY hire_date;

SELECT employee_number, hire_date, last_name, first_name

FROM employee

WHERE department_number = 401

ORDER BY hire_date DESC;

Chapter 4 - 17

Comparison Operatorsz Operators and Their Meaning

= Equal<> Not Equal> Greater than< Less than>= Greater than or equal to<= Less than or equal to

Between … And Inclusive rangeIS (NOT) NULL Test for NullsLIKE match a character pattern

Page 10: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

10

Chapter 4 - 18

Logical Operatorsz Operators and Their Meaning

AND All specified conditions must be metOR Rows meeting either condition are selectedNOT Negates the specified condition

z Operator Precedence① All of comparison and SQL operators have equal

precedence.② NOT③ AND④ OR

Chapter 4 - 19

Logical Operator - ANDz Display the name and number of employees who earn less

than $35,000 per year and work in department 403.SELECT first_name, last_name, employee_numberFROM employeeWHERE salary_amount < 35000AND department_number = 403;

EmployeeNumber

ManagerEmployeeNumber

Depart-mentNumber

JobCode

LastName

FirstName

HireDate

BirthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJames

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

Page 11: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

11

Chapter 4 - 20

Logical Operator - ORz Display the name and number of employees who earn less

than $35,000 per year or work in department 403.SELECT first_name, last_name, employee_numberFROM employeeWHERE salary_amount < 35000OR department_number = 403;

EmployeeNumber

ManagerEmployeeNumber

Depart-mentNumber

JobCode

LastName

FirstName

HireDate

BirthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJames

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

Chapter 4 - 21

Multiple AND … ORz Select the name, department number, and job code for

employees in department 401 or 403, who have job code 412101 or 432101.

SELECT last_name, department_number, job_codeFROM employeeWHERE (department_number = 403 OR

department_number = 403)AND (job_code = 412101 OR job_code = 432101);

Suppose we leave the parentheses off?

Page 12: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

12

Chapter 4 - 22

Logical Operator - NOTz Select the name and employee number for all employees

NOT in department 301.SELECT first_name, last_name, employee_numberFROM employeeWHERE NOT department_number = 301;(WHERE department_number NOT= 301)

EmployeeNumber

ManagerEmployeeNumber

Depart-mentNumber

JobCode

LastName

FirstName

HireDate

BirthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJames

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

Chapter 4 - 23

BETWEEN … AND …(��)z Select the name and employee number for all employees

whose job codes are in the 430000 range.SELECT first_name, last_name, employee_numberFROM employeeWHERE job_code BETWEEN 430000 AND 439999;

z BETWEEN is INCLUSIVE

EmployeeNumber

ManagerEmployeeNumber

Depart-mentNumber

JobCode

LastName

FirstName

HireDate

BirthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJames

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

Page 13: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

13

Chapter 4 - 24

BETWEEN … AND …(��)z Select the last names of employees whose last name begins

with ‘R’.SELECT last_nameFROM employeeWHERE last_name BETWEEN ‘R’ AND ‘S’;

z Why wasn’t ‘Stein’ included?

EmployeeNumber

ManagerEmployeeNumber

Depart-mentNumber

JobCode

LastName

FirstName

HireDate

BirthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJames

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

Chapter 4 - 25

Partial String Operator - LIKE z �������� “Wild Character”

% = zero or more character positions_ = one character position

z ExampleLIKE ‘JO%’ = Begins with ‘JO’LIKE ‘%JO%’ = Contains ‘JO’LIKE ‘%HN’ = Ends with ‘HN’LIKE ‘__HN%’ = Contains ‘HN’ in 3rd and 4th positionLIKE ‘%H_’ = Contains ‘HN’ in next to last position

Page 14: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

14

Chapter 4 - 26

LIKE� �

z Display the full name of employees whose last name contains ‘R’.SELECT first_name, last_nameFROM employeeWHERE last_name LIKE ‘%R%’;

z Why wasn’t ‘Trader’ included?

EmployeeNumber

ManagerEmployeeNumber

Depart-mentNumber

JobCode

LastName

FirstName

HireDate

BirthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJames

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

Chapter 4 - 27

Set Operator - INz Select the name and employee number for all employees in

department 401 or 403.SELECT first_name, last_name, employee_numberFROM employeeWHERE department_number IN (401, 403);

EmployeeNumber

ManagerEmployeeNumber

Depart-mentNumber

JobCode

LastName

FirstName

HireDate

BirthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJames

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

Page 15: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

15

Chapter 4 - 28

Set Operator - NOT INz Select the name and employee number for all employees

who are not members of department 401 and 403.SELECT first_name, last_name, employee_numberFROM employeeWHERE department_number NOT IN (401, 403);

EmployeeNumber

ManagerEmployeeNumber

Depart-mentNumber

JobCode

LastName

FirstName

HireDate

BirthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJames

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

Chapter 4 - 29

Functionsz Single Row Functions

✔ Number Functions✔ Character Functions✔ Date Functions

z Group Functions✔ AVG✔ COUNT✔ MAX✔ MIN✔ SUM

Page 16: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

16

Chapter 4 - 30

Number Functions

Function Result

ROUND(col | value, n)columnj� valueN n �¢ jNr þ·

(n 6 Br � ~B)CEIL(col | value) Ceiling functionPOWER(col | value, n) Nth power functionSQRT(col | value) Square root functionSIGN(col | value) Returns –1 if negative, 0 if zero, and 1 if positiveABS(col | value) Absolute valueMOD(value1, value2) Remainder of value1 / value2LOG(col | value) Base 10 logarithmLN(col | value) Base e (natural ) logarithm

Chapter 4 - 31

Character Functions

Function Result

LOWER(col | value, n) ö.�r �.�R ¶N

INITCAP(col | value) ¡~î .�r ö.�R ¶N

LPAD(col | value, n, string) LPAD(name, 20, ‘*’) → *****************choINSTR(col | value, string) stringj �B2R �¶�� úN

LTRIM(col | value, string/c) LTRIM(name, ‘A’): ‘Account’ → ‘ccount’LENGTH(col | value) .�êN .j RúTRANSLATE(col | value,from, to)

Translate(name, ‘A’, ‘B’):‘Account’ → ‘Bccount’

REPLACE(col | value,from, to)

from, to: string (Nî� Translate6 Ïr)toö ¼: ³¦, �Ö from £�

Page 17: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

17

Chapter 4 - 32

Date Functionz SYSDATE: ����������

z ���������

✔ Date + Number → Date✔ Date - Number → Date✔ Date - Date → Number of days✔ Date + Number /24 → Date (Number: hours)

z �������

✔ Months_Between(date1, date2)✔ Add_Month(date, n)✔ Next_Day(date, char), Last_Day(date)

Chapter 4 - 33

What is NULL?z NULL is an unknown value

✔ NULL is an SQL keyword.✔ NULL is a state of non-existent or unknown data.✔ NULL indicates a column has no data.✔ NULL is neither a data type nor a characteristic.✔ NULL columns may be compressed to occupy zero space

in a row.

Page 18: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

18

Chapter 4 - 34

NULL� �� ���

z Arithmetic Operation✔ 10 + NULL → NULL✔ 10 * NULL → NULL

z Comparison Operation✔ 10 = NULL → FALSE✔ 10 > NULL → FALSE✔ 10 <> NULL → FALSE✔ NULL = NULL → FALSE✔ NULL <> NULL → FALSE

Chapter 4 - 35

Using NULL in a SELECTz List the employee numbers fro people with unknown

extensions.SELECT employee_numberFROM employee_phoneWHERE extension is NULL;

Employee Number

Area Code Phone Extension Comment

PK

FK

1006 1008 1005 1004

213 213 213 213

8278777 2514189 2964652 8278777

429

411

Page 19: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

19

Chapter 4 - 36

2.2 SELECT Subqueryz Set Operators Revisited

✔ ������������������.SELECT last_nameFROM employeeWHERE employee_number in (1017, 1005, 1003);

✔ ����������� 100,000����?

Department Number Department Name Budget

Amount

Manager Employee Number

PK FK

501 403 401

Marketing sales Education Customer support

800500 932000 982300

1017 1005 1003

Chapter 4 - 37

SELECT Subqueryz SELECT Subquery�����������

��.

SELECT last_nameFROM employeeWHERE employee_number IN

( SELECT manager_employee_numberFROM department ) ;

Page 20: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

20

Chapter 4 - 38

EmployeeNum ber

M anagerEmployeeNum ber

Depart-m entNum ber

JobCode

LastNam e

FirstNam e

HireDate

B irthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJames

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

DepartmentNumber Department Name Budget

Amount

ManagerEmployeeNumber

PK FK

501301302403402401201

Marketing salesResearch and developmentProduct planningEducationSoftware supportCustomer supportTechnical operations

800500465600226000932000308000982300293800

1017101910161005101110031025

Chapter 4 - 39

Another SELECT Subqueryz Who are the department managers with budget

amounts greater than $900,000

SELECT last_nameFROM employeeWHERE employee_number IN

( SELECT manager_employee_numberFROM department WHERE budget_amount > 900000 ) ;

Page 21: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

21

Chapter 4 - 40

SELECT Subquery with ANDz Who are the department managers whose salaries

are less than $35,000 and whose budget amounts are greater than $900,000?

SELECT last_name, first_nameFROM employeeWHERE salary_amount < 35000AND employee_number IN

( SELECT manager_employee_numberFROM department WHERE budget_amount > 900000 ) ;

Chapter 4 - 41

Subquery – Multiple Matchz Who are the department –level managers who are

assigned to the same department that they manage?

SELECT employee_number, last_name, first_nameFROM employeeWHERE (department_number, employee_number) IN

( SELECT department_number,manager_employee_number

FROM department );

Page 22: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

22

Chapter 4 - 42

Single Row Subqueryz Select employees who have the same job as ‘Ryan’.

SELECT employee_numberFROM employeeWHERE job_code =

( SELECT job_code FROM employee WHERE last_name = ‘Ryan’);

EmployeeNumber

ManagerEmployeeNumber

Depart-mentNumber

JobCode

LastName

FirstName

HireDate

BirthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJames

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

Chapter 4 - 43

ANY or ALL Operatorsz Select employees who earn more than the lowest

salary in department 401.SELECT employee_numberFROM employeeWHERE salary_amount >ANY (

SELECT DISTINCT salary_amountFROM employeeWHERE department_number = 401 );

z ANY � ALL������?

Page 23: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

23

Chapter 4 - 44

EXISTS Operatorsz ��������?

SELECT employee_number, last_nameFROM employee MWHERE EXISTS (

SELECT employee_numberFROM employee EWHERE E.manager_employee_number =

M.employee_number );

z EXISTS, NOT EXISTS

Chapter 4 - 45

2.3 Joinz What is Join?

✔ A concept in relational database theory.✔ A technique for outputting data from more than one

table in a single answer set.✔ Each row in the answer set may contain data from

columns of more than one table.✔ Tables should be joined on columns sharing common

domains – rows that have identical values in the join column are matched up.

Page 24: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

24

Chapter 4 - 46

Simple JoinSELECT employee.employee_number,

employee.last_name,

department.department_name

FROM employee, department

WHERE employee.department_number =

department.department_number;

Employee Departmentdepartment_number

employee_numberlast_name

department_name

Chapter 4 - 47

EmployeeNum ber

M anagerEmployeeNum ber

Depart-m entNum ber

JobCode

LastNam e

FirstNam e

HireDate

B irthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJames

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

DepartmentNumber Department Name Budget

Amount

ManagerEmployeeNumber

PK FK

501301302403402401201

Marketing salesResearch and developmentProduct planningEducationSoftware supportCustomer supportTechnical operations

800500465600226000932000308000982300293800

1017101910161005101110031025

Page 25: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

25

Chapter 4 - 48

Join with ANDz �������������������

�������

SELECT employee_number, last_name, first_name,department_name

FROM employee, departmentWHERE department_name like ‘%support%’AND employee.department_number =

department.department_number;

Chapter 4 - 49

Defining and Using Alias Namez 401 �����������������

�����?

SELECT e.last_name, m.last_nameFROM employee e, manager mWHERE e.department_number = 401AND e.manager_employee_number =

m.employee_number;

Page 26: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

26

Chapter 4 - 50

E m ploye e N um ber

M an age r E m ploye e N um ber

D epart-m ent N um ber

Jo b C ode

La s t N am e

F irs t N am e

H ire D a te

B irth D a te

S a la ry A m oun t

P K F K F K F K

D epartm ent N um ber D epartm ent N am e B udget

A m ount

M anager E m ployee N um ber

P K FK

Job C ode D escrip tion

H ourly B illing R ate

H ourly C ost R a te

P K

Three-way Join

Chapter 4 - 51

Three-way Join - Examplez 401 ��������������, ����, �������?

SELECT last_name, department_name, descriptionFROM employee e, department d, job jWHERE e.department_number = d.department_number AND e.job_code = j.job_codeAND e.department_number = 401;

Page 27: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

27

Chapter 4 - 52

Outer JoinSELECT last_name, D.department_number,

department_nameFROM employee E, department DWHERE E.department_number = D.department_number;

⇒ ���: Employee� �� Department���?

SELECT last_name, D.department_number,department_name

FROM employee E, department DWHERE E.department_number (+) = D.department_number;

Chapter 4 - 53

Subquery� Join� ��

z SUBQUERY z JOIN

Table 1 Table 2

Result

Table 1 Table 2

Result

Page 28: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

28

Chapter 4 - 54

2.4 Aggregate Functionsz COUNT

z SUM

z AVG

z MAX

z MIN

Chapter 4 - 55

ExampleSELECT COUNT(salary_amount),

SUM(salary_amount), AVG(salary_amount),

MAX(salary_amount), MIN(salary_amount)

FROM employee;

EmployeeNumber

ManagerEmployeeNumber

Depart-mentNumber

JobCode

LastName

FirstName

HireDate

BirthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJames

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

Page 29: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

29

Chapter 4 - 56

GROUP BYz Create a summary showing total salary for each

department.SELECT department_number, SUM(salary_amount)FROM employeeGroup By department_number;

EmployeeNumber

ManagerEmployeeNumber

Depart-mentNumber

JobCode

LastName

FirstName

HireDate

BirthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJames

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

Chapter 4 - 57

GROUP BY and WHEREz What are the total salaries for department 401 and

403?SELECT department_number, SUM(salary_amount)FROM employeeWHERE department_number IN (401, 403)Group By department_number;

EmployeeNumber

ManagerEmployeeNumber

Depart-mentNumber

JobCode

LastName

FirstName

HireDate

BirthDate

SalaryAmount

PK FK FK FK

100610081005100410071003

100310081007100310051008

301301403401403401

312101312102431100412101432101411100

SteinKanieskiRyanJohnsonVillegasTrader

JohnCarolLorettaDarleneArnoldJames

761015770201761015761015770102760731

531015580517550910460423370131470619

294502925031200363004970037850

Page 30: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

30

Chapter 4 - 58

GROUP BY on Multiple Fieldsz What are the total salaries for department 401 and

403, by job code?

SELECT department_number, job_code,SUM(salary_amount)

FROM employeeWHERE department_number IN (401, 403)GROUP BY department_number, job_codeORDER BY department_number, job_code;

Chapter 4 - 59

GROUP BY and Havingz Which departments have their average salary at

less than $36,000?

SELECT department_number,AVG(salary_amount)

FROM employeeGROUP BY department_numberHAVING AVG(salary_amount) < 36000;

Page 31: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

31

Chapter 4 - 60

Aggregate Function & Subqueryz 301 �����������������

�������?

SELECT department_number, AVG(salary_amount)FROM employeeGROUP BY department_numberHAVING AVG(salary_amount) > ( SELECT AVG(salary_amount)

FROM employeeWHERE department_number = 301 );

Chapter 4 - 61

Aggregate Function & Subqueryz ��������������?

SELECT department_number, employee_numberFROM employee fWHERE salary_amount = ( SELECT MAX(salary_amount)

FROM employee sWHERE s.department_number =

f.department_number );

Page 32: Chapter 4 SQL - yu.ac.krynucc.yu.ac.kr/~hrcho/Courses/DB/Chap4-1.pdfDatabase Retrieval z Basic SQL SELECT z SELECT Subquery z Join z Aggregation Functions z Set Operations 7 Chapter

32

Chapter 4 - 62

Aggregate Function & Subqueryz ����������?

SELECT job_code, AVG(salary_amount)FROM employeeGROUP BY job_codeHAVING AVG(salary_amount) = ( SELECT MAX(AVG(salary_amount))

FROM employeeGROUP BY job_code );

Chapter 4 - 63

2.5 Set Operationsz Manager���� 401 ������?

SELECT employee_number, last_nameFROM employeeWHERE department_number = 401MINUSSELECT employee_number, last_nameFROM employee e, department dWHERE d.department_number = 401AND e.employee_number =

d.manager_employee_number

z UNION, MINUS, INTERSECT