Sei sulla pagina 1di 72

Database Programming -

Section 2
Instructor Guide
Table of Contents

Database Programming - Section 2................................................................................................................1


Lesson 1 - Conversion Functions ..................................................................................................................1
What Will I Learn? ........................................................................................................................................2
Why Learn It?................................................................................................................................................3
Tell Me / Show Me........................................................................................................................................4
Try It / Solve It ..............................................................................................................................................23
Lesson 2 - General Functions ........................................................................................................................27
What Will I Learn? ........................................................................................................................................29
Why Learn It?................................................................................................................................................30
Tell Me / Show Me........................................................................................................................................31
Try It / Solve It ..............................................................................................................................................37
Lesson 3 - Conditional Expressions ..............................................................................................................41
What Will I Learn? ........................................................................................................................................43
Why Learn It?................................................................................................................................................44
Tell Me / Show Me........................................................................................................................................45
Try It / Solve It ..............................................................................................................................................47
Lesson 4 - Practice Exercises ........................................................................................................................50
What Will I Learn? ........................................................................................................................................51
Why Learn It?................................................................................................................................................52
Tell Me / Show Me........................................................................................................................................53
Try It / Solve It ..............................................................................................................................................57
Lesson 5 - Practice Exercises ........................................................................................................................59
What Will I Learn? ........................................................................................................................................60
Why Learn It?................................................................................................................................................61
Tell Me / Show Me........................................................................................................................................62
Try It / Solve It ..............................................................................................................................................63

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page i
Lesson 1 - Conversion Functions

Lesson 1 - Conversion Functions

Lesson Preparation
When there is extra time in class, have students work on the self-test software.
What to Watch For
This is a lesson that requires considerable student practice. Check to make sure that, when
students get output returned from a query, it is the correct output.
Relate the idea of presenting information in a more-readable format to the process of preparing
the data-modeling presentation for the clients. It was important to have the information in a
format that was easily understood by everyone.
Connections
Ask students to find examples of formatted data on the Internet or in the newspaper. Sources
include the financial page, statistical information, grade reports, etc. Ask them to write a SQL
statement to convert default format to the source format.

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 1
What Will I Learn?

What Will I Learn?

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 2
Why Learn It?

Why Learn It?

Why Learn It?


Ask students: How do you choose a book to read or buy? Does the cover help you make a
decision? What if you open the book and there are no pictures and the type is very small. Are
you still interested?
Why do CDs and video tapes have colorful, interesting labels? Have you ever bought a new
candy bar because the wrapper attracted your attention? As someone once said, "looks are
everything"!

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 3
Tell Me / Show Me

Tell Me / Show Me

Tell Me / Show Me
Begin this lesson with a review question:
How can we find out what the date will be exactly five months from today?

Answer:
SELECT ADD_MONTHS(SYSDATE, 5)
FROM DUAL;

Before beginning this lesson's discussion of data-type conversions and the Oracle Server's
capability to implicitly do data-type conversions, explain to students the difference between
"implicit" and "explicit." Use the example, "When she rolled her eyes and sighed, Sue
implicitly told Bill she didn't want to go the dance with him. Bill didn't understand her actions
until she explicitly said, 'Bill, I already told you, I have a date for the dance!'" The dictionary
defines "implicit" as something that is "implied but not directly expressed" and explicit as
"clearly formulated or defined."

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 4
In this lesson, students will explicitly define data-type conversions to ensure the reliability of
SQL statements.
Students may not be familiar with concept of data types. Explain that most programming
languages require the programmer to declare the data type of every data object. For the data
stored in a database, the SQL programmer defines a data type for every column in the database.
Explain that later in the course, they will learn more about SQL data types, but for now they
will be using VARCHAR2, CHAR, NUMBER, and DATE.

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 5
Tell Me / Show Me

Tell Me / Show Me

Tell Me / Show Me
Begin this lesson with a review question:
How can we find out what the date will be exactly five months from today?

