CE1319XSTUD

February 27, 2018 | Author: rashokkumar82 | Category: Ibm Db2, Sql, V Mware, Operating System, Data Management
Share Embed Donate


Short Description

IBM DB2...

Description

Business Intelligence

Data Centre

Cloud

Mobility

Enterprise Computing Solutions

Student Manual

Dirección General de Formación CONSEJERÍA DE EMPLEO, TURISMO Y CULTURA

Comunidad de Madrid

UNIÓN EUROPEA FONDO SOCIAL EUROPEO El Fondo Social Europeo invierte en tu futuro

EDUCATION S

E

R

V

I

C

E

S

V6.0

cover

u oy si ec vo to fo C rm .F a .T ció .I. n C .

Front cover

DB2 SQL Workshop for Experienced Users (Course code CE131)

Student Exercises

pr

Ex

cl

ERC 9.4

IBM certified course material

Student Exercises

Trademarks The reader should recognize that the following terms, which appear in the content of this training document, are official trademarks of IBM or other companies: IBM® and the IBM logo are registered trademarks of International Business Machines Corporation.

u oy si ec vo to fo C rm .F a .T ció .I. n C .

The following are trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide: AIX® DB2 Connect™ iSeries® OS/390® WebSphere® 400®

AS/400® DB2® MVS™ OS/400® z/OS®

Command Center® IMS™ Notes® QMF™ zSeries®

Intel and Intel Core are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both.

Microsoft and Windows are trademarks of Microsoft Corporation in the United States, other countries, or both. UNIX is a registered trademark of The Open Group in the United States and other countries.

Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates.

VMware and the VMware "boxes" logo and design, Virtual SMP and VMotion are registered trademarks or trademarks (the "Marks") of VMware, Inc. in the United States and/or other jurisdictions.

Ex

cl

Other product and service names might be trademarks of IBM or other companies.

pr

April 2013 edition

The information contained in this document has not been submitted to any formal IBM test and is distributed on an “as is” basis without any warranty either express or implied. The use of this information or the implementation of any of these techniques is a customer responsibility and depends on the customer’s ability to evaluate and integrate them into the customer’s operational environment. While each item may have been reviewed by IBM for accuracy in a specific situation, there is no guarantee that the same or similar results will result elsewhere. Customers attempting to adapt these techniques to their own environments do so at their own risk.

© Copyright International Business Machines Corporation 2007, 2013. This document may not be reproduced in whole or in part without the prior written permission of IBM. Note to U.S. Government Users — Documentation related to restricted rights — Use, duplication or disclosure is subject to restrictions set forth in GSA ADP Schedule Contract with IBM Corp.

V6.0 Student Exercises

Contents Trademarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v

u oy si ec vo to fo C rm .F a .T ció .I. n C .

Exercises description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii General Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii General Information for z/OS or OS/390 Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix General Information for DB2 for Linux, UNIX, and Windows Users . . . . . . . . . . . . . . . . . xi Table descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv Table content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi Content of VIEWS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiv Exercise 1. SQL Basics Review, CUBE, and ROLLUP . . . . . . . . . . . . . . . . . . . . . . . 1-1 Exercise 2. Create Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1

Exercise 3. Joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1 Exercise 4. CASE and CAST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1

Exercise 5. Subqueries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1 Exercise 6. Scalar Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1

Exercise 7. Table Expressions and Recursive SQL . . . . . . . . . . . . . . . . . . . . . . . . . 7-1 Exercise 8. UDT and UDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-1

cl

Exercise 9. Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-1

pr

Ex

TOC

© Copyright IBM Corp. 2007, 2013 Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

Contents

iii

pr

Ex

cl

u oy si ec vo to fo C rm .F a .T ció .I. n C .

Student Exercises

iv

DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V6.0 Student Exercises

Trademarks The reader should recognize that the following terms, which appear in the content of this training document, are official trademarks of IBM or other companies:

u oy si ec vo to fo C rm .F a .T ció .I. n C .

IBM® and the IBM logo are registered trademarks of International Business Machines Corporation.

The following are trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide: AIX® DB2 Connect™ iSeries® OS/390® WebSphere® 400®

AS/400® DB2® MVS™ OS/400® z/OS®

Command Center® IMS™ Notes® QMF™ zSeries®

Intel and Intel Core are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both.

Microsoft and Windows are trademarks of Microsoft Corporation in the United States, other countries, or both. UNIX is a registered trademark of The Open Group in the United States and other countries.

Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates.

cl

VMware and the VMware "boxes" logo and design, Virtual SMP and VMotion are registered trademarks or trademarks (the "Marks") of VMware, Inc. in the United States and/or other jurisdictions. Other product and service names might be trademarks of IBM or other companies.

pr

Ex

TMK

© Copyright IBM Corp. 2007, 2013 Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

Trademarks

v

pr

Ex

cl

u oy si ec vo to fo C rm .F a .T ció .I. n C .

Student Exercises

vi

DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

Exercises description Be sure to read the General Information section and the description of the lab tables before attempting the exercises.

u oy si ec vo to fo C rm .F a .T ció .I. n C .

Feel free to consult with the instructor if you need a hint or encounter difficulties while you are formulating the query.

Expected Results — Repeats the problem and shows the results that you should get if you run the query. In most cases, the complete result is shown. In cases where the result set is too large, an ellipsis (...) is shown to indicate that there are additional rows in the result. In these cases, the correct number of rows for the result set is shown so that you can be sure that you got the right result.

Solutions — Contains the correct query that solves the problem. Remember that sometimes there can be several correct answers. Your solution may be different than the one shown in the document. If you have any doubts about whether your solution is correct or if it is as good as the given solution from a performance point of view, please consult your instructor.

General Information

This lab guide provides the information necessary to complete the required and optional labs for the IBM DB2 SQL Workshop for Experienced Users course.

cl

In countries that provide several query tools for each environment, this lab guide will be supplemented by additional documentation that describes the basics of each query tool.

You can do the exercises for this course in z/OS or OS/390 or in a Workstation environment. Depending on where you are taking the course, the Workstation platform available for your use may be on any of Linux, UNIX, or Windows. Be sure to read the instructions for the operating system you chose before attempting the exercises. All of the workstation platforms use the same instructions.

You will be able to use any of the query tools that we have installed on each operating system. Please note that the emphasis of this course is on teaching you SQL, not how to use the tools. Therefore, you will only see the basics of using the tool in this course. If you want more information about these tools, ask the instructor for recommendations on the best manuals to read or courses to take for this purpose.

pr

Ex

pref

© Copyright IBM Corp. 2007, 2013

Exercises description

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

vii

Student Exercises

You do not need to save your solutions or show them to the instructor but feel free to do so if you like.

pr

Ex

cl

u oy si ec vo to fo C rm .F a .T ció .I. n C .

Full solutions are provided for every question but if you wish to save your own solutions to diskette or print them, ask your instructor when you begin the first exercise. In some cases, diskettes or printers may not be available.

viii

DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

General Information for z/OS or OS/390 Users There are many different query tools that work with DB2 for z/OS, including DB2 Connect, SPUFI, QMF, and others. You can use any tool installed to do the labs. The following query tools are available for this course:

