lec 04: sql functions sayan unankard 1/2558 5 › sayan › it332 › slides ›...

70
www.itsci.mju.ac.th/sayan LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5

Upload: others

Post on 24-Jun-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

www . i t s c i .m ju . ac . t h / sayan

LEC 04: SQL FUNCTIONS SAYAN UNANKARD1/2558

5

Page 2: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

CONVERSION FUNCTIONS

Implicit data typeconversion

Explicit data typeconversion

Data typeconversion

2

Page 3: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

Oracle server สามารถเปลยนแปลงคาไดโดยอตโนมต ดงน

IMPLICIT DATA TYPE CONVERSION

NUMBERVARCHAR2 or CHAR

DATEVARCHAR2 or CHAR

ToFrom

VARCHAR2 or CHARNUMBER

VARCHAR2 or CHARDATE

ToFrom

3

Page 4: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

EXPLICIT DATA TYPE CONVERSION

NUMBER CHARACTER

TO_CHAR

TO_NUMBER

DATE

TO_CHAR

TO_DATE

4

Page 5: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

USING THE TO_CHAR FUNCTION WITH DATES

รปแบบของ format_model• ตองอยภายในเครองหมาย single quotation marks

• เปน case-sensitive

• สามารถก าหนดดวยรปแบบวนทตามทตองการได

• มค าสง fm element เพอจดการชองวางหรอเลขศนยทน าหนา ออกไปได เชน 01/03/2008

TO_CHAR(date, 'format_model ')

5

Page 6: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

ELEMENTS OF THE DATE FORMAT MODEL

Three-letter abbreviation of the day of the weekDY

Full name of the day of the weekDAY

Two-digit value for the monthMM

Full name of the monthMONTH

Three-letter abbreviation of the monthMON

Numeric day of the monthDD

Full year in numbersYYYY

Year spelled out (in English)YEAR

ResultElement

6

Page 7: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

รปแบบของเวลา

การแทรกขอความเขาไปในรปแบบ โดยอยภายในเครองหมาย double quotation marks

การสะกดค าตอทายของตวเลข

ELEMENTS OF THE DATE FORMAT MODEL

DD "of" MONTH 12 of OCTOBER

ddspth fourteenth

HH24:MI:SS AM 15:45:32 PM

7

Page 8: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SELECT last_name,TO_CHAR(hire_date, 'fmDD Month YYYY')AS HIREDATE

FROM employees;

USING THE TO_CHAR FUNCTION WITH DATES

8

Page 9: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

USING THE TO_CHAR FUNCTION WITH NUMBERS

สามารถจดการรปแบบของตวเลข โดยสามารถใชค าสง TO_CHAR function

Prints a decimal point.

Prints a comma as a thousands indicator,

Places a floating dollar sign$

Uses the floating local currency symbolL

Represents a number9

Forces a zero to be displayed0

ResultElement