Answer:
SELECT ADD_MONTHS(SYSDATE, 5)
FROM DUAL;
Before beginning this lesson's discussion of data-type conversions and the Oracle Server's
capability to implicitly do data-type conversions, explain to students the difference between
"implicit" and "explicit." Use the example, "When she rolled her eyes and sighed, Sue
implicitly told Bill she didn't want to go the dance with him. Bill didn't understand her actions
until she explicitly said, 'Bill, I already told you, I have a date for the dance!'" The dictionary
defines "implicit" as something that is "implied but not directly expressed" and explicit as
"clearly formulated or defined."
In this lesson, students will explicitly define data-type conversions to ensure the reliability of
SQL statements.

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 6
Students may not be familiar with concept of data types. Explain that most programming
languages require the programmer to declare the data type of every data object. For the data
stored in a database, the SQL programmer defines a data type for every column in the database.
Explain that later in the course, they will learn more about SQL data types, but for now they
will be using VARCHAR2, CHAR, NUMBER, and DATE.

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 7
Tell Me / Show Me

Tell Me / Show Me

Tell Me / Show Me
After introducing each of the four data-type conversions, explain the format model table and
the use of "fm" and "spth."
STOP and allow students time to practice.

Conversion answers:
1. DATE CONVERSION TO CHARACTER DATA
June 19th, 2004 TO_CHAR(hire_date, 'Month ddth, YYYY')
January 1, 2000 TO_CHAR(hire_date, 'fmMonth dd, YYYY')
MAR 5, 2001 TO_CHAR(hire_date, 'fmMON dd, YYYY')