u oy si ec vo to fo C rm .F a .T ció .I. n C .

• __________________________ • __________________________ • __________________________

The instructor will tell you how to log on to the z/OS system and what specific user ID and password to use. In addition, you will probably be given a team number: this number will be used occasionally during the exercises so that you can distinguish your files or objects from those of other students. Your logon ID is __________________________________________. Your password is __________________________________________. Your team number is __________________________________________.

The instructor will give you brief verbal or written instructions on how to use the tool you choose so that you will have enough information to get started. If you want to know more about a tool, for example how to save a query, be sure to ask the instructor. You will need a partitioned dataset in order to complete the exercises. This dataset already exists.

cl

The dataset name is __________________________________________.

Each of the tables described in the Table Relationships section of this document already exists and has the same qualifier. The qualifier is _______________.

When you refer to these tables in your SQL, you will need to prefix the table names with the qualifier identified above. For example, if you want to display the complete contents of the EMPLOYEE table, enter the following, substituting the qualifier you were given:

pr

Ex

pref

SELECT * FROM qualifier.EMPLOYEE

Note: Using member CRTAB to create table TESTEMP, if the table has not been provided in advance. You may need to add an IN clause to your CREATE TABLE statements that identifies where the table is being created.

© Copyright IBM Corp. 2007, 2013

Exercises description

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

ix

Student Exercises

The IN clause you need to add is: IN _________________________________. When you are using the TESTEMP table, you will have to omit the qualifier or use your logon ID as qualifier. For example, if you are trying to read the TESTEMP table, you will have to write:

u oy si ec vo to fo C rm .F a .T ció .I. n C .

SELECT * FROM TESTEMP or SELECT * FROM logon ID.TESTEMP

pr

Ex

cl

You do not have to save your SQL but if you want to save it, you may put it in your partitioned dataset.

x

DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

General Information for DB2 for Linux, UNIX, and Windows Users

u oy si ec vo to fo C rm .F a .T ció .I. n C .

There are many different query tools that work with DB2 on the workstation platforms, including Command Editor, CLP, and others. You can use any tool installed to do the labs. The following query tools are available for this course: • __________________________ • __________________________ • __________________________

Students doing the exercises on workstation platforms do not need a team number. Each workstation student has a complete standalone environment and will not share any files or tables with other students. Each student will have to sign on with the following information:

USERID is ______________________ PASSWORD is ____________________

The instructor will give you brief verbal or written instructions on how to use the tool you choose so that you have enough information to get started. If you want to know more about a tool, for example how to save a query, be sure to ask the instructor. A database named sample has already been created for you.

• To connect in a single-user environment, enter the following at a command prompt: db2 connect to sample

• To connect in a client/server environment, enter the following at a command prompt, substituting the userid and password you were assigned:

cl

db2 connect to sample user userid using password

Each of the tables described in the Table Relationships section of this document already exists and has the same qualifier. The qualifier is _________________.

When you refer to these tables in your SQL, you will need to prefix the table names with the qualifier identified above. For example, if you want to display the complete contents of the EMPLOYEE table, enter the following, substituting the qualifier you were given:

pr

Ex

pref

SELECT * FROM qualifier.EMPLOYEE

© Copyright IBM Corp. 2007, 2013

Exercises description

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

xi

Student Exercises

Note: Using member CRTAB to create table TESTEMP, if the table has not been provided in advance. Using the following command to create table TESTEMP: DB2 -tvf CRTAB

u oy si ec vo to fo C rm .F a .T ció .I. n C .

In cases where you are using your TESTEMP table you need to omit the qualifier or use your logon ID as qualifier. For example, if you are trying to read the TESTEMP table, you will need to write: SELECT * FROM TESTEMP or SELECT * FROM logon ID.TESTEMP

pr

Ex

cl

If you choose to do the labs in CLP, you may create your SQL in the \CE13 directory.

xii

DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

pref

Table relationships DEPARTMENT Table MGRNO

u oy si ec vo to fo C rm .F a .T ció .I. n C .

DEPTNO

EMPLOYEE Table EMPNO

WORKDEPT

PROJECT Table PROJNO

DEPTNO

RESPEMP

EMP_ACT Table EMPNO

PROJNO

© Copyright IBM Corporation 2007, 2012

Figure -1. Table relationships

CE1319.4

Notes:

pr

Ex

cl

This diagram illustrates the relationships between the tables used in the exercises for this course. The lines show the connection between the tables.

© Copyright IBM Corp. 2007, 2013

Exercises description

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

xiii

Student Exercises

Table descriptions The tables are described in hierarchical order, as shown in the Table Relationships on the previous page.

u oy si ec vo to fo C rm .F a .T ció .I. n C .

DEPARTMENT There is one row in the DEPARTMENT table for each department in the company. Column Name

Meaning

Data Type

NULLS allowed

DEPTNO

Department Number

CHAR(3)

N

DEPTNAME

Department Name

VARCHAR(36)

N

MGRNO

Employee Number of the Responsible Manager

CHAR(6)

Y

ADMRDEPT

Department Number of the Department to which the Department reports

CHAR(3)

N

LOCATION

Location Number

CHAR(5)

Y

EMPLOYEE

There is one row in the EMPLOYEE table for each of the employees in the company. Meaning

Data Type

NULLS allowed

EMPNO

Employee Number

CHAR(6)

N

FIRSTNME

First Name

VARCHAR(20)

N

MIDINIT

Middle Initial

CHAR(1)

N

LASTNAME

Last Name

VARCHAR(15)

N

WORKDEPT

Department in which the Employee Works

CHAR(3)

Y

PHONENO

Phone Number

CHAR(4)

Y

HIREDATE

Date of Hire

DATE

Y

Job

CHAR(8)

Y

EDLEVEL

Number of Years of Formal Education

SMALLINT

Y

SEX

Sex (M male, F female)

CHAR(1)

Y

BIRTHDATE

Date of Birth

DATE

Y

SALARY

Yearly Salary

DECIMAL(9, 2)

Y

BONUS

Yearly Bonus

DECIMAL(9, 2)

Y

DECIMAL(9, 2)

Y

cl

Column Name

pr

Ex

JOB

COMM

xiv

Yearly Commission

DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

PROJECT There is one row in the PROJECT table for each project. Meaning

Data Type

NULLS allowed

PROJNO

Project Number

CHAR(6)

N

PROJNAME

Project Name

VARCHAR(24)

N

u oy si ec vo to fo C rm .F a .T ció .I. n C .

Column Name

DEPTNO

Responsible Department

CHAR(3)

N

RESPEMP

Employee Number of the Responsible Employee

CHAR(6)

N

PRSTAFF

Estimated Mean Staffing

DECIMAL(5, 2)

Y

PRSTDATE

Estimated Start Date

DATE

Y

PRENDATE

Estimated End Date

DATE

Y

MAJPROJ

Major Project for a Subproject

CHAR(6)

Y

EMP_ACT

There are many rows in the EMP_ACT table for any employee or any project. Meaning

Data Type

NULLS allowed

EMPNO

Employee Number of Employee Performing the Activity

CHAR(6)

N

PROJNO

Project Number

CHAR(6)

N

ACTNO

Activity Number

SMALLINT

N

EMPTIME

Proportion of Employee's Time Spent on Project