TO_CHAR(number, ‘format_model’' )

9

Page 10: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SELECT TO_CHAR(salary, '$99,999.00') SALARYFROM employeesWHERE last_name = 'Ernst';

USING THE TO_CHAR FUNCTION WITH NUMBERS

to_char(1210.73, '9999.9') would return '1210.7'

to_char(1210.73, '9,999.99') would return '1,210.73'

to_char(1210.73, '$9,999.00') would return '$1,210.73'

to_char(21, '000099') would return '000021'

10

Page 11: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

ฟงกชนสามารถทจะเรยกใช ซอน ๆ กนได

การประมวลผลจะเรยกจากระดบขางในกอน

NESTING FUNCTIONS

F3(F2(F1(col,arg1),arg2),arg3)

Step 1 = Result 1

Step 2 = Result 2

Step 3 = Result 3

11

Page 12: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SELECT last_name,UPPER(CONCAT(SUBSTR (LAST_NAME, 1, 8), '_US'))

FROM employeesWHERE department_id = 60;

NESTING FUNCTIONS

12

Page 13: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

NVL FUNCTION

การแปลงคาวางใหกลายเปนคาตามทตองการ• ชนดของขอมลทสามารถใชในฟงกชนนไดคอ date, character, และ number

• ตวอยางการเรยกใช โดยทชนดของขอมลทเปลยนตองตรงกบขอมลเดม

• NVL(commission_pct,0)

• NVL(hire_date,'01-JAN-08')

• NVL(job_id,'No Job Yet')

13

Page 14: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SELECT last_name, salary, NVL(commission_pct, 0),

(salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL

FROM employees;

USING THE NVL FUNCTION

1

1 2

2

14

Page 15: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

CONDITIONAL EXPRESSIONS

ในค าสง SQL สามารถก าหนดเงอนไขในการแสดงผล โดยใชค าสง IF-THEN-ELSE

ประกอบดวย 2 วธคอ• CASE expression

• DECODE function

15

Page 16: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SIMPLE CASE

Simple CASE

Syntax SELECT Field, Field, CASE Field | Expression WHEN value THEN result WHEN value THEN result ELSE result END As alias FROM Table

Examples

Select Firstname, Case Gender When 'F' Then 'woman' When 'M' Then 'man' End As Sex From Members

16

Page 17: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SIMPLE CASE EXAMPLE

Select Artistname, Region,

Case Region

When 'NC' Then 'South'

When 'VA' Then 'South'

When 'IL' Then 'Midwest'

When 'VT' Then 'New England'

Else 'Somewhere Else'

End As Area

From Artists

17

Page 18: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

Artistname Region Area -------------- --------------- -------------The Neurotics NC SouthLouis Holiday IL MidwestWord IN Somewhere ElseSonata VA SouthThe Bullets TX Somewhere ElseJose MacArthur CA Somewhere ElseConfused GA Somewhere ElseThe Kicks NY Somewhere ElseToday ONT Somewhere Else21 West Elm VT New EnglandHighlander OH Somewhere Else

SIMPLE CASE EXAMPLE

18

Page 19: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SWITCHED CASE

Switched CASE

Syntax SELECT Field, Field, CASE WHEN Field | Expression comparison Value | Field | Expression THEN result WHEN Field | Expression comparison Value | Field | Expression THEN result ELSE result END As alias FROM Table

Select TrackNum, TrackTitle, LengthSeconds, Case When TrackNum=1 And LengthSeconds<240 Then 'Short 1st' When TrackNum=1 And LengthSeconds>480 Then 'Long 1st' Else 'Another Track' End as Eval From Tracks Where TrackNum<3

19

Page 20: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SWITCHED CASE EXAMPLE

Select TrackNum, TrackTitle, LengthSeconds,Case

When TrackNum=1 And LengthSeconds<240 Then 'Short 1st Track'When TrackNum=1 And LengthSeconds>480 Then 'Long 1st Track'Else 'Another Track'

End as EvalFrom Tracks Where TrackNum<3

20

Page 21: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SWITCHED CASE EXAMPLE

TrackNum TrackTitle LengthSeconds Eval------------- ---------- ------------------- ------------1 Bob's Dream 185 Short 1st Track2 My Wizard 233 Another Track1 Fat Cheeks 352 Another Track1 Hottie 233 Short 1st Track2 GoodtimeMarch 293 Another Track2 Rocky and Natasha 283 Another Track1 Violin Sonata

No.1 in D Major 511 Long 1st Track2 Violin Sonata

No. 2 in A Major 438 Another Track1 Song 1 285 Another Track2 Song 2 272 Another Track1 I Don't Know 201 Short 1st Track2 What's the Day 332 Another Track

21

Page 22: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

DECODE FUNCTION

การใชค าสง DECODE เพอก าหนดเงอนไขไดเชนเดยวกบค าสง CASE

DECODE(col|expression, search1, result1 [, search2, result2,...,][, default])

22

Page 23: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SELECT last_name, job_id, salary,DECODE(job_id, 'IT_PROG', 1.10*salary,

'ST_CLERK', 1.15*salary,'SA_REP', 1.20*salary,

salary)REVISED_SALARY

FROM employees;

USING THE DECODE FUNCTION

…23

Page 24: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SELECT last_name, salary,DECODE (TRUNC(salary/2000, 0),

0, 0.00,1, 0.09,2, 0.20,3, 0.30,4, 0.40,5, 0.42,6, 0.44,

0.45) TAX_RATEFROM employeesWHERE department_id = 80;

USING THE DECODE FUNCTION

ตวอยางการแสดงคาภาษ จากเงอนไขทก าหนดจากเงนเดอน เฉพาะแผนกหมายเลข 80

24

Page 25: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

WHAT ARE GROUP FUNCTIONS?

ฟงกชนกลมคอ ฟงกชนทไดจากการประมวลผลขอมลหลาย ๆ แถวEMPLOYEES

Maximum salary in EMPLOYEEStable

25

Page 26: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

TYPES OF GROUP FUNCTIONS

• AVG

• COUNT

• MAX

• MIN

• STDDEV

• SUM

• VARIANCE

Group

functions

26

Page 27: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SELECT group_function(column), ...FROM table[WHERE condition][ORDER BY column];

GROUP FUNCTIONS: SYNTAX

27

Page 28: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SELECT AVG(salary), MAX(salary),MIN(salary), SUM(salary)

FROM employeesWHERE job_id LIKE '%REP%';

USING THE AVG AND SUM FUNCTIONS

AVG คาเฉลย SUM คาผลรวม ซงจะใชกบขอมลตวเลขเทานน

28

Page 29: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SELECT MIN(hire_date), MAX(hire_date)FROM employees;

USING THE MIN AND MAX FUNCTIONS

MIN คานอยทสด MAX คามากทสด สามารถใชไดกบ ตวเลข ตวอกษร และ วนท ได

29

Page 30: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

USING THE COUNT FUNCTION

COUNT(*) นบจ านวนแถวขอมลทตรงเงอนไข ทก าหนด

COUNT(expr) นบจ ำนวนแถวทไมเปนคำวำง ส าหรบคอลมน expr

SELECT COUNT(commission_pct)FROM employeesWHERE department_id = 80;

SELECT COUNT(*)FROM employeesWHERE department_id = 50;

1

2

30

Page 31: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

COUNT(DISTINCT expr) นบจ านวนแถวทไมเปนคำวำง โดยไมรวมแถวทขอมลซ ำของคอลมนexpr

ตวอยางการนบจ านวนแผนกของพนกงาน ในตาราง EMPLOYEES โดยหากแผนกซ ากนจะนบเปน 1SELECT COUNT(DISTINCT department_id)FROM employees;

USING THE DISTINCT KEYWORD

31

Page 32: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

GROUP FUNCTIONS AND NULL VALUES

การใชฟงกชนกลมโดยไมมการประมวลผลคาวาง

หากตองการใหประมวลผลคาวางดวยสามารถใชฟงกชน NVL functions

SELECT AVG(commission_pct)FROM employees;

SELECT AVG(NVL(commission_pct, 0))FROM employees;

1

2

32

Page 33: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

CREATING GROUPS OF DATA

EMPLOYEES

4400

9500

3500

6400

10033

Average salary in EMPLOYEES table for

each department

33

Page 34: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

CREATING GROUPS OF DATA: GROUP BY CLAUSE SYNTAX

สามารถใชฟงกชนแบบกลม เพอประมวลผลขอมลเปนกลมยอย ๆ ได โดยระบค าสง GROUP BY clause.

SELECT column, group_function(column)FROM table[WHERE condition][GROUP BY group_by_expression][ORDER BY column];

34

Page 35: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

คอลมนทงหมดทถกเลอกใหแสดงผลในค าสง SELECT ไมรวมทถกใชใน ฟงกชนแบบกลม จะตองอยในค าสง GROUP BY clause

SELECT department_id, AVG(salary)FROM employeesGROUP BY department_id ;

USING THE GROUP BY CLAUSE

35

Page 36: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

การใชค าสง GROUP BY โดยไมมในคอลมนทเลอกแตอาจจะท าใหสบสนไดวาผลลพธทไดของแตละแถวเปนของแผนกอะไร

USING THE GROUP BY CLAUSE

SELECT AVG(salary)FROM employeesGROUP BY department_id ;

36

Page 37: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

GROUPING BY MORE THAN ONE COLUMN

EMPLOYEES Add the salaries in the EMPLOYEES

table for each job, grouped by

department.

37

Page 38: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SELECT department_id dept_id, job_id, SUM(salary)FROM employeesGROUP BY department_id, job_id ORDER BY department_id;

USING THE GROUP BY CLAUSE ON MULTIPLE COLUMNS

38

Page 39: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

ILLEGAL QUERIES USING GROUP FUNCTIONS

คอลมนทเลอกไมไดระบในสวนของ GROUP BY clause

SELECT department_id, COUNT(last_name)FROM employees;

SELECT department_id, job_id, COUNT(last_name)FROM employeesGROUP BY department_id;

A GROUP BY clause must be added to count the last names for each department_id.

Either add job_id in the GROUP BY or remove the job_id column from the SELECT list.

39

Page 40: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

ILLEGAL QUERIES USING GROUP FUNCTIONS

ไมสามารถใชเงอนไขฟงกชนกลม ในสวนของค าสง WHERE ไดอนญาตใหใชค าสง HAVING clause ในการก าหนดเงอนไขของฟงกชนกลม เทานน

SELECT department_id, AVG(salary)FROM employeesWHERE AVG(salary) > 8000GROUP BY department_id;

Cannot use the WHERE clause to restrict groups

40

Page 41: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

RESTRICTING GROUP RESULTS

EMPLOYEES

The maximum salary per

department when it is

greater than $10,000

41

Page 42: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SELECT column, group_functionFROM table[WHERE condition][GROUP BY group_by_expression][HAVING group_condition][ORDER BY column];

RESTRICTING GROUP RESULTS WITH THE HAVING CLAUSE

กรณทตองการใชค าสง HAVING clause สามารถใชก าหนดเงอนไขไดดงน1. แถวทถกจดกลม

2. ฟงกชนกลม

3. กลมขอมลทตรงกบเงอนไขจะถกแสดงผล

42

Page 43: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SELECT department_id, MAX(salary)FROM employeesGROUP BY department_idHAVING MAX(salary)>10000 ;

USING THE HAVING CLAUSE

43

Page 44: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SELECT job_id, SUM(salary) PAYROLLFROM employeesWHERE job_id NOT LIKE '%REP%'GROUP BY job_idHAVING SUM(salary) > 13000ORDER BY SUM(salary);

USING THE HAVING CLAUSE

44

Page 45: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SELECT MAX(AVG(salary))FROM employeesGROUP BY department_id;

NESTING GROUP FUNCTIONS

แสดงคาสงสดของคาเฉลยของเงนเดอนในแตละแผนก

45

Page 46: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

VIEW

Logically represents subsets of data from

one or more tables

View

Generates numeric valuesSequence

Basic unit of storage; composed of rows Table

Gives alternative names to objectsSynonym

Improves the performance of some queriesIndex

DescriptionObject

46

Page 47: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

WHAT IS A VIEW?EMPLOYEES table

47

Page 48: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

ADVANTAGES OF VIEWS

To restrict

data access

To make complex

queries easy

To provide data

independence

To present different

views of the same

data

48

Page 49: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SIMPLE VIEWS AND COMPLEX VIEWS

Yes

No

No

One

Simple Views

YesContain functions

YesContain groups of data

One or moreNumber of tables

Not alwaysDML operations through

a view

Complex ViewsFeature

49

Page 50: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

CREATING A VIEW

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view[(alias[, alias]...)]

AS subquery[WITH CHECK OPTION [CONSTRAINT constraint]][WITH READ ONLY [CONSTRAINT constraint]];

เปนการน าชดค าสง SQL ในการสรางวว

NOFORCE Creates the view only if the base tables exist (This is the default.)

สามารถใชค าสง SQL ทงแบบปกตและแบบซบซอน

50

Page 51: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

ตวอยางการสราง EMPVU80 view ซงประกอบดวยขอมลพนกงานในแผนกหมายเลข 80

การเรยกดโครงสรางของ วว ใน SQL*Plus โดยใชค าสง DESCRIBE

CREATING A VIEW

DESCRIBE empvu80

CREATE VIEW empvu80AS SELECT employee_id, last_name, salary

FROM employeesWHERE department_id = 80;

51

Page 52: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

การสรางววโดยใชนามแฝงของคอลมน

CREATING A VIEW

CREATE VIEW salvu50AS SELECT employee_id ID_NUMBER, last_name NAME,

salary*12 ANN_SALARYFROM employeesWHERE department_id = 50;

52

Page 53: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SELECT *FROM salvu50;

RETRIEVING DATA FROM A VIEW

53

Page 54: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

การแกไขวว EMPVU80 โดยใชค าสง CREATE OR REPLACE VIEW

การใชนามแฝงของคอลมน จะเรยงล าดบตามล าดบของคอลมนทถกเลอกในค าสง SQL ของควร

MODIFYING A VIEW

CREATE OR REPLACE VIEW empvu80(id_number, name, sal, department_id)

AS SELECT employee_id, first_name || ' ' || last_name, salary, department_id

FROM employeesWHERE department_id = 80;

54

Page 55: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

CREATING A COMPLEX VIEW

การสรางววแบบซบซอน โดยประกอบดวยฟงกชนกลม

CREATE OR REPLACE VIEW dept_sum_vu(name, minsal, maxsal, avgsal)

AS SELECT d.department_name, MIN(e.salary), MAX(e.salary),AVG(e.salary)

FROM employees e JOIN departments dON (e.department_id = d.department_id)GROUP BY d.department_name;

55

Page 56: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

DENYING DML OPERATIONS

ขอควรระวงคอจะตองแนใจวาไมมการใชค าสง WITH READ ONLY ในสวนของการสรางวว

ซงจะท าใหผลลพธของววใน Oracle server เกดขอผดพลาดได

56

Page 57: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

CREATE OR REPLACE VIEW empvu10(employee_number, employee_name, job_title)

AS SELECT employee_id, last_name, job_idFROM employeesWHERE department_id = 10WITH READ ONLY ;

DENYING DML OPERATIONS

57

Page 58: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

REMOVING A VIEW

การลบวว ซงจะไมกระทบกบขอมลทอยในตาราง สามารถลบววได เพราะววเปนเพยงสวนทใชในการเลอกขอมลจากตารางจรง มาเทานน

DROP VIEW view;

DROP VIEW empvu80;

58

Page 59: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SEQUENCES

Logically represents subsets of data from

one or more tables

View

Generates numeric valuesSequence

Basic unit of storage; composed of rows Table

Gives alternative names to objectsSynonym

Improves the performance of some queriesIndex

DescriptionObject

59

Page 60: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SEQUENCES

A sequence:• สามารถสรางล าดบตวเลขอตโนมต

• อยในรปแบบทแบงปนขอมล

• สามารถน าไปสรางเปน primary key

• สามารถใชแทนรหสในโปรแกรมได

• เพมความเรวในการจดการหนวยความจ าได

1

2 4

3 5

6 8

7

10

9

60

Page 61: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

CREATE SEQUENCE STATEMENT : SYNTAX

รปแบบการสรางตวเลขเรยงล าดบอตโนมต

CREATE SEQUENCE sequence[INCREMENT BY n][START WITH n][{MAXVALUE n | NOMAXVALUE}][{MINVALUE n | NOMINVALUE}][{CYCLE | NOCYCLE}][{CACHE n | NOCACHE}];

61

Page 62: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

CREATING A SEQUENCE

ตวอยางการสราง ตงชอวา DEPT_DEPTID_SEQ เพอใชเปนคยหลกของตาราง DEPARTMENTS

ไมอนญาตใหใช CYCLE

CREATE SEQUENCE dept_deptid_seqINCREMENT BY 10START WITH 120MAXVALUE 9999NOCACHENOCYCLE;

62

Page 63: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

NEXTVAL AND CURRVAL PSEUDOCOLUMNS

NEXTVAL คนคาตวเลขตอไป ของล าดบ ซงจะเปนคาทไมซ า ส าหรบ ทกๆ กลมผใช

CURRVAL คนคาล าดบปจจบน

NEXTVAL จะตองถกก าหนดคากอน ทคาของ CURRVAL จะถกก าหนด

63

Page 64: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

USING A SEQUENCE

ตวอยางการเพมแถวขอมลใหม โดยใชตวเลขล าดบ

การเรยกดคาปจจบนของ ตวเลขล าดบ DEPT_DEPTID_SEQ

INSERT INTO departments(department_id, department_name, location_id)

VALUES (dept_deptid_seq.NEXTVAL, 'Support', 2500);

SELECT dept_deptid_seq.CURRVALFROM dual;

64

Page 65: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

CACHING SEQUENCE VALUES

การจดการคาแบบเรยงล าดบในหนวยความจ าจะท าใหการเขาถงขอมลไดเรวขน

ชองวางระหวางตวเลขสามารถเกดขนไดจาก• rollback

• ระบบลมเหลว

• ถกน าไปใชในตารางอน

65

Page 66: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

MODIFYING A SEQUENCE

ALTER SEQUENCE dept_deptid_seqINCREMENT BY 20MAXVALUE 999999NOCACHENOCYCLE;

การแกไขคาทเพมขน คาสงสด คาต าสด การวนคา และ การจดการหนวยความจ า

66

Page 67: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

GUIDELINES FOR MODIFYING A SEQUENCE

DROP SEQUENCE dept_deptid_seq;

จะท าการแกไขไดจะตองมการก าหนดสทธ ใหสามารถใชค าสง ALTER sequence ได

ตวเลขถดไปเทานนทจะมผล หลงจากใชค าสงแกไข ไมสามารถจดการกบคาทผานมาแลวได

หากตองการเรมตนคาใหม จะตองท าการลบออกกอน และ สรางใหม

การลบ sequence โดยใชค าสง DROP

67

Page 68: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

SYNONYMS

Logically represents subsets of data from

one or more tables

View

Generates numeric valuesSequence

Basic unit of storage; composed of rows Table

Gives alternative names to objectsSynonym

Improves the performance of some queriesIndex

DescriptionObject

68

Page 69: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

CREATING A SYNONYM FOR AN OBJECT

CREATE [PUBLIC] SYNONYM synonymFOR object;

การเขาถงวตถตาง ๆ ใน Oracle สามารถก าหนดใหเรยกใชไดงายขนโดยใชนามแฝง หรอ ชอเหมอนของวตถนน ๆ• สรางการอางอง และ การเขาถงตารางใหงายขนส าหรบบคคลอน ๆ

• เปนการตงชอใหสนลง

69

Page 70: LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5 › sayan › it332 › slides › Ch04_SQLFunctions.pdf · 2017-09-08 · LEC 04: SQL FUNCTIONS SAYAN UNANKARD 1/2558 5. CONVERSION

CREATING AND REMOVING SYNONYMS

CREATE SYNONYM d_sumFOR dept_sum_vu;

DROP SYNONYM d_sum;

การสรางชอวว DEPT_SUM_VU ใหสนลง

การลบ synonym

70