June 17th Wednesday Nineteen Eighty-Seven TO_CHAR(hire_date, 'Month ddth Day


YyYYSP')

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 8
SELECT id, TO_CHAR(event_date, 'MONTH DD, YYYY')
FROM d_events;

returns:
100 MAY 14, 2004
105 APRIL 28, 2004

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 9
Tell Me / Show Me

Tell Me / Show Me

Tell Me / Show Me
After introducing each of the four data-type conversions, explain the format model table and
the use of "fm" and "spth."
STOP and allow students time to practice.

Conversion answers:
1. DATE CONVERSION TO CHARACTER DATA
June 19th, 2004 TO_CHAR(hire_date, 'Month ddth, YYYY')
January 1, 2000 TO_CHAR(hire_date, 'fmMonth dd, YYYY')
MAR 5, 2001 TO_CHAR(hire_date, 'fmMON dd, YYYY')

June 17th Wednesday Nineteen Eighty-Seven TO_CHAR(hire_date, 'Month ddth Day


YyYYSP')

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 10
SELECT id, TO_CHAR(event_date, 'MONTH DD, YYYY')
FROM d_events;
returns:
100 MAY 14, 2004
105 APRIL 28, 2004

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 11
Tell Me / Show Me

Tell Me / Show Me

Tell Me / Show Me
After introducing each of the four data-type conversions, explain the format model table and
the use of "fm" and "th."
STOP and allow students time to practice.

Conversion answers:
(The date will vary depending on the SYSDATE.)
SELECT TO_CHAR(SYSDATE, 'fmMonth ddth, YYYY' )
FROM DUAL;
returns: August 6th, 2004

SELECT TO_CHAR(SYSDATE, 'Month dd, YYYY' )


FROM DUAL;
returns: August 06, 2004

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 12
SELECT TO_CHAR(SYSDATE, 'fmMON dd, YYYY' )
FROM DUAL;
returns: AUG 6, 2004

SELECT TO_CHAR(SYSDATE, 'fmMonth ddth, Day, YyYY' )


FROM DUAL;
returns: August 6th, Friday, Two Thousand Four

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 13
Tell Me / Show Me

Tell Me / Show Me

Tell Me / Show Me
Conversion answers:
$3000.00 TO_CHAR(salary, '$9999.99')
4,500 TO_CHAR(salary, '9,999')
9,000.00 TO_CHAR(salary, '9,999.99')
0004422 TO_CHAR(salary, '0009999')

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 14
Tell Me / Show Me

Tell Me / Show Me

Tell Me / Show Me
Ask students to use the DUAL table to convert their age to a number.

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 15
Tell Me / Show Me

Tell Me / Show Me

Tell Me / Show Me
The fx format may require more practice. Remind students to think of fx as "format exact" so
the fxdate of the format model must exactly match the format of the date being converted.
Ask students to use the fx modifier to convert each of the following to the default date format.

June19 2004
SELECT TO_DATE('June19 2004', 'fxMonthDD RRRR')AS Convert
FROM DUAL;

July312004
SELECT TO_DATE('July312004', 'fxMonthDDRRRR')AS Convert
FROM DUAL;

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 16
Using the DUAL table, ask students to format their birthday in five different ways. Remind
students that they will first have to convert their "character" data to date data and then format
it. If they were using a DATE data-type column from a table such as hire_date, the conversion
TO_DATE before formatting would not be necessary.

SELECT TO_CHAR(TO_DATE('June 19, 1990','Month dd, YYYY'),'MON DD YYYY')AS


Birthday
FROM DUAL;

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 17
Tell Me / Show Me

Tell Me / Show Me

Tell Me / Show Me
The fx format may require more practice. Remind students to think of fx as "format exact" so
the fxdate of the format model must exactly match the format of the date being converted.
Ask students to use the fx modifier to convert each of the following to the default date format.

June19 2004

SELECT TO_DATE('June19 2004', 'fxMonthDD RRRR')AS Convert


FROM DUAL;

July312004

SELECT TO_DATE('July312004', 'fxMonthDDRRRR')AS Convert


FROM DUAL;

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 18
Using the DUAL table, ask students to format their birthday in five different ways. Remind
students that they will first have to convert their "character" data to date data and then format
it. If they were using a DATE data-type column from a table such as hire_date, the conversion
TO_DATE before formatting would not be necessary.

SELECT TO_CHAR(TO_DATE('June 19, 1990','Month dd, YYYY'),'MON DD YYYY')AS


Birthday
FROM DUAL;

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 19
Tell Me / Show Me

Tell Me / Show Me

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 20
Tell Me / Show Me

Tell Me / Show Me

Tell Me / Show Me
Use the following example to show the effects of the RRRR and YYYY formats:

SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-YYYY')


FROM employees
WHERE hire_date < TO_DATE('01-Jan-90', 'DD-Mon-RR');

You'll get about three rows. Examine the WHERE clause. It asks to return only those hire dates
less than (before) those of 01-Jan-90. The RR used in the format model here makes sure that
the date is seen as 01-Jan-90. The three rows returned were those few people who were hired
before 01-Jan -90.

Reformat the query:


SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-YYYY')
FROM employees
WHERE hire_date < TO_DATE('01-Jan-90', 'DD-Mon-YY');

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 21
Now 20 rows were returned. Again, examine the format model in the WHERE clause. Using
the YY format causes the date to default to the current century, and since we are in the 2000s,
01-JAN-90 is seen as 01-JAN-2090. Everyone was hired before that date, right? Ask students
to research the "Millennium Bug" or "Y2K" and the concern people had about how databases
recorded their information.
Expect students to be a bit confused learning the RR and YY formats. Emphasize that the
problem exists when character data such as 01-Jan-90 is being formatted into a default date
format. Instead of using RR in the format model, YY is used. Because we are in the 21st
century, the YY is interpreted in the current century as 2090. Provide additional practice by
choosing a random date in either the 20th or 21st century, and ask students to provide the
correct result.

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 22
Try It / Solve It

Try It / Solve It

Try It / Solve It
1. SELECT last_name, TO_CHAR(birthdate, 'Month fmDD, RRRR')AS "Birthday"
FROM f_staffs;

2. SELECT TO_DATE('January 3, 2004', 'Month dd, YYYY')as "Date"


FROM DUAL;

3. SELECT 'The promotion began on the '|| TO_CHAR(start_date, 'ddspth "of" Month
YYYY')as "Date"
FROM f_promotional_menus
WHERE code = 110;

4. SELECT 'Today is the ' ||TO_CHAR(SYSDATE, 'Ddspth "of" Month, Yyyysp')


FROM DUAL;

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 23
5. SELECT id, first_name, TO_CHAR(salary, '$999.99')
FROM f_staffs;

6. SELECT first_name, last_name, TO_CHAR(salary, '$99,999.99'), TO_CHAR(salary +


2000, '$99,999.99') AS "New Salary"
FROM f_staffs;

7. SELECT TO_CHAR(start_date, 'Day Month ddth') AS "Valentine's"


FROM f_promotional_menus
WHERE code = 110;

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 24
Try It / Solve It

Try It / Solve It

Try It / Solve It
8. SELECT TO_CHAR(TO_DATE('25-DEC-04','dd-MON-yy'),'Month ddth,
YYYY')Convert,TO_CHAR(TO_DATE('25-DEC-04','dd-MON-yy'),'MONTH DDth,
YYYY')Convert,TO_CHAR(TO_DATE('25-DEC-04','dd-MON-yy'),'month ddth, YYYY')AS
Convert
FROM DUAL;

9. SELECT TO_CHAR(low_range, '$99999.99')AS LOW, TO_CHAR(high_range,


'$99999.99')AS HIGH
FROM d_packages;

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 25
10. SELECT TO_DATE('JUNE192004','fxMONTHDDYYYY') AS BIRTHDAY
FROM DUAL;
A common error when formatting dates is to omit the single quotation mark. The error message
is missing a right parenthesis. Demonstrate this error to students. Discuss with students why it
is important, from a business perspective, for a language to have built-in data conversion
capabilities.
Possible answers:
- International business must convert currency values.
- The date and time are recorded differently across the world. Military uses a 24-hour clock,
date formats are recorded as mm/dd/yyyy and as dd/mm/yyyy.
- Ability to present data in more readable format is important.
- Ability to enter data in one format and have the database application convert it to storage
format is important.
- Being able to convert data types makes the language more flexible.

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 26
Lesson 2 - General Functions

Lesson 2 - General Functions

Lesson Preparation
None.
What to Watch For
Students may be suffering from "information overload" at this point. Keep encouraging
practice and use the self-test software as a break and reinforcement. Ask students to generate
query examples and challenge the class.
Connections
Many of the functions students learned in this lesson, they do every day.
Ask: Have you ever gone to a store to buy a something you were looking for only to find out
that the store didn't have it? Have you been in the lunch line only to find out that your favorite
item was sold out? Did you choose something else? If you've ever had this experience, you
actually were doing a NVL2 or COALESCE function. If the first choice was null, choose the
second or the third.

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 27
A lot of the power of SQL is to emulate decisions that we need to make every day. We need
the date format changed to comply with how another country writes it. We need to issue
payroll checks that have currency signs instead of just numbers.
Ask students to draw parallels between the functions and syntax they are learning and why the
function was developed in the first place. After all, if no one ever needed to give a column
another name in a report, would aliases ever have been developed?

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 28
What Will I Learn?

What Will I Learn?

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 29
Why Learn It?

Why Learn It?

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 30
Tell Me / Show Me

Tell Me / Show Me

Tell Me / Show Me
Begin the lesson with a review question: How would you display today’s date as: 15 January
2003?

SELECT TO_CHAR(SYSDATE, 'dd Month RRRR')


FROM DUAL;

Students should be familiar with nested functions taught in mathematics classes. In the
example, ask students to list the order of processing.
Step 1: The hire date is going to have six months added to it.
Step 2: The first Friday following the future day will be identified.
Step 3: The default date format will be formatted to read and display the Friday in a format
similar to: Friday, December 18TH, 1987, and will appear in the output under the column
name "Next Evaluation."

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 31
Tell Me / Show Me

Tell Me / Show Me

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 32
Tell Me / Show Me

Tell Me / Show Me

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 33
Tell Me / Show Me

Tell Me / Show Me

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 34
Tell Me / Show Me

Tell Me / Show Me

Tell Me / Show Me
Students have not formally studied data types. Tell them that LONG is variable-length
character data up to 2 gigabytes in size.
The NVL2 sample code illustrates a SQL statement returning an employee's salary and income.
For employees who work on commission, the income is equivalent to the salary plus the salary
multiplied by the commission percentage. For those who do not work on commission, the
income is equivalent to the salary.

SELECT last_name, salary, NVL2(commission_pct, salary + (salary * commission_pct),


salary) income
FROM employees;

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 35
Tell Me / Show Me

Tell Me / Show Me

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 36
Try It / Solve It

Try It / Solve It

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 37
Try It / Solve It

Try It / Solve It

Try It / Solve It
Answers:
Encourage the students to use aliases to make the output more readable.
1. SELECT name, NVL2(end_date,'end in two weeks', SYSDATE)AS Promotion
FROM f_promotional_menus;
2. SELECT last_name,NVL(overtime_rate,0)AS "Overtime Status"
FROM f_staffs;
3. SELECT last_name, TO_CHAR(NVL(overtime_rate,5.00), '$9999.99')AS "Overtime Rate"
FROM f_staffs;
4. SELECT last_name, NVL(manager_id, 9999)
FROM f_staffs;

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 38
Try It / Solve It

Try It / Solve It

Try It / Solve It
Answers:
5. c
6.

7. Part 1: SELECT first_name||' '||last_name "Name", to_char(hire_date,'Month') "Anniversary


Month"
FROM employees;
Part 2: SELECT first_name||' '||last_name "Name",
nullif(to_char(hire_date,'Month'),'September') "Anniversary Month"
FROM employees;

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 39
8. SELECT first_name, NVL(specialty,'No Specialty')AS Specialty
FROM d_partners;

9. SELECT last_name, SUBSTR(phone, 4,10)


FROM d_clients;

Extension:
Show/discuss Demo: The Basics of Using Functions

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 40
Lesson 3 - Conditional Expressions

Lesson 3 - Conditional Expressions

Lesson Preparation
None.
What to Watch For
The CASE and DECODE functions need practice. Remind students to think of these functions
as IF-THEN-ELSE decision operations. Read the syntax to them in this way.

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 41
Connections
Other programming languages use similar IF-ELSE or IF-THEN-ELSE processes.
Understanding their function and use will make learning other programming languages easier.
Write the following statement from Java on the board and see if students can decipher it based
on the functions learned in this lesson. What will be printed out?
Answer: The program starts setting "b" to FALSE; the code asks...is "b" True? If it is True,
then print out "hello"; else print "goodbye."
boolean b;
b = false;
if(b)
{
System.out.println("hello");
}
else
{
System.out.println("goodbye");
}

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 42
What Will I Learn?

What Will I Learn?

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 43
Why Learn It?

Why Learn It?

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 44
Tell Me / Show Me

Tell Me / Show Me

Tell Me / Show Me
Begin this lesson with a review question from previous material. Ask students to write a
SELECT statement to show "No Comment" if an event_id on the D_PLAY_LIST_ITEMS
table does not have a comment.
Answer:
SELECT NVL(comments, 'No Comment')
FROM D_PLAY_LIST_ITEMS;

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 45
Tell Me / Show Me

Tell Me / Show Me

Tell Me / Show Me
Students will have difficulty distinguishing between CASE and DECODE. The CASE
expression is a more flexible version of the DECODE function. The CASE expression
complies with ANSI SQL; DECODE is specific to Oracle syntax.

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 46
Try It / Solve It

Try It / Solve It

Try It / Solve It
Answers:
1. SELECT name,ROUND(MONTHS_BETWEEN(SYSDATE, end_date),0) AS "Past
Promos"
FROM f_promotional_menus;

2. SELECT INITCAP(first_name) ||' ' ||INITCAP(last_name)||' '||'earns'||TO_CHAR(salary,


'$99999.99')||' ' ||'but wants ' ||TO_CHAR((salary + 3000),'$99999.99') as "Wish Salary"
FROM employees
WHERE last_name LIKE 'Abel';

3. SELECT id, title, duration,


DECODE(duration, '2 min', 'shortest', '10 min', 'longest')
AS "Play Times"
FROM d_songs;

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 47
4. SELECT last_name, department_id, salary,
CASE department_id WHEN 10 THEN salary*1.25
WHEN 90 THEN salary*1.50
WHEN 130 THEN salary*1.75
ELSE salary END As "No Change"
FROM employees;

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 48
Try It / Solve It

Try It / Solve It

Try It / Solve It
Answers:
5. SELECT first_name, last_name, manager_id, commission_pct, COALESCE(manager_id,
commission_pct, 99999) AS "Review"
FROM employees
WHERE department_id IN( 80,90);

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 49
Lesson 4 - Practice Exercises

Lesson 4 - Practice Exercises

Lesson Preparation
The practice exercises in Lesson 4 and Lesson 5 prepare students for the Lesson 5 Quiz
measuring the objectives for SQL functions -- case, character, number, date, conversion,
general, and conditional expressions. Students should complete all practices. Review answers
with students.
What to Watch For
The practice exercises are more challenging. Check for understanding.
Connections
None.

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 50
What Will I Learn?

What Will I Learn?

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 51
Why Learn It?

Why Learn It?

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 52
Tell Me / Show Me

Tell Me / Show Me

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 53
Tell Me / Show Me

Tell Me / Show Me

Try It / Solve It
Students will find these practices more challenging. Assist them in dissecting the problem into
the information needed and the order of operations for accomplishing the task. Encourage
students to use aliases to make the output more readable.
Answers:
1. SELECT first_name, last_name,zip
FROM f_customers
WHERE LENGTH(zip) < 10;
2. a. LPAD (CDN)
b. ROUND (DN)
c. TRUNC (DN)
d. LENGTH (C)
e. LAST_DAY (D)
f. INSTR (CDN)
g. CONCAT (CDN)

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 54
3. SELECT first_name, last_name, NVL(TO_CHAR(auth_expense_amt,'99999999'),'Not
Approved')As "Authorization Status"
FROM d_partners;

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 55
Tell Me / Show Me

Tell Me / Show Me

Try It / Solve It
Answers:
4. Jason and Jamie forgot that the data types of the NVL elements must be the same data type!
A TO_CHAR function is needed to convert the number overtime_rate to a character value.
SELECT first_name, last_name, NVL(TO_CHAR(overtime_rate, '9999999'),'no overtime')As
"Payrate"
FROM f_staffs;

5. SELECT first_name, last_name, birthdate, SUBSTR(TO_CHAR(birthdate,'Month


dd,YYYY'), 1,9)|| ' 2005' As "Send Card"
FROM f_staffs;

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 56
Try It / Solve It

Try It / Solve It

Try It / Solve It
Answers:
6. ___T__a. TO_CHAR is required to convert the date '03-JUN-04' to June 3, 2004
___F__b. TO_NUMBER will convert '23-NOV-02' to use with ADD_MONTHS
___F__c. TO_DATE will convert SYSDATE to today's date
___F__d. TO_NUMBER('101', '$99999') will convert 101 to a number
___T__e. TO_CHAR(salary, '$9999.99') will convert number to character format
___T__f. TO_NUM(varchar2 column) will convert character data to a number
___T__g. TO_CHAR(SYSDATE, 'Month fmdd, yyyy') will format the date

7. SELECT first_name, last_name,ROUND(MONTHS_BETWEEN(SYSDATE,hire_date)/12


,1)AS "Years Worked"
FROM employees;

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 57
Try It / Solve It

Try It / Solve It

Try It / Solve It
Answers:
8. SELECT SUBSTR(address, -5,5)AS "Old Zip", SUBSTR(address, -5,5)||'-2345' AS "New
Zip"
FROM d_venues
WHERE ID= 105;
9. SELECT ROUND(SYSDATE, 'YEAR') AS YEAR, ROUND(SYSDATE, 'MONTH')AS
MONTH, TRUNC(SYSDATE, 'YEAR')AS YEAR, TRUNC(SYSDATE, 'MONTH')AS
MONTH
FROM DUAL;
10. SELECT name, ROUND((SYSDATE - START_DATE),0) AS "Days"
FROM f_promotional_menus;
11. SELECT LOWER(CONCAT(LOWER(SUBSTR(job_title, 1, 5)),'* ' )) "Job Description"
FROM jobs;
12. The expression will be evaluated from the innermost expression outward.

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 58
Lesson 5 - Practice Exercises

Lesson 5 - Practice Exercises

Lesson Preparation
The practice exercises are challenging. Students should achieve 70% or better on the quiz.
Provide enough time to review for the quiz. After the quiz, review the most difficult questions.
Encourage students to practice their skills using self-test software.
Give a brief overview of what's next:
Section 3, Lesson 1, "Career Explorations" -- develop a thirteenth-year plan and look into what
you want your future to be.
Review Section 2 of the Study Guide and Vocabulary with students.
Review practice exercise answers with students. Focus on the method for solving the problem,
not just the answer.
What to Watch For
Students are asked to apply concepts learned in the practice exercises. The difficulty of the
problems may be challenging for some students.
Provide enough time to review for the quiz. After the quiz, review the most difficult questions.
Connections
None.

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 59
What Will I Learn?

What Will I Learn?

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 60
Why Learn It?

Why Learn It?

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 61
Tell Me / Show Me

Tell Me / Show Me

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 62
Try It / Solve It

Try It / Solve It

Try It / Solve It
Answers:
These are just a few example queries. Students should run their queries against the database to
check their accuracy.
1. SELECT employee_id, last_name, department_id
FROM employees
WHERE LOWER(last_name) = 'ernst';
SELECT employee_id, CONCAT(first_name, last_name) NAME,
job_id, LENGTH (last_name),
INSTR(last_name, 'i') "Contains 'i'?"
FROM employees
WHERE SUBSTR(job_id, 4) = 'PRES';
SELECT ROUND(45.923,2), ROUND(45.923,0),
ROUND(45.923,-1)
FROM DUAL;

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 63
Try It / Solve It

Try It / Solve It

Try It / Solve It
Answers:
2. SELECT UPPER(CONCAT(cd_number, title))
FROM d_cds WHERE cd_number = 94;
SELECT UPPER(cd_number)||UPPER(title)
FROM d_cds WHERE cd_number = 94;

3. ___F__a. LOWER converts numbers to lowercase.


___F__b. Use RPAD to move numbers to the right to place an * on the left.
___F__c. TRIM can be used to trim one or more characters from a string.
___T__d. LENGTH returns a number.
___F__e. SUBSTR is used to substitute one string for another.
___T__f. CONCAT is limited to using two parameters.
___T__g. TRUNC will return zero decimal places if a decimal value is omitted.

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 64
4. SELECT TO_CHAR(cost, '$99999.99')
FROM d_events;

5. SELECT '*'||ID AS "New Id"


FROM f_staffs WHERE LENGTH(ID) = 1;

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 65
Try It / Solve It

Try It / Solve It

Try It / Solve It
Answers:
6. SELECT TO_DATE('December 15, 1995', 'Month dd, RRRR')
FROM DUAL;

7. SELECT LOWER(TO_CHAR(TO_DATE('19-JUN-04','DD-MON-YY'), 'ddth "of" Month


YYYYsp'))
FROM DUAL ;

8. SELECT SUBSTR('Oracle Academy', -7,7)


FROM DUAL;

9. There is nothing wrong with the syntax; there is no matching data in the database.

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 66
Try It / Solve It

Try It / Solve It

Try It / Solve It
Answers:
10. _C__a. To convert varchar2 to number data
_C__b. To format a date to other than the default format
_C__c. To convert a date such as June 19, 2000 to default format
_N__d. To format a number to appear as currency
_G__e. To substitute a value in a table for null
_CE_f. To do an IF-THEN-ELSE statement
_G__g. To find the first not null expression among a list of expressions
_C__h. To replace a section of a string with another string
_C__i. To format a 20th-century date
_C__j. To present output all in uppercase
_C__k. To find the numeric position of a character in a string
_D__l. To find the last day of the month

Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 67
Copyright © Oracle, 2004. All rights reserved.

Database Programming - Section 2


Page 68

Potrebbero piacerti anche