DECIMAL(5, 2)

Y

EMSTDATE

Date Activity Starts

DATE

Y

EMENDATE

Date Activity Ends

DATE

Y

cl

Column Name

pr

Ex

pref

© Copyright IBM Corp. 2007, 2013

Exercises description

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

xv

Student Exercises

Table content DEPARTMENT Table DEPTNAME -----------------------------SPIFFY COMPUTER SERVICE DIV. PLANNING INFORMATION CENTER DEVELOPMENT CENTER MANUFACTURING SYSTEMS ADMINISTRATION SYSTEMS SUPPORT SERVICES OPERATIONS SOFTWARE SUPPORT

MGRNO -----000010 000020 000030 000060 000070 000050 000090 000100

ADMRDEPT LOCATION -------- -------A00 A00 A00 A00 D01 D01 A00 E01 E01

pr

Ex

cl

u oy si ec vo to fo C rm .F a .T ció .I. n C .

DEPTNO -----A00 B01 C01 D01 D11 D21 E01 E11 E21

xvi

DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

EMPLOYEE Table FIRSTNME ---------CHRISTINE MICHAEL SALLY JOHN IRVING EVA EILEEN THEODORE VINCENZO SEAN DOLORES HEATHER BRUCE ELIZABETH MASATOSHI MARILYN JAMES DAVID WILLIAM JENNIFER JAMES SALVATORE DANIEL SYBIL MARIA ETHEL JOHN PHILIP MAUDE RAMLAL WING JASON

MIDINIT ------I L A B F D W Q G

LASTNAME ---------HAAS THOMPSON KWAN GEYER STERN PULASKI HENDERSON SPENSER LUCCHESI O'CONNELL QUINTANA NICHOLLS ADAMSON PIANKA YOSHIMURA SCOUTTEN WALKER BROWN JONES LUTZ JEFFERSON MARINO SMITH JOHNSON PEREZ SCHNEIDER PARKER SMITH SETRIGHT MEHTA LEE GOUNOT

WORKDEPT -------A00 B01 C01 E01 D11 D21 E11 E21 A00 A00 C01 C01 D11 D11 D11 D11 D11 D11 D11 D11 D21 D21 D21 D21 D21 E11 E11 E11 E11 E21 E21 E21

PHONENO ------3978 3476 4738 6789 6423 7831 5498 0972 3490 2167 4578 1793 4510 3782 2890 1682 2986 4501 0942 0672 4265 3780 0961 8953 9001 8997 4502 2095 3332 9990 2103 5698

HIREDATE ---------1965-01-01 1973-10-10 1975-04-05 1949-08-17 1973-09-14 1980-09-30 1970-08-15 1980-06-19 1958-05-16 1963-12-05 1971-07-28 1976-12-15 1972-02-12 1977-10-11 1978-09-15 1973-07-07 1974-07-26 1966-03-03 1979-04-11 1968-08-29 1966-11-21 1979-12-05 1969-10-30 1975-09-11 1980-09-30 1967-03-24 1980-05-30 1972-06-19 1964-09-12 1965-07-07 1976-02-23 1947-05-05

cl

u oy si ec vo to fo C rm .F a .T ció .I. n C .

EMPNO -----000010 000020 000030 000050 000060 000070 000090 000100 000110 000120 000130 000140 000150 000160 000170 000180 000190 000200 000210 000220 000230 000240 000250 000260 000270 000280 000290 000300 000310 000320 000330 000340

M A

R J S H

T K J M S V L R R X F V R

pr

Ex

pref

© Copyright IBM Corp. 2007, 2013

Exercises description

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

xvii

Student Exercises

EMPLOYEE Table (Cont)

pr

Ex

cl

u oy si ec vo to fo C rm .F a .T ció .I. n C .

JOB EDLEVEL SEX BIRTHDATE SALARY BONUS COMM --------- ------- --- ---------- --------- -------- -------PRES 18 F 1933-08-14 52750.00 1000.00 4220.00 MANAGER 18 M 1948-02-02 41250.00 800.00 3300.00 MANAGER 20 F 1941-05-11 38250.00 800.00 3060.00 MANAGER 16 M 1925-09-15 40175.00 800.00 3214.00 MANAGER 16 M 1945-07-07 32250.00 600.00 2580.00 MANAGER 16 F 1953-05-26 36170.00 700.00 2893.00 MANAGER 16 F 1941-05-15 29750.00 600.00 2380.00 MANAGER 14 M 1956-12-18 26150.00 500.00 2092.00 SALESREP 19 M 1929-11-05 46500.00 900.00 3720.00 CLERK 14 M 1942-10-18 29250.00 600.00 2340.00 ANALYST 16 F 1925-09-15 23800.00 500.00 1904.00 ANALYST 18 F 1946-01-19 28420.00 600.00 2274.00 DESIGNER 16 M 1947-05-17 25280.00 500.00 2022.00 DESIGNER 17 F 1955-04-12 22250.00 400.00 1780.00 DESIGNER 16 M 1951-01-05 24680.00 500.00 1974.00 DESIGNER 17 F 1949-02-21 21340.00 500.00 1707.00 DESIGNER 16 M 1952-06-25 20450.00 400.00 1636.00 DESIGNER 16 M 1941-05-29 27740.00 600.00 2217.00 DESIGNER 17 M 1953-02-23 18270.00 400.00 1462.00 DESIGNER 18 F 1948-03-19 29840.00 600.00 2387.00 CLERK 14 M 1935-05-30 22180.00 400.00 1774.00 CLERK 17 M 1954-03-31 28760.00 600.00 2301.00 CLERK 15 M 1939-11-12 19180.00 400.00 1534.00 CLERK 16 F 1936-10-05 17250.00 300.00 1380.00 CLERK 15 F 1953-05-26 27380.00 500.00 2190.00 OPERATOR 17 F 1936-03-28 26250.00 500.00 2100.00 OPERATOR 12 M 1946-07-09 15340.00 300.00 1227.00 OPERATOR 14 M 1936-10-27 17750.00 400.00 1420.00 OPERATOR 12 F 1931-04-21 15900.00 300.00 1272.00 FIELDREP 16 M 1932-08-11 19950.00 400.00 1596.00 FIELDREP 14 M 1941-07-18 25370.00 500.00 2030.00 FIELDREP 16 M 1926-05-17 23840.00 500.00 1907.00

xviii DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

PROJECT Table DEPT PR PROJNAME NO RESPEMP STAFF --------------------------------- ----ADMIN SERVICES D01 000010 6.50 GENERAL AD SYSTEMS D21 000070 6.00 PAYROLL PROGRAMMING D21 000230 2.00 PERSONNEL PROGRAMMG D21 000250 1.00 ACCOUNT.PROGRAMMING D21 000270 2.00 QUERY SERVICES C01 000030 2.00 USER EDUCATION C01 000030 1.00 WELD LINE AUTOMATION D01 000010 12.00 W L PROGRAMMING D11 000060 9.00 W L PROGRAM DESIGN D11 000220 2.00 W L ROBOT DESIGN D11 000150 3.00 W L PROD CONT PROGS D11 000160 3.00 OPERATION SUPPORT E01 000050 6.00 OPERATION E11 000090 5.00 GEN SYSTEMS SERVICES E01 000050 5.00 SYSTEMS SUPPORT E21 000100 4.00 SCP SYSTEMS SUPPORT E21 000320 1.00 APPLICATIONS SUPPORT E21 000330 1.00 DB/DC SUPPORT E21 000340 1.00 WELD LINE PLANNING B01 000020 1.00

PRSTDATE ---------1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-02-15 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01

PRENDATE ---------1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1982-12-01 1982-12-01 1982-12-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1982-09-15

MAJPROJ ------AD3100 AD3110 AD3110 AD3110 MA2100 MA2110 MA2110 MA2110 OP1000 OP2000 OP2010 OP2010 OP2010 MA2100

cl

u oy si ec vo to fo C rm .F a .T ció .I. n C .

PROJNO -----AD3100 AD3110 AD3111 AD3112 AD3113 IF1000 IF2000 MA2100 MA2110 MA2111 MA2112 MA2113 OP1000 OP1010 OP2000 OP2010 OP2011 OP2012 OP2013 PL2100

pr

Ex

pref

© Copyright IBM Corp. 2007, 2013

Exercises description

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

xix

Student Exercises

EMP_ACT Table PROJNO ACTNO EMPTIME EMSTDATE EMENDATE ------ ------ -------- ---------- ---------AD3100 10 0.50 1982-01-01 1982-07-01 AD3110 10 1.00 1982-01-01 1983-02-01 AD3111 60 1.00 1982-01-01 1982-03-15 AD3111 60 0.50 1982-03-15 1982-04-15 AD3111 70 0.50 1982-03-15 1982-10-15 AD3111 80 0.50 1982-04-15 1982-10-15 AD3111 180 1.00 1982-10-15 1983-01-01 AD3111 70 1.00 1982-02-15 1982-09-15 AD3111 80 1.00 1982-09-15 1983-01-01 AD3112 60 0.50 1982-02-01 1982-03-15 AD3112 60 1.00 1982-01-01 1982-02-01 AD3112 60 1.00 1983-01-01 1983-02-01 AD3112 60 0.50 1982-12-01 1983-01-01 AD3112 70 1.00 1982-03-15 1982-08-15 AD3112 70 0.50 1982-02-01 1982-03-15 AD3112 70 0.25 1982-08-15 1982-10-15 AD3112 80 0.25 1982-08-15 1982-10-15 AD3112 80 0.50 1982-10-15 1982-12-01 AD3112 180 0.50 1982-08-15 1983-01-01 AD3113 70 0.50 1982-06-15 1982-07-01 AD3113 70 1.00 1982-07-01 1983-02-01 AD3113 80 1.00 1982-01-01 1982-03-01 AD3113 80 0.50 1982-03-01 1982-04-15 AD3113 180 0.50 1982-03-01 1982-04-15 AD3113 180 0.50 1982-06-01 1982-07-01 AD3113 180 1.00 1982-04-15 1982-06-01 AD3113 60 0.25 1982-09-01 1982-10-15 AD3113 60 1.00 1982-04-01 1982-09-01 AD3113 60 0.50 1982-03-01 1982-04-01 AD3113 70 0.75 1982-09-01 1982-10-15 AD3113 70 1.00 1982-10-15 1983-02-01 AD3113 80 1.00 1982-01-01 1982-03-01 AD3113 80 0.50 1982-03-01 1982-04-01 IF1000 10 0.50 1982-06-01 1983-01-01 IF1000 90 1.00 1982-01-01 1982-10-01 IF1000 100 0.50 1982-10-01 1983-01-01 IF1000 90 0.50 1982-10-01 1983-01-01

pr

Ex

cl

u oy si ec vo to fo C rm .F a .T ció .I. n C .

EMPNO -----000010 000070 000230 000230 000230 000230 000230 000240 000240 000250 000250 000250 000250 000250 000250 000250 000250 000250 000250 000260 000260 000260 000260 000260 000260 000260 000270 000270 000270 000270 000270 000270 000270 000030 000130 000130 000140

xx

DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

EMP_ACT Table (Cont) EMENDATE ---------1983-01-01 1982-03-01 1982-07-01 1982-07-01 1983-01-01 1982-11-01 1982-03-01 1983-02-01 1982-06-15 1983-02-01 1983-02-01 1982-07-15 1983-02-01 1983-06-01 1983-02-01 1982-10-01 1983-10-01 1983-02-01 1983-02-01 1982-06-15 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1982-09-15 twice in the Sample database

cl

u oy si ec vo to fo C rm .F a .T ció .I. n C .

EMPNO PROJNO ACTNO EMPTIME EMSTDATE ------ ------ ------ -------- ---------000030 IF2000 10 0.50 1982-01-01 000140 IF2000 100 1.00 1982-01-01 000140 IF2000 100 0.50 1982-03-01 000140 IF2000 110 0.50 1982-03-01 000140 IF2000 110 0.50 1982-10-01 000010 MA2100 10 0.50 1982-01-01 000110 MA2100 20 1.00 1982-01-01 000010 MA2110 10 1.00 1982-01-01 000200 MA2111 50 1.00 1982-01-01 000200 MA2111 60 1.00 1982-06-15 000220 MA2111 40 1.00 1982-01-01 000150 MA2112 60 1.00 1982-01-01 000150 MA2112 180 1.00 1982-07-15 000170 MA2112 60 1.00 1982-01-01 000170 MA2112 70 1.00 1982-06-01 000190 MA2112 70 1.00 1982-02-01 000190 MA2112 80 1.00 1982-10-01 000160 MA2113 60 1.00 1982-07-15 000170 MA2113 80 1.00 1982-01-01 000180 MA2113 70 1.00 1982-04-01 000210 MA2113 80 0.50 1982-10-01 000210 MA2113 180 0.50 1982-10-01 000050 OP1000 10 0.25 1982-01-01 000090 OP1010 10 1.00 1982-01-01 000280 OP1010 130 1.00 1982-01-01 000290 OP1010 130 1.00 1982-01-01 000300 OP1010 130 1.00 1982-01-01 000310 OP1010 130 1.00 1982-01-01 000050 OP2010 10 0.75 1982-01-01 000100 OP2010 10 1.00 1982-01-01 000320 OP2011 140 0.75 1982-01-01 000320 OP2011 150 0.25 1982-01-01 000330 OP2012 140 0.25 1982-01-01 000330 OP2012 160 0.75 1982-01-01 000340 OP2013 140 0.50 1982-01-01 000340 OP2013 170 0.50 1982-01-01 000020 PL2100 30 1.00 1982-01-01 The last row for employee 000020 has been added for DB2 UDB for Windows.

pr

Ex

pref

© Copyright IBM Corp. 2007, 2013

Exercises description

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

xxi

Student Exercises

CARS Table The CARS table is to use in unit 7 (recursive SQL). ASSEMBLY ------------------------HONDA ACCORD HONDA ACCORD ENGINE COMPARTMENT ENGINE COMPARTMENT PASSENGER COMPARTMENT PASSENGER COMPARTMENT PASSENGER COMPARTMENT ENGINE ENGINE ENGINE ENGINE SEAT GROUP SEAT GROUP DASHBOARD DASHBOARD DASHBOARD DASHBOARD TRUNK STEREO SYSTEM STEREO SYSTEM GAUGE CLUSTER GAUGE CLUSTER CONTROL CLUSTER CONTROL CLUSTER CONTROL CLUSTER FRONT SEAT ASSEMBLY FRONT SEAT ASSEMBLY REAR SEAT ASSEMBLY REAR SEAT ASSEMBLY REAR SEAT ASSEMBLY

COMPONENT QUANTITY ------------------------- -------ENGINE COMPARTMENT 1 PASSENGER COMPARTMENT 1 ENGINE 1 IGNITION SYSTEM 1 SEAT GROUP 3 DASHBOARD 1 TRUNK 1 CAMSHAFT 1 CRANKSHAFT 1 PISTON 4 CONNECTING ROD 4 FRONT SEAT ASSEMBLY 2 REAR SEAT ASSEMBLY 1 VENT 4 STEREO SYSTEM 1 GAUGE CLUSTER 1 CONTROL CLUSTER 1 TOOL KIT 1 RADIO 1 CD PLAYER 1 SPEEDOMETER 1 ODOMETER 1 FOG LAMP CONTROL 1 FOUR WAY FLASHER CONTROL 1 TURN SIGNAL CONTROL 1 FRONT SEAT 1 LAP/SHOULDER BELT 1 REAR SEAT 1 LAP/SHOULDER BELT 3 SHOULDER BELT 3

pr

Ex

cl

u oy si ec vo to fo C rm .F a .T ció .I. n C .

LEVEL -----1 1 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4

xxii DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

TESTEMP Table The TESTEMP table is to use in unit 2 (views). WORKDEPT -------C01 A00 B01 C01 E01

HIREDATE ---------25.06.1998 01.01.1965 10.10.1973 05.04.1975 17.08.1949

SALARY BONUS -------- ------25000.00 .00 52750.00 1000.00 41250.00 800.00 38250.00 800.00 40175.00 800.00

cl

u oy si ec vo to fo C rm .F a .T ció .I. n C .

EMPNO LASTNAME ---------------000111 SMITH 000010 HAAS 000020 THOMPSON 000030 KWAN 000050 GEYER

pr

Ex

pref

© Copyright IBM Corp. 2007, 2013

Exercises description

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

xxiii

Student Exercises

Content of VIEWS The listed views have to be used for the exercises in unit 3. Data types are listed in the table description.

u oy si ec vo to fo C rm .F a .T ció .I. n C .

VEMPLOYEE View EMPNO -----000010 000030 000120 000130 000140

LASTNAME --------HAAS KWAN O'CONNELL QUINTANA NICHOLLS

SALARY -------52750.00 38250.00 29250.00 23800.00 28420.00

WORKDEPT -------A00 C01 A00 C01 C01

VDEPARTMENT View DEPTNO -----A00 C01 D01

DEPTNAME ---------------------------SPIFFY COMPUTER SERVICE DIV. INFORMATION CENTER DEVELOPMENT CENTER

MGRNO -----000010 000030 ------

VPROJECT View

PROJNAME -------------ADMIN SERVICES QUERY SERVICES USER EDUCATION

DEPTNO -----D01 C01 C01

RESPEMP ------000010 000030 000030

pr

Ex

cl

PROJNO -----AD3100 IF1000 IF2000

xxiv DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

Uempty

Exercise 1. SQL Basics Review, CUBE, and ROLLUP What this exercise is about

u oy si ec vo to fo C rm .F a .T ció .I. n C .

This exercise provides an opportunity to review some basic topics.

What you should be able to do

At the end of the lab, you should be able to:

• Code SELECT statements with multiple conditions

• Use the GROUP BY clause • Use column functions

• Use the new super groups features, CUBE, ROLLUP, and RANK

Introduction

See the data model at the start of this Exercise Guide to get the column names and descriptions for each table.

Requirements

pr

Ex

cl

• Student handout • SQL Reference

© Copyright IBM Corp. 2007, 2013

Exercise 1. SQL Basics Review, CUBE, and ROLLUP

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

1-1

Student Exercises

Problem list Ron is the SQL specialist in the department. Joe is a colleague of Ron and does not have SQL knowledge. Joe asked Ron for help to solve the following problems.

u oy si ec vo to fo C rm .F a .T ció .I. n C .

Note See the data model at the beginning of this Exercise Guide for descriptions of the tables used in the labs and for their column names.

Problem 1

Joe's manager wants information about employees which match the following criteria: • Their yearly salary is between 22000 and 24000. • They work in departments D11 or D21.

List the employee number, last name, yearly salary, and department number of the appropriate employees.

Problem 2

Now, Joe's manager wants information about the yearly salary. He wants to know the minimum, the maximum, and average yearly salary of all employees with an education level of 16. He also wants to know how many employees have this education level.

Problem 3

Ex

cl

Joe's manager is interested in some additional salary information. This time, he wants information for every department that appears in the EMPLOYEE table, provided that the department has more than five employees. The report needs to show the department number, the minimum, maximum, and average yearly salary, and the number of employees who work in the department.

Problem 4

pr

Joe's manager wants information about employees grouped by department, grouped by sex and in addition by the combination of department and sex. List only those who work in a department which start with the letter D. Refer to the expected result for this query. Which of CUBE, ROLLUP and GROUPING SETS would give this result?

1-2

DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

Uempty

Note

u oy si ec vo to fo C rm .F a .T ció .I. n C .

The SQL syntax needed to solve this problem is not yet available on the current version of DB2 for z/OS. This problem can be solved with SQL only on DB2 for Linux, Unix, and Windows.

Problem 5

Joe's manager wants to rank employees by the bonus they earn, only for departments A00, B01 and C01. List in department order: the employee last name, department, bonus and ranking by bonus, highest first. This means to order the rows first by department, and then to order each department's rows by highest bonus value (not the ranking number). Hint

Use RANK() OVER (ORDER BY BONUS DESC)

Now compare the results for the same query using DENSE_RANK and ROW_NUMBER. In other words, modify this query and execute it using the DENSE_RANK and ROW_NUMBER functions.

pr

Ex

cl

End of Problem List

© Copyright IBM Corp. 2007, 2013

Exercise 1. SQL Basics Review, CUBE, and ROLLUP

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

1-3

Student Exercises

Problem List with Expected Results Problem 1 Joe's manager wants information about employees which match the following criteria:

u oy si ec vo to fo C rm .F a .T ció .I. n C .

• Their yearly salary is between 22000 and 24000. • They work in departments D11 or D21.

List the employee number, last name, yearly salary, and department number of the appropriate employees.

Result

EMPNO -----000160 000230

LASTNAME --------PIANKA JEFFERSON

SALARY -------22250.00 22180.00

WORKDEPT --------D11 D21

Problem 2

Now, Joe's manager wants information about the yearly salary. He wants to know the minimum, the maximum, and average yearly salary of all employees with an education level of 16. He also wants to know how many employees have this education level.

Result

MIN -------17250.00

MAX -------40175.00

AVG -------------26777.91666666

COUNT ----12

When returning the result of a calculation, the number of digits in the fractional part (scale) may differ for DB2 on different platforms.

cl

Problem 3

Ex

Joe's manager is interested in some additional salary information. This time, he wants information for every department that appears in the EMPLOYEE table, provided that the department has more than five employees. The report needs to show the department number, the minimum, maximum, and average yearly salary, and the number of employees who work in the department.

pr

Result

WORKDEPT -------D11 D21

1-4

MIN -------18270.00 17250.00

MAX -------32250.00 36170.00

DB2 SQL Workshop for Experienced Users

AVG -------------24677.77777777 25153.33333333

COUNT ----9 6

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

Uempty

Problem 4 Joe's manager wants information about employees grouped by department, grouped by sex and in addition by the combination of department and sex. List only those who work in a department which start with the letter D.

u oy si ec vo to fo C rm .F a .T ció .I. n C .

Refer to the expected result for this query. Which of CUBE, ROLLUP and GROUPING SETS would give this result? Note

The SQL syntax needed to solve this problem is not yet available on the current version of DB2 for z/OS. This problem can be solved with SQL only on DB2 for Linux, Unix, and Windows.

Result

SEX MIN MAX SUM --- ----------- ----------- ---------------------F 17250.00 36170.00 154230.00 M 18270.00 32250.00 218790.00 17250.00 36170.00 373020.00 18270.00 32250.00 222100.00 17250.00 36170.00 150920.00 F 21340.00 29840.00 73430.00 M 18270.00 32250.00 148670.00 F 17250.00 36170.00 80800.00 M 19180.00 28760.00 70120.00

pr

Ex

cl

WORKDEPT -------D11 D21 D11 D11 D21 D21

© Copyright IBM Corp. 2007, 2013

Exercise 1. SQL Basics Review, CUBE, and ROLLUP

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

1-5

Student Exercises

Problem 5 Joe's manager wants to rank employees by the bonus they earn, only for departments A00, B01 and C01. List in department order: the employee last name, department, bonus and ranking by bonus, highest first.

u oy si ec vo to fo C rm .F a .T ció .I. n C .

Hint Use RANK() OVER (ORDER BY BONUS DESC)

Result

With RANK

LASTNAME --------------O'CONNELL LUCCHESSI HAAS THOMPSON QUINTANA NICHOLLS KWAN

WORKDEPT BONUS BONUS_RANKING -------- ----------- -------------------A00 600.00 5 A00 900.00 2 A00 1000.00 1 B01 800.00 3 C01 500.00 7 C01 600.00 5 C01 800.00 3

Now compare the results for the same query using DENSE_RANK and ROW_NUMBER. In other words, modify this query and execute it using the DENSE_RANK and ROW_NUMBER functions.

Result

With DENSE_RANK

WORKDEPT BONUS BONUS_RANKING -------- ----------- -------------------A00 600.00 4 A00 900.00 2 A00 1000.00 1 B01 800.00 3 C01 500.00 5 C01 600.00 4 C01 800.00 3

pr

Ex

cl

LASTNAME --------------O'CONNELL LUCCHESSI HAAS THOMPSON QUINTANA NICHOLLS KWAN

1-6

DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

Uempty

Result With ROW_NUMBER WORKDEPT BONUS BONUS_RANKING -------- ----------- -------------------A00 600.00 5 A00 900.00 2 A00 1000.00 1 B01 800.00 4 C01 500.00 7 C01 600.00 6 C01 800.00 3

u oy si ec vo to fo C rm .F a .T ció .I. n C .

LASTNAME --------------O'CONNELL LUCCHESSI HAAS THOMPSON QUINTANA NICHOLLS KWAN

pr

Ex

cl

End of Problem List with Expected Results

© Copyright IBM Corp. 2007, 2013

Exercise 1. SQL Basics Review, CUBE, and ROLLUP

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

1-7

Student Exercises

Solution Problem 1

u oy si ec vo to fo C rm .F a .T ció .I. n C .

SELECT EMPNO, LASTNAME, SALARY, WORKDEPT FROM EMPLOYEE WHERE WORKDEPT IN ('D11', 'D21') AND SALARY BETWEEN 22000 AND 24000;

Problem 2

SELECT MIN(SALARY) AS MIN, MAX(SALARY) AS MAX, AVG(SALARY) AS AVG, COUNT(*) AS COUNT FROM EMPLOYEE WHERE EDLEVEL = 16;

Problem 3

SELECT WORKDEPT, MIN(SALARY) AS MIN, MAX(SALARY) AS MAX, AVG(SALARY) AS AVG, COUNT(*) AS COUNT FROM EMPLOYEE GROUP BY WORKDEPT HAVING COUNT(*) > 5;

Problem 4

SELECT WORKDEPT,SEX,MIN(SALARY) AS MIN,MAX(SALARY) AS MAX, SUM(SALARY) AS SUM FROM EMPLOYEE WHERE WORKDEPT LIKE 'D%' GROUP BY CUBE (WORKDEPT,SEX);

Ex

cl

As you can see, CUBE would give the desired result. ROLLUP would give fewer rows. GROUPING SETS is more flexible, so it can be used to give a similar result to CUBE: GROUP BY GROUPING SETS((WORKDEPT, SEX), WORKDEPT, SEX, () ) but the result would appear in a slightly different order.

Problem 5 With RANK

pr

SELECT LASTNAME, WORKDEPT, BONUS AS BONUS, RANK() OVER (ORDER BY BONUS DESC) AS BONUS_RANKING FROM EMPLOYEE WHERE WORKDEPT IN ('A00', 'B01', 'C01') ORDER BY WORKDEPT, BONUS_RANKING DESC;

1-8

DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

Uempty

With DENSE_RANK

u oy si ec vo to fo C rm .F a .T ció .I. n C .

SELECT LASTNAME, WORKDEPT, BONUS AS BONUS, DENSE_RANK() OVER (ORDER BY BONUS DESC) AS BONUS_RANKING FROM EMPLOYEE WHERE WORKDEPT IN ('A00', 'B01', 'C01') ORDER BY WORKDEPT, BONUS_RANKING DESC; With ROW_NUMBER

SELECT LASTNAME, WORKDEPT, BONUS AS BONUS, ROW_NUMBER() OVER (ORDER BY BONUS DESC) AS BONUS_RANKING FROM EMPLOYEE WHERE WORKDEPT IN ('A00', 'B01', 'C01') ORDER BY WORKDEPT, BONUS_RANKING DESC;

pr

Ex

cl

End of solutions

© Copyright IBM Corp. 2007, 2013

Exercise 1. SQL Basics Review, CUBE, and ROLLUP

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

1-9

pr

Ex

cl

u oy si ec vo to fo C rm .F a .T ció .I. n C .

Student Exercises

1-10 DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

Uempty

Exercise 2. Create Objects What this exercise is about

u oy si ec vo to fo C rm .F a .T ció .I. n C .

This exercise gives you an opportunity to implement a small data model.

What you should be able to do

At the end of the lab, you should be able to: • Create tables with check constraints • Create index

• Use referential integrity • Create triggers • Create views

• Understand the effect of CHECK OPTION in a view • Appreciate some of the advantages of using views

Introduction

See the data model at the start of this Exercise Guide to get the column names and descriptions for each table.

cl

z/OS Users: Be sure to add the correct IN clause to your CREATE TABLE statements. Ask the instructor if you forgot which IN clause to use.

• Student handout • SQL Reference

pr

Ex

Requirements

© Copyright IBM Corp. 2007, 2013

Exercise 2. Create Objects

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

2-1

Student Exercises

Problem list Harvey needs your help to create a database for his test environment. He has accurately defined the requirements, but he does not know the SQL syntax. You should help him to do the subsequent steps.

u oy si ec vo to fo C rm .F a .T ció .I. n C .

Problem 1 Create the table EMPDEPT with these columns: • • • • •

EMPNO LASTNAME SALARY DEPTNO DEP_NAME

The data types and null characteristics for these columns should be the same as for the columns with the same names in the EMPLOYEE and DEPARTMENT tables. These tables are described in our course data model.

The definition of the table should limit the values for the yearly salary (SALARY) column to ensure that: No employee in any department may have a yearly salary that exceeds 50000. The values in the EMPNO column should be unique. The uniqueness should be guaranteed via a unique index. Create the table HIGH_SALARY_RAISE with the following columns: • EMPNO • PREV_SAL • NEW_SAL

pr

Ex

cl

The data type for column EMPNO is CHAR(6). The other columns should be defined as DECIMAL(9,2). All columns in this table should be defined with NOT NULL.

2-2

DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

Uempty

Problem 2 After creating the table, you should add referential constraints.

u oy si ec vo to fo C rm .F a .T ció .I. n C .

Your EMPLOYEE and DEPARTMENT tables should have primary keys, on the EMPNO and DEPTNO columns respectively. Check to make sure they each have a primary key by adding them; if you get a message saying they are already there, then they have already been set up for you, otherwise they will now have been created successfully. You should now add the primary key for the EMPDEPT table, on the EMPNO column, and implement the following rules:

• The EMPDEPT table should only allow values in column EMPNO which exist in the EMPLOYEE table. If an employee is deleted from the EMPLOYEE table, the corresponding row in the EMPDEPT table should also be immediately deleted.

• The EMPDEPT table should only allow values in column DEPTNO which exist in the DEPARTMENT table. It should not be possible to delete a department from the DEPARTMENT table as long as a corresponding DEPTNO exists in the EMPDEPT table.

Problem 3

Klaus must update the yearly salaries for the employees of the EMPDEPT table. If the new value for a salary exceeds the previous value by 10 percent or more, Harvey wants to insert a row into the HIGH_SALARY_RAISE table. The values in this row should be the employee number, the previous salary, and the new salary. Create something in DB2 that will ensure that a row is inserted into the HIGH_SALARY_RAISE table whenever an employee of the EMPDEPT table gets a raise of 10 percent or more.

Problem 4

cl

Now, you should insert data in the EMPDEPT table. Use the combined contents of tables EMPLOYEE and DEPARTMENT as the source for your data.

Ex

Did your insert work?

If not, correct your INSERT statement so that you get only rows which satisfy the check constraints on the EMPDEPT table.

pr

Problem 5

Harvey wants to test the table-level check constraint on the EMPDEPT table. Ethel Schneider works in the operations department. Her department number is E11, and her employee number is 000280. Try to set her yearly salary to the value of 51000. Does it work?

© Copyright IBM Corp. 2007, 2013

Exercise 2. Create Objects

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

2-3

Student Exercises

Problem 6 Harvey wants to see if the trigger works.

u oy si ec vo to fo C rm .F a .T ció .I. n C .

Elizabeth Pianka, whose employee number is 000160, has been given a raise. Set her yearly salary to 25000. Inspect the HIGH_SALARY_RAISE table to see if the trigger worked.

Problem 7

Create a view named VEMPPAY that contains one row for each employee in the company. Each row should contain employee number, last name, department number, and total earnings for the corresponding employee. Total earnings means salary plus bonus plus commission for the employee. Then, determine the average of the earnings for the departments by using the view you just created.

Problem 8

Create a view named VEMP1 containing employee number, last name, yearly salary, and work department based on your TESTEMP table. Only employees with a yearly salary less than 50000 should be displayed when you use the view. Note

It is very important that you base this view on the TESTEMP table that was created for you or you created with the CRTAB member. Otherwise, you may get incorrect results in a later lab.

Display the rows in the view in employee number sequence.

cl

Our employee with the employee number 000020 (Thompson) changed jobs and will get a new salary of 51000. Update the data for employee number 000020 using the view VEMP1. Display the view again, arranging the rows in employee number sequence.

Ex

What happened? Is Thompson still in the view?

Query the row of employee number 000020 in your TESTEMP table.

pr

Did the update work?

2-4

DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

Uempty

Problem 9 Reset the salary of employee Thompson (empno = '000020') to the value of 41250. Create a view named VEMP2 which has the same definition as in problem 8, but add a CHECK OPTION. Again, base the view on your TESTEMP table. Display the rows in the view in employee number sequence.

u oy si ec vo to fo C rm .F a .T ció .I. n C .

Our employee with the employee number 000050 (Geyer) also changed jobs and will have a new salary of 55000. Update the data for employee number 000050 using the view VEMP2. Does the UPDATE statement work? Display the view again, arranging the rows in employee number sequence. Query Geyer's row in your TESTEMP table. Did the data in the base table change?

pr

Ex

cl

End of Problem list

© Copyright IBM Corp. 2007, 2013

Exercise 2. Create Objects

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

2-5

Student Exercises

Problem List with Expected Results Problem 1 Create the table EMPDEPT with these columns: EMPNO LASTNAME SALARY DEPTNO DEP_NAME

u oy si ec vo to fo C rm .F a .T ció .I. n C .

• • • • •

The data types and null characteristics for these columns should be the same as for the columns with the same names in the EMPLOYEE and DEPARTMENT tables. These tables are described in our course data model.

The definition of the table should limit the values for the yearly salary (SALARY) column to ensure that: No employee in any department may have a yearly salary that exceeds 50000. The values in the EMPNO column should be unique. The uniqueness should be guaranteed via a unique index. Create the table HIGH_SALARY_RAISE with the following columns: • EMPNO • PREV_SAL • NEW_SAL

The data type for column EMPNO is CHAR(6). The other columns should be defined as DECIMAL(9,2). All columns in this table should be defined with NOT NULL.

Result

pr

Ex

cl

The CREATE statements for the EMPDEPT table, the unique index on the EMPDEPT table, and the HIGH_SALARY_RAISE table should all be successful.

2-6

DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

Uempty

Problem 2 After creating the table, you should add referential constraints.

u oy si ec vo to fo C rm .F a .T ció .I. n C .

Your EMPLOYEE and DEPARTMENT tables should have primary keys, on the EMPNO and DEPTNO columns respectively. Check to make sure they each have a primary key by adding them; if you get a message saying they are already there, then they have already been set up for you, otherwise they will now have been created successfully. You should now add the primary key for the EMPDEPT table, on the EMPNO column, and implement the following rules:

• The EMPDEPT table should only allow values in column EMPNO which exist in the EMPLOYEE table. If an employee is deleted from the EMPLOYEE table, the corresponding row in the EMPDEPT table should also be immediately deleted.

• The EMPDEPT table should only allow values in column DEPTNO which exist in the DEPARTMENT table. It should not be possible to delete a department from the DEPARTMENT table as long as a corresponding DEPTNO exists in the EMPDEPT table.

Result

The ALTER statements which add the primary keys and the foreign keys should execute successfully.

Problem 3

cl

Klaus must update the yearly salaries for the employees of the EMPDEPT table. If the new value for a salary exceeds the previous value by 10 percent or more, Harvey wants to insert a row into the HIGH_SALARY_RAISE table. The values in this row should be the employee number, the previous salary, and the new salary. Create something in DB2 that will ensure that a row is inserted into the HIGH_SALARY_RAISE table whenever an employee of the EMPDEPT table gets a raise of 10 percent or more.

Result

pr

Ex

The CREATE TRIGGER statement should execute successfully.

© Copyright IBM Corp. 2007, 2013

Exercise 2. Create Objects

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

2-7

Student Exercises

Problem 4 Now, you should insert data in the EMPDEPT table. Use the combined contents of tables EMPLOYEE and DEPARTMENT as the source for your data. Did your insert work?

u oy si ec vo to fo C rm .F a .T ció .I. n C .

If not, correct your INSERT statement so that you get only rows which satisfy the check constraints on the EMPDEPT table.

Result

The initial INSERT should fail due to a check constraint violation. The INSERT should work after it has been modified so that none of the rows violates a check constraint.

Problem 5

Harvey wants to test the table-level check constraint on the EMPDEPT table.

Ethel Schneider works in the operations department. Her department number is E11, and her employee number is 000280. Try to set her yearly salary to the value of 51000. Does it work?

Result

The UPDATE for Ethel Schneider will fail because it violates a check constraint.

Problem 6

Harvey wants to see if the trigger works.

Elizabeth Pianka, whose employee number is 000160, has been given a raise. Set her yearly salary to 25000. Inspect the HIGH_SALARY_RAISE table to see if the trigger worked.

Result

Ex

cl

The UPDATE for Elizabeth Pianka should succeed and should fire the trigger. You can verify that the trigger has fired by examining the contents of the HIGH_SALARY_RAISE table. You should see a row there for Elizabeth Pianka (EMPNO = 000160). NEW_SAL -------25000.00

pr

EMPNO PREV_SAL ------ -------000160 22250.00

2-8

DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

Uempty

Problem 7

u oy si ec vo to fo C rm .F a .T ció .I. n C .

Create a view named VEMPPAY that contains one row for each employee in the company. Each row should contain employee number, last name, department number, and total earnings for the corresponding employee. Total earnings means salary plus bonus plus commission for the employee. Then, determine the average of the earnings for the departments by using the view you just created. Result

pr

Ex

cl

WORKDEPT AVG_TOTAL_EARNINGS -------- -----------------A00 47093.333333 B01 45350.000000 C01 33202.666666 D11 27151.666666 D21 27648.666666 E01 44189.000000 E11 23097.800000 E21 26208.750000

© Copyright IBM Corp. 2007, 2013

Exercise 2. Create Objects

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

2-9

Student Exercises

Problem 8 Create a view named VEMP1 containing employee number, last name, yearly salary, and work department based on your TESTEMP table. Only employees with a yearly salary less than 50000 should be displayed when you use the view.

u oy si ec vo to fo C rm .F a .T ció .I. n C .

Note It is very important that you base this view on the TESTEMP table that was created for you or you created with the CRTAB member. Otherwise, you may get incorrect results in a later lab. Display the rows in the view in employee number sequence.

Our employee with the employee number 000020 (Thompson) changed jobs and will get a new salary of 51000. Update the data for employee number 000020 using the view VEMP1. Display the view again, arranging the rows in employee number sequence.

What happened? Is Thompson still in the view?

Query the row of employee number 000020 in your TESTEMP table. Did the update work?

Result

You should see the following when you first display the view contents: LASTNAME -------THOMPSON KWAN GEYER SMITH

cl

EMPNO -----000020 000030 000050 000111

SALARY -------41250.00 38250.00 40175.00 25000.00

WORKDEPT -------B01 C01 E01 C01

You should see the following when you display the view contents after the update: LASTNAME -------KWAN GEYER SMITH

pr

Ex

EMPNO -----000030 000050 000111

SALARY -------38250.00 40175.00 25000.00

WORKDEPT -------C01 E01 C01

You should see the following when you query the TESTEMP table: EMPNO LASTNAME ------ -------000020 THOMPSON

SALARY WORKDEPT -------- -------51000.00 B01

The update worked. 2-10 DB2 SQL Workshop for Experienced Users

© Copyright IBM Corp. 2007, 2013

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

V7.0 Student Exercises

Uempty

Problem 9 Reset the salary of employee Thompson (empno = '000020') to the value of 41250. Create a view named VEMP2 which has the same definition as in Problem 8, but add a CHECK OPTION. Again, base the view on your TESTEMP table. Display the rows in the view in employee number sequence.

u oy si ec vo to fo C rm .F a .T ció .I. n C .

Our employee with the employee number 000050 (Geyer) also changed also jobs and will have a new salary of 55000. Update the data for employee number 000050 using the view VEMP2. Does the UPDATE statement work? Display the view again, arranging the rows in employee number sequence.

Query Geyer's row in your TESTEMP table. Did the data in the base table change?

Result

You should see the following when you first display the view contents:

EMPNO -----000020 000030 000050 000111

LASTNAME -------THOMPSON KWAN GEYER SMITH

SALARY -------41250.00 38250.00 40175.00 25000.00

WORKDEPT -------B01 C01 E01 C01

The SQLCODE (-161 in z/OS, SQL0161N in Linux, Unix and Windows) indicates that the UPDATE did not work. The desired value for Geyer's SALARY, that is, 55000, was outside of the scope of the view (SALARY < 50000). The CHECK OPTION prevented the UPDATE. You should see the following when displaying the view after the update: LASTNAME -------THOMPSON KWAN GEYER SMITH

SALARY -------41250.00 38250.00 40175.00 25000.00

WORKDEPT -------B01 C01 E01 C01

Ex

cl

EMPNO -----000020 000030 000050 000111

You should see the following when you query the TESTEMP table after the update:

pr

EMPNO LASTNAME SALARY WORKDEPT ------ -------- -------- -------000050 GEYER 40175.00 E01

The data in the base table did not change. Remember that the data seen through the view is actually the base table data so this should not be a surprise.

End of Problem list with Expected Results

© Copyright IBM Corp. 2007, 2013

Exercise 2. Create Objects

Course materials may not be reproduced in whole or in part without the prior written permission of IBM.

2-11

Student Exercises

Solutions Problem 1 NOT NULL, NOT NULL, CHECK(SALARY = O.SALARY * 1.1) INSERT INTO HIGH_SALARY_RAISE VALUES (N.EMPNO, O.SALARY, N.SALARY);

Remember, OLD identifies the value that is in column SALARY before the update and NEW the value after the update.

Problem 4

The correct version of the INSERT is as follows:

INSERT INTO EMPDEPT SELECT E.EMPNO, E.LASTNAME, E.SALARY, D.DEPTNO, D.DEPTNAME FROM EMPLOYEE E, DEPARTMENT D WHERE E.WORKDEPT = D.DEPTNO AND E.SALARY
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF