SQL

หัวข้อพิเศษไอที, SQL 1 Comment »

4.ฟังก์ชันตัวอักขระ (Character functions)
เป็นฟังก์ชันที่ใช้สำหรับจัดการข้อมูลอักขระ โดยที่มีตัวแปรจริงเป็นชนิดอักขระหรือชนิดตัวเลข และให้ผลการคำนวณเป็นค่าอักขระหรือค่าตัวเลข
ตัวอย่างตาราง CHARACTERS

LASTNAME FIRSTNAME M CODE
PURVIS KELLY A 32
TAYLOR CHUCK J 67
CHRISTINE LAURA C 65
ADAMS FESTER M 87
COSTALES ARMANDO A 77
KONG MAJOR G 52

4.1 ฟังก์ชัน CHR เป็นฟังก์ชันสำหรับเปลี่ยนนิพจน์อักขระให้เป็นรหัส ASCII ค่าที่ได้จากฟังก์ชันนี้จะเป็นค่ารหัส ASCII
ตัวอย่าง ถ้าต้องการเปลี่ยนค่าตัวเลขในคอลัมน์ CODE ให้เป็นตัวอักษร
SELECT CODE, CH(CODE)
FROM CHARACTERS;
ผลของคำสั่ง

CODE CH
32  
67 C
65 A
87 W
77 M
52 4

4.2 ฟังก์ชัน CONCAT (X,Y) เป็นฟังก์ชันในการรวมอักขระ (X และ Y) เข้าด้วยกัน
ตัวอย่าง ถ้าต้องการรวมคอลัมน์ FIRSINAME กับ LASTNAME ไว้ด้วยกัน
SELECT CONCAT(FIRSTNAME, LASTNAME) “FIRST AND LAST NAMES”
FROM CHARACTERS;
ผลของคำสั่งจะได้นำคอลัมน์ FIRSTNAME และ LASTNAME มารวมกันแสดงให้เห็นในคอลัมน์ FIRST AND LASTNAMES

FIRST AND LAST NAMES
KELLY PURVIS
CHUCK TAYLOR
LAURA CHRISTINE
FESTER ADAMS
ARMANDO COSTALES
MAJOR KONG

4.3 ฟังก์ชัน INITCAP () เป็นฟังก์ชันที่เปลี่ยนค่าตัวอักขระ (string) ให้ตัวแรกเป็นอักขระตัวใหญ่แล้วตามด้วยอักขระตัวเล็ก
ถ้าต้องการเปลี่ยนให้เป็นอักษรตัวใหญ่ในคอลัมน์ FIRSTNAME
SELECT FIRSTNAME BEFORE, INITCAP(FIRSTNAME) AFTER
FROM CHARACTERS;
ผลของคำสั่งจะทำการเปลี่ยน

BEFORE AFTER
KELLY Kelly
CHUCK Chuck
LAURA Laura
FESTER Fester
ARMANDO Armando
MAJOR Major

4.4 ฟังก์ชัน LOWER () and UPPER ()
ฟังก์ชัน LOWER () เป็นฟังก์ชัน ที่เปลี่ยนตัวอักขระ () เป็นอักขระตัวเล็ก
ฟังก์ชัน UPPER () เป็นฟังก์ชัน ที่เปลี่ยนตัวอักขระ () เป็นอักขระตัวใหญ่
ตัวอย่าง ถ้าต้องการเปลี่ยนแปลงตัวอักขระในคอลัมน์ FIRSTNAME จากอักขระตัวเล็กให้เป็น
อักขระตัวใหญ่ทุกแถว ถ้าใช้คำสั่ง UPDATE ดังนี้
UPDATE CHARACTERS
SET FIRSTNAME = ‘kelly’
WHERE FIRSTNAME = ‘KELLY’;
ผลของคำสั่งจะทำการเปลี่ยนแปลงข้อมูลได้คำสั่งละ 1 แถวเท่านั้น

1 rows update.

 จากตัวอย่างถ้าใช้ฟังก์ชัน LOWER หรือ UPPER ในการเปลี่ยนแปลงตัวอักขระจะใช้คำสั่งเพียงครั้งเดียวก็สามารถเปลี่ยนแปลงข้อมูลได้ทุกแถวดังนี้
SELECT FIRSTNAME, UPPER(FIRSTNAME), LOWER(FIRSTNAME)
FROM CHARACTERS;
ผลของคำสั่งจะทำการเปลี่ยนแปลงข้อมูลในคอลัมน์ FIRSTNAME ให้เป็นอักษรตัวใหญ่และเล็กตามลำดับดังนี้

FIRSTNAME UPPER(FIRSTNAME) LOWER(FIRSTNAME}
Kelly KELLY kelly
CHUCK CHUCK chuck
LAURA LAURA laura
FESTER FESTER fester
ARMANDO ARMANDO armando
MAJOR MAJOR major

4.5 ฟังก์ชัน REPLACE (,X,Y) เป็นฟังก์ชันในการแทนค่าอักขระ X โดยการค้นหาตัวอักขระที่ต้องการแทนที แล้วแทนที่ด้วยอักขระ Y ที่ต้องการ
ตัวอย่าง ถ้าต้องการค้นหาอักขระ ST โดยไม่แทนที่ด้วยอักขระใดๆ
คำสั่งต้องการหาตัวอักษร ST ในคอลัมน์ LASTNAME โดยไม่ต้องแทนที่ด้วยตัวอักษรใด
SELECT LASTNAME, REPLACE(LASTNAME, ‘ST’) REPLACEMENT
FROM CHARACTERS;
ผลของคำสั่งจะทำให้ในแถวที่ 3 และแถวที่ 6 ที่มีคอลัมน์ LASTNAME ที่มีอักษร ST อยู่จะถูกตัดทิ้งไป

LASTNAME REPLACEMENT
PURVIS PURVIS
TAYLOR TAYLOR
CHRISTINE CHRIINE
ADAMS ADAMS
COSTALES COALES
KONG KONG

ตัวอย่าง ถ้าต้องการหาตัวอักษร ST ในคอลัมน์ LASTNAME แล้วแทนที่ด้วย **
SELECT LASTNAME, REPLACE(LASTNAME, ‘ST’, ‘**’) REPLACEMENT
FROM CHARACTERS;
ผลของคำสั่งจะทำให้ในแถวที่ 3 และแถวที่ 6 ในคอลัมน์ LASTNAME ที่มีอักษร ST อยู่จะถูกแทนที่ด้วย **

LASTNAME REPLACEMENT
PURVIS PURVIS
TAYLOR TAYLOR
CHRISTINE CHRI**INE
ADAMS ADAMS
COSTALES CO**ALES
KONG KONG

4.6 ฟังก์ชัน SUBSTR (,x,y) เป็นฟังก์ชันที่นำตัวอักษร () ในตำแหน่งที่ x
ตัวอย่าง ถ้าต้องกแสดงอักษรตั้งแต่ตำแหน่งที่ 2 มาแสดง 3 ตำแหน่ง ของคอลัมน์ FIRSTNAME
SELECT FIRSTNAME, SUBSTR(FIRSTNAME,2,3)
FROM CHARACTERS;
ผลของคำสั่งจะเห็นว่าในคอลัมน์ FIRSTNAME จะแสดงอักษรออกมา 3 ตัว แม้แต่ชื่อคอลัมน์ก็จะแสดงเพียง 3 ตัวเช่นเดียวกัน

FIRSTNAME SUB
Kelly Ell
CHUCK HUC
LAURA AUR
FESTER EST
ARMANDO RMA
MAJOR AJO

ตัวอย่าง ถ้าต้องการให้แสดงตั้งแต่ตัวอักษรในตำแหน่งที่ 3 โดยไม่จำกัดว่าให้แสดงก็ตัวอักษร
SELECT FIRSTNAME, SUBSTR(FIRSTNAME,3)
FROM CHARACTERS;
ผลของคำสั่งจะแสดงอักษรในคอลัมน์ FIRSTNAME ตั้งแต่ตัวที่ 3 ทั้งหมด

FIRSTNAME SUBSTR(FIRSTN
Kelly Lly
CHUCK UCK
LAURA URA
FESTER STER
ARMANDO MANDO
MAJOR JOR

SQL

หัวข้อพิเศษไอที, SQL No Comments »

3.ฟังก์ชันคณิตศาสตร์ (Arithmetic functions)
เป็นกลุ่มคำสั่งที่เกี่ยวกับการคำนวณทางเลขคณิต
ตัวอย่าง ตารางNUMBERS;

A B
3.1415 4
-45 .707
5 9
-57.667 42
15 55
-7.2 5.3

3.1 ฟังก์ชัน ABS(X)เป็นฟังก์ชันในการหาค่าสมบูรณ์ของ X
ต้องการหาค่าสมบูรณ์ในคอลัมน์ A
SELECT ABS(A) ABSOLUTE_VALUE
FROM NUMBERS;
ผลของคำสั่ง

ABSOLUTE_VALUE
3.1415
45
5
57.667
15
7.2

3.2 ฟังก์ชัน CEIL(X) and FLOOR(X)
ฟังก์ชัน CEIL (X) เป็นฟังก์ชันที่ให้ค่าตัวเลขจำนวนเต็มที่มีค่ามากว่าหรือเท่ากับค่าในคอลัมน์ (X)
ฟังก์ชัน FLOORเป็นฟังก์ชันที่ให้ค่าตัวเลขจำนวนเต็มที่พิจารณาจากค่าในคอลัมน์ X ถ้าหลังจุดทศนิยมมีค่ามากว่า 5 ก็จะให้ค่าเลขจำนวนเต็มที่มากขึ้น แต่ถ้าหลังจุดทศนิยมมีค่าน้อยกว่า 5 จะให้ค่าตัวเลขที่มีค่าน้อยลง
ตัวอย่าง ถ้าต้องการหาค่าตัวเลขจำนวนเต็มที่มีค่ามากกว่าหรือเท่ากับค่าในคอลัมน์ B
SELECT B, CEIL(B) CEILING
FROM NUMBERS;
ผลของคำสั่งจะได้คอลัมน์ CEILING ที่แสดงตัวเลขจำนวนเต็มที่มีค่ามากกว่าหรือเท่ากับค่าในคอลัมน์ B

B CEILING
4 4
.707 1
9 9
42 42
55 55
5.3 6

ตัวอย่าง ถ้าต้องการหาค่าตัวเลขจำนวนเต็มในคอลัมน์ A โดยถ้าหลังจุดทศนิยมมีอยู่มากกว่า 5 ก็จะให้ค่าเลขจำนวนเต็มที่มากขึ้น แต่ถ้าหลังจุดทศนิยมมีค่าน้อยกว่า 5 ก็จะให้ค่าตัวเลขที่มีค่าน้อยลง
SELECT A, FLOOR(A) FLOOR
FROM NUMBERS;
ผลของคำสั่งจะได้คอลัมน์ FLOOR ที่มีค่ามากกว่า

A FLOOR
3.1415 3
.45 -45
5 5
-57.667 -58
15 15
-7.2 -8

3.3 ฟังก์ชัน COS(X), COSH(X), SIN(X), SINH(X), TAN(X), และ TANH(X) เป็นฟังก์ชันทางตรีโกณที่หาค่า cosine,hyperbolic cosine,sine,hyperbolic sine,tangent,hyperbolic tangent ที่มีค่า X เป็นองศาเรเดียน(radians,) โดย 360 degrees = 2 pile radians
ตัวอย่าง ถ้าต้องการหาค่า COS ของมุมในคอลัมน์ A
SELECT A, COS(A)
FROM NUMBERS;
ผลของคำสั่งจะได้ของ (A) ที่มีค่าดังนี้

A COS(A)
3.1415 -1
-45 .52532199
5 .28366219
-57.667 .437183
15 -.7596879
.7.2 .60835131

3.4 ฟังก์ชัน EXP (X)เป็นฟังก์ชันหาค่า e ยกกำลัง X
ตัวอย่าง ถ้าต้องการหาค่า e ยกกำลังของข้อมูลในคอลัมน์ A
SELECT A, EXP(A)
FROM NUMBERS;
ผลของคำสั่งจะได้คอลัมน์ EXP(A) ที่เป็นข้อมูลในข้อมูลคอลัมน์ A e ยกกำลังตัวเลข

A EXP(A)
3.1415 23.138549
-45 2.863E-20
5 148.41316
-57.667 9.027E-26
15 3269017.4
.7.2 .00074659

3.5 ฟังก์ชัน LN(X) และ LOG(X)
ฟังก์ชัน LN เป็นการหาค่า natural log ของ X
ฟังก์ชัน LOG เป็นการหาค่า log ฐาน10 ของ X
ตัวอย่าง ถ้าต้องการหา natural log ของคอลัมน์ A
SELECT A, LN(A)
FROM NUMBERS;
ผลของคำสั่งจะเกิด ERROR ขึ้นเนื่องจากแถวที่ 2 และ 4 ของตาราง NUMBERS มีค่าเป็นลบ ซึ่งถ้าข้อมูลมีค่าเป็นลบจะหาค่าไม่ได้
ERROR:
ORA-01428: argument ‘-45’ is out of range
จากตัวอย่างถ้าทำการยกกำลัง 2 ข้อมูลในคอลัมน์ A ค่าของข้อมูลที่เป็นลบอยู่เมื่อถูกยกกำลัง 2 จะกลายเป็นบวกจากนั้นจึงทำการหาค่า LN ข้อมูลในคอลัมน์ A
SELECT A, LN(ABS(A))
FROM NUMBERS;
ผลของคำสั่งในคอลัมน์ LN (ABS(A) จะได้ค่า natural log ที่เกิดจากคอลัมน์ A ยกกำลัง 2

A LN (ABS(A))
3.1415 1.1447004
-45 3.8066625
5 1.6094379
-57.667 4.0546851
15 2.7080502
.7.2 1.974081

จะหาค่า Log ฐาน 10 ในคอลัมน์ B จากตาราง NUBMERS
SELECT B, LOG(B, 10)
FROM NUMBERS;
ผลของคำสั่งในคอลัมน์ LOG(B,10) จะให้ค่า log ฐาน 10 ของคอลัมน์ B

B LOG(B,10)
4 1.660964
.707 -6.640962
9 1.0479506
42 .61604832
55 .57459287
5.3 1.3806894

3.6 ฟังก์ชัน MOD(X,Y) เป็นฟังก์ชันที่แสดงเศษที่เกิดข้อมูล X หารด้วย Y
ตัวอย่าง ถ้าต้องการหาเศษของ A หารด้วย B โดยแสดงคอลัมน์ A,B และคอลัมน์เศษที่เหลือ
SELECT A, B, MOD(A,B)
FROM NUMBERS;
ผลของคำสั่งจะได้คอลัมน์ MOD(A,B) เป็นคอลัมน์ที่แสดงเศษที่เกิดจากข้อมูลในคอลัมน์ A หารด้วย B

A B MOD(A,B)
3.1415 4 3.1415
-45 .707 -.459
5 9 5
-57.667 42 -15.667
15 55 15
-7.2 5.3 -1.9

3.7 ฟังก์ชัน POWER (X,Y) เป็นฟังก์ชันในการยกกำลัง โดย X เป็นเลขฐานและ Y จะเป็นเลขยกกำลัง
SELECT A, B, POWER(A,B)
FROM NUMBERS;
ผลของคำสั่งจะเกิด ERROR เพราะargument ในแถวที่ 2 ตัวที่เป็นเลขยกกำลังต้องมีค่าเป็นจำนวนเต็ม
ERROR:
ORA-01428: ARGUMENT ‘-45’ is out of range
จะทำให้เลขยกกำลังมีค่าเป็นเลขจำนวนเต็มบวกโดยใช้ฟังก์ชัน CEILก่อนแล้วจึงจะนำมายกกำลัง
SELECT A, CEIL(B), POWER(A,CEIL(B))
FROM NUMBERS;
ผลของคำสั่งในคอลัมน์ CELI (B) เป็นค่าของข้อมูลในคอลัมน์ B ที่มีค่าเป็นจำนวนเต็มและเมื่อยกกำลังแล้วจะมีค่าปรากฎในคอลัมน์ POWER (A,CEIL(B)

A CEIL(B) POWER(A,CEIL(B))
3.1415 4 97.3976
-45 1 -45
5 9 1953125
-57.667 42 9.098E+73
15 55 4.842E+64
-7.2 6 139314.07

3.8 ฟังก์ชัน SIGN (X) เป็นฟังก์ชันที่
- ให้ค่าเป็น –1 ถ้า X มีค่าน้อยกว่า 0
- ให้ค่าเป็น 0 ถ้า X มีค่าเท่ากับ 0
- ให้ค่าเป็น 1 ถ้า X มีค่ามากกว่า 0
ตัวอย่าง ถ้าต้องการหาฟังก์ชัน SIGN ในการหาค่าข้อมูลในคอลัมน์ A
SELECT A, SIGN(A)
FROM NUMBERS;
ผลของคำสั่ง

A SIGN (A)
3.1415 1
-45 -1
5 1
-57.667 -1
15 1
-7.2 -1
0 0

ถ้าต้องการใช้ฟังก์ชัน SIGN ที่มีค่า 1 ในคอลัมน์ A
SELECT A
FROM NUMBERS
WHERE SIGN(A) =1;
ผลของคำสั่งจะแสดงข้อมูลในคอลัมน์ A ที่เมื่อใช้ฟังก์ชัน SIGN แล้วมีค่าเป็น 1

A
3.1415
5
15

3.9 ฟังก์ชัน SQRT (X) เป็นฟังก์ชันในการหาค่ารากที่ 2 ของ X
ตัวอย่าง ถ้าต้องการหารากที่ที่ 2 ของข้อมูลในคอลัมน์ A
SELECT A, SQRT(A)
FROM NUMBERS;
ผลของคำสั่งจะเกิด ERROR เนื่องจากไม่สามารถหาค่ารากที่ 2 ของตัวเลขที่มีค่าเป็นลบได้ดังนี้
ERROR:
ORA-01428: ARGUMENT ‘-45’ is out of range
ตัวอย่าง ถ้านำข้อมูลในคอลัมน์ A มาหาค่าสมบูรณ์แล้วจึงนำไปหาค่ารากที่ 2
SELECT ABS(A), SQRT(ABS(A))
FROM NUMBERS;
ผลของคำสั่งที่ได้จะได้ค่าสมบูรณ์ของข้อมูลในคอลัมน์ A และได้ค่ารากที่ 2 ของค่าสมบูรณ์ในคอลัมน์ A

ABS(A) SQRT(ABS(A))
3.1415 1.7724277
45 -16.7082039
5 12.236068
57.667 7.5938791
15 3.8729833
7.2 2.6832816
0 0

SQL

หัวข้อพิเศษไอที, SQL No Comments »

2.ฟังก์ชันวันและเวลา (Date and tune functions)
เป็นกลุ่มฟังก์ชันที่แสดงข้อมูลออกมาเป็นวันและเวลา
ตัวอย่าง ตารางPROJECT

TASK STARTDATE ENDDATE
KICKOFF MTG 01-APR-2001 01-APR-2001
TECH SURVEY 02-APR-2001 01-MAY-2001
USER MTGS 15-MAY-2001 30-MAY-2001
DESIGN WIDGET 01-JUN-2001 30-JUN-2001
CODE WIDGET 01-JUL-2001 02-SEP-2001
TESTING 03-SEP-2001 17-JAN-2002

2.1 ฟังก์ชัน ADD_MONTHS (X,Y) เป็นฟังก์ชันที่ต้องการบวกจำนวนเดือน (Y) เข้าไปในข้อมูล คอลัมน์ X
ตัวอย่าง ถ้าต้องการให้เลื่อนเวลาในคอลัมน์ ENDDATE ให้มีกำหนดเวลาเพิ่มขึ้นอีก 2 เดือน โดยให้ผลลัพธ์แสดงคอลัมน์ TASK, STARTDATE และคอลัมน์ ENDDATE ให้แสดงเป็นคอลัมน์ ORIGINALEND ส่วนกำหนดเวลาที่บวกเพิ่มไปอีก 2 เดือน ให้แสดงในคอลัมน์ ADD_MONTH
SELECT TASK,STARTDATE, ENDDATE ORIGINAL_END,
ADD_MONTHS(ENDDATE,2)
FROM PROJECT;
ผลของคำสั่งจะได้ ADD_MONTHS เพิ่มมาอีก 1 คอลัมน์ ซึ่งเกิดจากข้อมูลในคอลัมน์ ENDDATE บวกอีก 2 เดือน

TASK STARTDATE ORIGINAL ADD_MONTH
KICKOFF MTG 01-APR-2001 01-APR-2001 01-JUN-2001
TECH SURVEY 02-APR-2001 01-MAY-2001 01-JUN-2001
USER MTGS 15-MAY-2001 30-MAY-2001 30-JUN-2001
DESIGN WIDGET 01-JUN-2001 30-JUN-2001 31-AUG-2001
CODE WIDGET 01-JUL-2001 02-SEP-2001 02-NOV-2001
TESTING 03-SEP-2001 17-JAN-2002 17-MAR-2002

ตัวอย่าง ถ้าต้องการหาว่างานใดบ้างที่มีระยะการทำงานไม่เกิน 1 เดือนจะใช้คำสั่งดังนี้
SELECT TASK, TASKS_SHORTER_THAN_ONE_MONTH
FROM PROJECT
WHERE ADD_MONTHS(STARTDATE, 1) > ENDDATE;
ผลของคำสั่งจะได้คอลัมน์ TASKS_SHORTER_THAN_ONE_MONTH ที่แสดงงานที่มีระยะเวลาการทำงานไม่เกิน 1 เดือน

TASKS_SHORTER_THAN_ONE_MONTH
KICKOFF MTG
TECH SURVEY
USER MTGS
DESIGN WIDGET

2.2 ฟังก์ชัน LAST_DAY (X) เป็นฟังก์ชันที่แสดงวันสุดท้ายของเดือนในคอลัมน์ (X)
ตัวอย่าง เช่นต้องการแสดงวันสุดท้ายของเดือนจะใช้คำลั่งดังนี้
SELECT ENDDATE, LAST_DAY(ENDDATE)
FROM PROJECT;
ผลของคำสั่งที่ได้จะแสดงในคอลัมน์ LAST_DAY (ENDDATE) ที่แสดงวันสุดท้ายของเดือนในคอลัมน์ ENDDATE

ENDDATE LAST_DAY(ENDDATE)
01-APR-2001 30-APR-2001
01-MAY-2001 31-MAY-2001
30-MAY-2001 31-MAY-2001
30-JUN-2001 30-JUN-2001
02-SEP-2001 30-SEP-2001
17-JAN-2002 31-JAN-2002

2.3 ฟังก์ชัน MONTHS_BETWEEN (X,Y) เป็นฟังก์ชันที่คำนวณค่าระหว่าง X และ Y โดยมีหน่วยเป็นเดือน
ถ้าต้องการคำนวณหาค่าระหว่างคอลัมน์ STARIDATE กับคอลัมน์ ENDDATE ว่ามีระยะเวลาห่างกันกี่เดือน
SELECT TASK, STARTDATE, ENDDATE, MONTHS_BETWEEN(STARTDATE, ENDDATE)
DURATION
FROM PROJECT;
ผลของคำสั่งที่ได้คอลัมน์ DURATION ที่ติดค่าลบเนื่องจากใช้คอลัมน์ STARTDATE ซึ่งมีค่าน้อยกว่าคอลัมน์ ENDDATE เป็นค่าเริ่มต้น

TASK STARTDATE ENDDATE DURATION
KICKOFF MTG 01-APR-2001 01-APR-2001 0
TECH SURVEY 02-APR-2001 01-MAY-2001 -.9677419
USER MTGS 15-MAY-2001 30-MAY-2001 -.483871
DESIGN WIDGET 01-JUN-2001 30-JUN-2001 -.9354839
CODE WIDGET 01-JUL-2001 02-SEP-2001 -2.032258
TESTING 03-SEP-2001 17-JAN-2002 -4.451613

เป็นการหาค่าเดือนเหมือนดังตัวอย่างข้างต้น แต่จะนำคอลัมน์ ENDDATE มาเป็นค่าเริ่มต้น
SELECT TASK, STARTDATE, ENDDATE,
MONTHS_BETWEEN(ENDDATE ,STARTDATE) DURATION
FROM PROJECT;
ผลของคำสั่งที่ได้คอลัมน์ DURATION เป็นบวกเพราะคอลัมน์ ENDDATE ที่เป็นค่าเริ่มต้นมีค่ามากกว่าคอลัมน์ STARIDATE

TASK STARTDATE ENDDATE DURATOPN
KICKOFF MTG 01-APR-2001 01-APR-2001 0
TECH SURVEY 02-APR-2001 01-MAY-2001 .96774194
USER MTGS 15-MAY-2001 30-MAY-2001 .48387097
DESIGN WIDGET 01-JUN-2001 30-JUN-2001 .93548387
CODE WIDGET 01-JUL-2001 02-SEP-2001 2.0322581
TESTING 03-SEP-2001 17-JAN-2002 4.4516129

ตัวอย่าง ถ้าต้องการหาว่าค่าที่เริ่มก่อนวันที่ 15 MAY 2001
SELECT *
FROM PROJECT
WHERE MONTHS_BETWEEN(’19 MAY 2001’,STARTDATE) > 0;
ผลของคำสั่งที่ได้จะแสดงงานโครงการที่เริ่มก่อน วันที่ 19 MAY 2001

TASK STARTDATE ENDDATE
KICKOFF MTG 01-APR-2001 01-APR-2001
TECH SURVEY 02-APR-2001 01-MAY-2001
USER MTGS 15-MAY-2001 30-MAY-2001

SQL

หัวข้อพิเศษไอที, SQL No Comments »

1.ฟังก์ชันในการรวม (Aggregate Functions)   

เป็นกลุ่มฟังก์ชันที่ให้ผลของคำสั่งออกมาเพียง 1 คอลัมน์ ฟังก์ชันในการรวม(Aggregate Functions) เป็นกลุ่มฟังก์ชันที่ใช้กับข้อมูลที่เป็นตัวเลข ได้แก่ COUNT,SUM,AVG,MAXและ MIN

การใช้ฟังก์ชันในการรวมค่าต่าง ๆในภาษา SQL ดำเนินตามคำสั่งที่มีฟังก์ชันในการรวมค่า ผลของคำสั่งจะแสดงค่าเพียงค่าเดียว ฟังก์ชันเหล่านี้ได้แก่

COUNT เป็นคำสั่งที่สามารถใช้กับตารางหรือคอลัมน์ใด ๆ เพื่อนับจำนวนของแถวหรือคอลัมน์ซึ่งมีการใช้งาน 2 แบบดังนี้คือ

COUNT (*) เป็นคำสั่งใช้นับจำนวนแถวทั้งหมดในตารางซึ่งจะรวมจำนวนแถวที่ไม่มีค่า ( NULL) ด้วย

COUNT (DISTINCT คอลัมน์) เป็นคำสั่งใช้นับจำนวนแถวในตาราง จะไม่รวมค่าซ้ำและตำแหน่งที่ไม่มีค่า( NULL)

SUM เป็นคำสั่งการหาผลรวมของคอลัมน์ใดคอลัมน์หนึ่ง

AVG เป็นคำสั่งการหาค่าเฉลี่ยของข้อมูลในคอลัมน์ใดคอลัมน์หนึ่งโดยในคอลัมน์ที่ไม่มีค่าใดบรรจุอยู่ (NULL VALUE)จะไม่นำมาบรรจุอยู่ในการคำนวณ การใช้ฟั่งก์ชั่น AVG จะนำค่าทุกตัวในคอลัมน์มาคำนวณรวมทั้งตัวที่มีค่าซ้ำกันด้วย(ถ้าไม่ต้องการนำค่านั้นมาคำนวณสามารถใช้ DISTINCT ได้เช่น AVG (DISTINCT ชื่อคอลัมน์) เพื่อหาค่าเฉลี่ยโดยไม่ต้องนำค่าซ้ำกันมาคำนวณ

MAX เป็นคำสั่งในการหาค่าสูงสุดของข้อมูลของคอลัมน์ใดคอลัมน์หนึ่ง

MIN เป็นคำสั่งในการหาค่าต่ำสุดของข้อมูลของคอลัมน์ใดคอลัมน์หนึ่ง

1.1ฟังก์ชัน COUNT (X) เป็นฟังก์ชันที่ใช้ในการนับจำนวนแถวในคอลัมน์ (X)

1.2 ฟังก์ชัน SUM (X) เป็นฟังก์ชันที่ใช้ในการหาค่ารวมของคอลัมน์ (X) ที่เก็บข้อมูลประเภทตัวเลข

1.3 ฟังก์ชัน AVG (X) เป็นฟังก์ชันที่ใช้ในการหาค่าเฉลี่ยของคอลัมน์ (X) ที่เก็บข้อมูลประเภทตัวเลข

1.4 ฟังก์ชัน MAX (X) เป็นฟังก์ชันที่ใช้ในการคำนวณหาค่าสูงสุดของคอลัมน์ (X)

1.5 ฟังก์ชัน MIN (X) เป็นฟังก์ชันที่ใช้ในการหาค่าต่ำสุดของคอลัมน์ (X)

1.6 ฟังก์ชัน VARIANC (X) เป็นฟังก์ชันในการหาค่าส่วนเบี่ยงเบนมาตราฐานยกกำลัง2(S2) ในคอลัมน์ X

1.7 ฟังก์ชัน STDDEV (X) หรือฟังก์ชันส่วนเบี่ยงเบนมาตราฐาน ส่วนเบี่ยงเบนมาตราฐาน คือ การหาค่ารากที่สองของผลรวมของความแตกต่างระหว่างข้อมูลดิบกับค่าเฉลี่ย ยกกำลังสอง (sum of squaresของผลต่าง) หารด้วยจำนวนข้อมูลทั้งหมดของคอลัมน์ X

SQL-ฟังก์ชัน

หัวข้อพิเศษไอที, SQL No Comments »

ฟังก์ชันที่ใช้ในภาษา SQLเป็นฟังก์ชัน ซึ่งเก็บประจำไว้กับภาษา SQL ภาษา SQL มีฟังก์ชันอยู่ 6 ประเภทคือ

1.ฟังก์ชันในการรวม (Aggregate functions)

2.ฟังก์ชันวันและเวลา (Date and tune functions)

3.ฟังก์ชันคณิตศาสตร์ (Arithmetic functions)

4.ฟังก์ชันตัวอักขระ (Character functions)

5.ฟังก์ชันการแปลง (Conversion functions)

6.ฟังก์ชันอื่นๆ (Miscellaneous functions)

SQL

หัวข้อพิเศษไอที, SQL 2 Comments »

ข้อแตกต่างระหว่างคีย์หลักและดัชนี 

คีย์หลักได้แก่ คอลัมน์ 1 คอลัมน์หรือหลายคอลัมน์ที่ทำให้แต่ละแถวในตารางข้อมูลมีค่าของข้อมูลที่ไม่ซ้ำกัน(unique) เช่น คอลัมน์รหัสลูกค้า (CUSNO) ของตารางลูกค้า(CUSTOMERTAB) ซึ่งใช้แทนรหัสลูกค้าแต่ละคนจะมีรหัสประจำตัวไม่ซ้ำกัน คีย์หลักเป็นพื้นฐานในการเชื่อมโยงกันระหว่างตารางและควบคุมความถูกต้องครบถ้วนสมบูรณ์(integrity) ในการตรวจสอบความซ้ำกันของข้อมูลระหว่างที่ทำการป้อนข้อมูลหรือกำหนดข้อมูลใหม่ให้กับตาราง ส่วนดัชนีเป็นการสร้างโดยการเลือกคอลัมน์ใดคอลัมน์หนึ่งหรือหลายคอลัมน์จากตารางขึ้นมาเป็นดัชนี โดยในตารางหนึ่งๆ สามารถมีดัชนีได้หลายดัชนี คอลัมน์ที่จะเลือกเป็นดัชนีควรจะมีค่าของข้อมูลไม่ซ้ำกัน (unique)ในแต่ละแถว ถ้าเลือกคอลัมน์ที่เป็นดัชนีที่สามารถมีค่าว่างได้จะทำให้ DBMSไม่สามารถนำดัชนีที่เป็นค่าว่างนั้นไปค้นหาข้อมูลในฐานข้อมูลได้ การสร้างดัชนีก็เพื่อเป็นตัวนำทางในการสืบค้นข้อมูลให้เร็วขึ้น 

การสร้างดัชนี 

ดัชนี (Index) เป็นส่วนที่สำคัญมากต่อฐานข้อมูลเชิงสัมพันธ์ ดัชนีมีความสำคัญคือ ช่วยเพิ่มความสามารถในการค้นหาข้อมูลได้เร็วยิ่งขึ้น โดยดัชนีที่ถูกสร้างขึ้นในแต่ละแถวจะถูกเก็บเป็นตารางแยกจากตารางข้อมูล ซึ่งจะเป็นการสะดวกในการค้นหาข้อมูลในแต่ละแถว DBMS สามารถทำการค้นหาข้อมูลในตารางดัชนี เมื่อพบดัชนีที่ต้องการจะชี้นำไปยังตารางข้อมูลนั้นๆ ซึ่งถ้าตารางข้อมูลใดไม่มีการสร้างดัชนีไว้การค้นหาข้อมูลในตารางนั้นจะต้องทำการค้นหาแบบเรียงลำดับจากแถวแรกจนถึงแถวสุดท้าย นอกจากนี้ดัชนียังช่วยในการตรวจสอบและควบคุมไม่ให้มีข้อมูลเดียวกันหลายแถวซ้ำกันในตารางได้อย่างอัตโนมัติ โดยดัชนีสามารถช่วยให้ผู้ใช้หาข้อมูลแต่ละแถวตามที่กำหนดเฉพาะเจาะจงตามต้องการได้โดยอัตโนมัติ 

ในการค้นหาข้อมูลใดข้อมูลหนึ่งในตารางข้อมูล ถ้าไม่มีดัชนีในการค้นหาจะทำให้เสียเวลาในการค้นหาพอสมควร ดัชนีจะเป็นตัวนำทางในการค้นหา เมื่อสร้างดัชนีจากคอลัมน์หนึ่งของตาราง DBMS จะเก็บคอลัมน์นั้นเรียงลำดับที่เหมาะสมของคอลัมน์นั้นไว้ สมมติว่าตารางลูกค้ามีข้อมูลป้อนไว้หลายรายการ และต้องการหาลูกค้าหมายเลข 2999 เนื่องจากไม่ได้เรียงลำดับแถวตามหมายเลขลูกค้าไว้ ปกติโปรแกรมจะต้องค้นหาไปที่ละแถวจนตลอดทั้งตารางเพื่อหาค่าลูกค้าหมายเลข 2999 ในคอลัมน์ CUSNO อย่างไรก็ดีถ้ามีดัชนีอยู่ในคอลัมน์ CUSNO โปรแกรมก็จะตรงไปที่หมายเลข 2999 ในดัชนีเลย การสร้างดัชนีจะทำให้การค้นหาข้อมูลเร็วขึ้น แต่การสร้างดัชนีก็เปลื้องพื้นที่ในหน่วยความจำ 

การสร้างดัชนีมีรูปแบบคำสั่งของการสร้างดังนี้ 

CREATE INDEX  

ON

(name>[,]..);    

CREATE INDEX เป็นคำสั่งที่ต้องมีทุกครั้งที่ต้องการสร้างดัชนี 

index name ชื่อดัชนี 

table name ชื่อตารางที่จะสร้างดัชนี 

ตัวอย่าง ถ้าตารางลูกค้าเป็นตารางที่พนักงานขายอ้างถึงบ่อยที่สุดเพื่อถามหาลูกค้าของตนเองแล้ว ก็ควรสร้างดัชนีขึ้นในคอลัมน์พนักงาน( SALENO) ของตารางลูกค้า จะใช้คำสั่งดังนี้ 

CREATE UNIQUE INDEX CLIENTGROUP ON CUSTOMERSTAB(SALENO); 

จากคำสั่ง “UNIQUE” เป็นการระบุว่าดัชนี( index) ที่สร้างขึ้นในคอลัมน์ CLIENTGROUP ซึ่งในคอลัมน์นี้จะมีค่าที่ซ้ำกันไม่ได้ และจะใช้คอลัมน์ SALENO เป็นข้อมูลในการค้นหา ผลของคำสั่งตารางลูกค้าจะมี CLIENTGROUP เป็นดัชนี( index) ในการค้นหาข้อมูล โดยเรียงลำดับตามข้อมูลในคอลัมน์ SALENO ของตารางลูกค้า index คอลัมน์CLIENTGROUP ที่สร้างขึ้นนี้จะไม่ถูกเก็บไว้ในตารางลูกค้า แต่จะถูกเก็บไว้แยกต่างหากในหน่วยความจำของเครื่องคอมพิวเตอร์ 

การลบดัชนีของตาราง 

เมื่อต้องการจบดัชนีที่สร้างขึ้น ก็สามารถทำได้ด้วยคำสั่ง DROP INDEX แล้วตามด้วยชื่อดัชนีที่ต้องการลบ โดยคำสั่งการลบดัชนีมีรูปแบบทั่วไปดังนี้ 

DROP INDEX

DROP INDEX เป็นคำสั่งที่ต้องมีทุกครั้งที่ต้องการลบดัชนี 

index name ชื่อดัชนี 

ในการลบดัชนีออกไปจะไม่มีผลกระทบกับรายละเอียดในคอลัมน์ต่าง ๆ ภายในตารางแต่อย่างไรเพราะดัชนีที่สร้างขึ้นไม่ได้บรรจุไว้ในตาราง 

ตัวอย่าง ถัาต้องการลบดัชนีชื่อ CLIENTGROUP ใช้คำสั่งดังนี้ 

DROP INDEX CLIENTGROUP ; 

ผลของคำสั่งนี้จะทำให้ดัชนีชื่อ CLIENTGROUP ที่เดิมเป็นดัชนีของตารางลูกค้าได้ถูกลบออกไป ทำให้ตารางลูกค้าไม่มีดัชนีดังกล่าว 

 

SQL

หัวข้อพิเศษไอที, SQL No Comments »

ข้อคำนึงในการใช้คำสั่งสร้างตาราง

1. ในการสร้างตารางแต่ละตารางอย่างน้อยที่สุดต้องกำหนดคอลัมน์ได้ 1 คอลัมน์
2. รายละเอียดของแต่ละคอลัมน์แยกจากกันด้วยเครื่องหมาย comma (,)
3. สิ้นสุดคำสั่งด้วยเครื่องหมาย semicolon (;)
*หมายเหตุ ข้อคำนึงเหล่านี้อาจมีความแตกต่างกันไปบ้าง ขึ้นอยู่กับผู้ผลิตแต่ละราย

การลบโครงสร้างตารางออกจากระบบ

เมื่อต้องการลบโครงสร้างตารางที่ถูกสร้างขึ้นจะสามารถทำได้ด้วยคำสั่ง DROP TABLE ซึ่งมีรูปแบบทั่วไปดังนี้
DROP TABLE

[CASCADE CONSTRAINTS];
DROP TABLE เป็นคำสั่งที่ต้องมีทุกครั้งที่ต้องการลบโครงสร้างตาราง
table name ชื่อตารางที่ต้องการลบ
CASCADE CONSTRAINTS ระบบจัดการฐานข้อมูลจะทำการลบข้อจำกัดต่างๆ(constraint) ที่มีการอ้างถึงตารางทิ้งไปให้ด้วยทั้งหมด
ตัวอย่าง  ถ้าต้องการลบตารางพนักงานขาย (SALESTAB) จะใช้คำสั่งดังนี้
DROP TABLE SALESTAB;
ผลของคำสั่งการลบโครงสร้างตาราง จะทำให้ข้อมูลถูกลบไปด้วยจะทำให้ดัชนี( index) ทุกตัวและตารางเสมือนหรือวิวที่สร้างขึ้นสำหรับตารางSALESTABนี้ จะถูกลบไปพร้อมๆกันด้วย เมื่อมีการใช้คำสั่งลบโครงสร้างตารางเกิดขึ้นก่อนที่จะลบโครงสร้างตารางข้อมูล DBMS จะเตือนผู้ใช้ถึงผลที่เกิดจากการลบโครงสร้างตาราง 

การเปลี่ยนแปลงโครงสร้างตาราง

เมื่อสร้างโครงสร้างตารางแล้ว ถ้าต้องการเปลี่ยนแปลงโครงสร้างตารางที่มีการสร้างไว้ข้างต้นใหม่ เช่น ต้องการเพิ่มหรือลบบางคอลัมน์ที่เป็นโครงสร้างหลักของตารางออก หรือต้องการเปลี่ยนประเภทข้อมูลของคอลัมน์ ซึ่งในกรณีที่ตารางมีข้อมูลและกำหนดโครงสร้างไปแล้ว การแก้ไขโครงสร้างข้อมูลอาจมีผลกระทบกับข้อมูลที่มีอยู่ แต่ในภาษา SQL สามารถใช้คำสั่งในการแก้ไขโครงสร้างข้อมูลได้ด้วยคำสั่งการเปลี่ยนแปลงโครงสร้างตาราง รูปแบบของของคำสั่ง ALTER TABLE มี 2 แบบ คือ
- ALTER TABLE ที่ใช้ในการเพิ่มคอลัมน์
- ALTER TABLE ที่ใช้ในการเปลี่ยนชื่อคอลัมน์
คำสั่ง ALTER TABLE เป็นคำสั่งที่ใช้ในการแก้ไขปรับปรุงโครงสร้างตาราง เมื่อจำเป็นที่ต้องปรับปรุงจากโครงสร้างเดิมตามที่ได้กำหนดไว้ตั้งแต่สร้างตารางในครั้งแรก คำสั่ง ALTER TABLE มีรูปแบบดังนี้
ALTER TABLE

Database update( data type [SIZE]);
ALTER TABLE เป็นคำสั่งที่ต้องมีทุกครั้งที่ต้องการเปลี่ยนแปลงโครงสร้างตาราง
table name ชื่อตารางที่จะเปลี่ยนแปลง
Database update คำสั่งการเปลี่ยนแปลง
column_name ชื่อคอลัมน์
data type [SIZE] ชนิดข้อมูลและขนาดของข้อมูล
ตัวอย่าง  ถ้าต้องการเปลี่ยนแปลงโครงสร้างตารางโดยการการเพิ่มคอลัมน์ลงไปบนโครงสร้างตารางเดิมจะใช้คำสั่งดังนี้
ALTER TABLE SALESPEOPLE ADD SALESTAB_FAX CHAR(15);
ผลของคำสั่งจะทำให้ตารางพนักงานขายมีคอลัมน์ SALESTAB_FAX ทีมีชนิดข้อมูลเป็น charมีความยาว 15 ตัวอักษรเพิ่มขึ้น
ตัวอย่าง  ถ้าต้องการเปลี่ยนแปลงโครงสร้างตารางโดยการเปลี่ยนชื่อคอลัมน์จะใช้คำสั่งดังนี้
ALTER TABLE SALESPEOPLE RENAME ADDRESS TO COUNTRY;
ผลของคำสั่งจะทำให้ตารางพนักงานขาย ที่เดิมมีคอลัมน์ชื่อ ADDRESS ต้องเปลี่ยนชื่อเป็น COUNTRY แทน
  

SQL

หัวข้อพิเศษไอที, SQL No Comments »

การสร้างตารางโดยมีการกำหนดข้อจำกัด

การสร้างตารางสามารถกำหนดข้อจำกัด(constraints)ลงในค่าต่างๆที่จะป้อนลงในคอลัมน์ต่างๆของตารางได้ การกำหนดข้อจำกัดเป็นการควบคุมความถูกต้องสมบูรณ์(integrity)ที่จัดเก็บในฐานข้อมูลให้มีความถูกต้องตามที่ถูกกำหนดไว้หรือตามที่ควรจะเป็น การกำหนดข้อจำกัดทำให้ข้อมูลมีความเชื่อถือได้ การกำหนดข้อจำกัดจะทำให้ข้อมูลในตารางไม่สามารถรับค่าใดๆที่ไม่ตรงกับข้อจำกัดที่กำหนดไว้ การกำหนดข้อจำกัดที่เป็นการควบคุมความถูกต้องสมบูรณ์(integrity)ได้ดังนี้

1. การกำหนดไม่ให้ค่าใดค่าหนึ่งเป็นค่าว่าง(NOT NULL) เป็นการกำหนดข้อมูลของคอลัมน์ใดคอลัมน์หนึ่งมีค่าว่างไม่ได้ โดยใช้คำว่า “NOT NULL” เช่น คอลัมน์ที่เป็นคีย์หลัก(primary key)ถูกระบุไม่ให้ค่าใดค่าหนึ่งเป็นค่าว่าง(NOT NULL ) หรือต้องการให้ลูกค้าทุกคนในตารางลูกค้าต้องมีข้อมูลชื่อ โดยทั่วไปการสร้างตารางถ้าในคอลัมน์ไม่ระบุคำว่า “NOT NULL” คอลัมน์นั้นจะถูกระบุให้เป็นค่า NULL โดยปริยาย(DEFAULT) นั่นคือคอลัมน์นั้นสามารถมีค่าว่างได้(NULL)

ตัวอย่าง  สมมติว่าต้องการกำหนดให้ตารางพนักงานขายในคอลัมน์ SALENO และ คอลัมน์ SALENAMEไม่ให้เป็นค่าว่าง(NOT NULL ) จะสามารถสร้างตารางพนักงานด้วยคำสั่งดังนี้ 

CREATE TABLE SALESTAB

(SALENO integer NOT NULL,

SALENAME char(10) NOT NULL,

ADDRESS char(10),

SALECOM decimal);

2. การกำหนดไม่ให้มีค่าซ้ำกัน(UNIQUE) เป็นการสร้างตารางโดยกำหนดให้คอลัมน์นั้นทั้งตารางไม่ให้มีค่าซ้ำกัน โดยใช้คำว่า “UNIQUE” เช่น คอลัมน์รหัสพนักงานที่เป็นคีย์หลัก และไม่ต้องการให้มีค่าซ้ำ จะใช้คำว่า UNIQUE เป็นการระบุข้อจำกัดนี้

ตัวอย่าง  สมมติว่าต้องการกำหนดให้ตารางพนักงานขายในคอลัมน์ SALENO และ คอลัมน์ SALENAMEไม่ให้เป็นค่าว่าง(NOT NULL ) และไม่ให้มีค่าซ้ำกัน จะสามารถสร้างตารางพนักงานด้วยคำสั่งดังนี้ 

CREATE TABLE SALESPEOPLE

(SALENO integer NOT NULL UNIQUE,

SALENAME char(10) NOT NULL UNIQUE,

ADDRESS char(10),

SALECOM decimal);

3. การกำหนดคีย์หลัก(primary key) สามารถกำหนดได้ 2 วิธีคือ

1) การกำหนดให้คอลัมน์เดียวเป็นคีย์หลัก

ตัวอย่าง สมมติว่าต้องสร้างตารางพนักงานที่กำหนดให้คอลัมน์ SALENO เป็น คีย์หลัก(primary key) โดยไม่ให้มีค่าซ้ำกัน และคอลัมน์ SALENAMEไม่ให้เป็นค่าว่าง(NOT NULL) และไม่ให้มีค่าซ้ำกัน จะสามารถสร้างตารางพนักงานด้วยคำสั่งดังนี้

CREATE TABLE SALESPEOPLE

(SALENO integer NOT NULL UNIQUE PRIMARY KEY,

SALENAME char(10) NOT NULL UNIQUE,

ADDRESS char(10),

SALECOM decimal);

2) การกำหนดให้คอลัมน์มากกว่า 1 คอลัมน์เป็นคีย์หลัก ในบางครั้งการอ้างอิงคีย์หลัก อาจต้องใช้คอลัมน์มากกว่า 1 คอลัมน์เป็นคีย์หลัก

ตัวอย่าง สมมติว่าต้องสร้างตาราง NAMEFIELD โดยกำหนดให้คอลัมน์ FIRSTNAME และคอลัมน์ LASTNAME เป็น คีย์หลัก(primary key) จะสามารถสร้างตาราง NAMEFIELD ด้วยคำสั่งดังนี้ 

CREATE TABLE NAMEFIELD

(FIRSTNAME char(10) NOT NULL ,

LASTNAME char(10) NOT NULL UNIQUE,

CITY char(10),

PRIMARY KEY (FIRSTNAME LASTNAME ));

4. การกำหนดคีย์นอก(foreign key ) คีย์นอกเป็นคอลัมน์ของตารางหนึ่งที่ใช้เชื่อมโยงหรืออ้างอิงข้อมูลกับอีกตารางหนึ่งที่มีคอลัมน์ที่มีชื่อคอลัมน์เดียวกัน เช่น ลูกค้าในตารางลูกค้า แต่ละคนมีคอลัมน์ SALENO ที่อยู่ในตารางพนักงานขาย

หากกำหนดคีย์นอกเป็นข้อจำกัดในระดับคอลัมน์จะใช้คำสั่ง REFERENCE ต่อท้ายประเภทและขนาดของคอลัมน์ที่เป็นคีย์นอก

 

f1.bmp

 

จากตาราง แสดงการอ้างอิงข้อมูลโดยคอลัมน์ที่มีชื่อเดียวกัน เป็นตารางลูกค้าและตารางพนักงานขายโดยในที่นี้จะไม่กล่าวถึงคอลัมน์ต่างๆที่ไม่จำเป็นเพื่อสะดวกในการศึกษา ลูกค้าในตารางลูกค้าแต่ละคนมีคอลัมน์ SALENO (เป็นคอลัมน์เดียวกันกับคอลัมน์ SALENO ที่อยู่ในตารางพนักงานขาย) คอลัมน์ SALENOที่อยู่ตารางลูกค้าเป็นคอลัมน์ที่แสดงพนักงานขายที่กำหนดให้กับลูกค้าแต่ละคน

ตัวอย่าง ถ้าต้องการสร้างตารางลูกค้า( CUSTOMERSTAB) โดยกำหนดให้คอลัมน์CUSNO เป็น PRIMARY KEY และคอลัมน์SALENO เป็นคีย์นอก (foreign key) ที่ใช้เชื่อมโยงหรืออ้างอิงข้อมูลกับตารางพนักงานขาย( SALESTAB) โดยใช้คำสั่งดังนี้CREATE TABLE CUSTOMERSTAB

CREATE TABLE CUSTOMERSTAB

CREATE TABLE CUSTOMERSTAB

(CUSNO integer NOT NULL PRIMARY KEY,

CUSNAME char(10) ,

ADDRESS char(10),

SALENO integer,

FOREIGN KEY (SALENO) REFERENCES SALESTAB(SALENO));

หรือ

CREATE TABLE CUSTOMERSTAB

(CUSNO integer NOT NULL PRIMARY KEY,

CUSNAME char(10) ,

ADDRESS char(10),

SALENO integer REFERENCES SALESTAB(SALENO));

การกำหนดคีย์นอก (foreign key ) เป็นคอลัมน์ของตารางหนึ่งที่ใช้เชื่อมโยงหรืออ้างอิงข้อมูลกับอีกตารางหนึ่ง จะทำให้การปรับปรุงตารางมีผลต่อตารางอ้างอิง คำสั่งที่มีผลต่อการปรับปรุงตาราง ได้แก่คำสั่ง ”CASCADES” และ “RESTRICTED” ทั้ง 2 คำสั่งนี้ใช้เพื่อควบคุมความถูกต้องครบถ้วนสมบูรณ์ในการอ้างอิงข้อมูล(referential integrity) ดังตัวอย่างต่อไปนี้

CREATE TABLE CUSTOMERSTAB

(CUSNO integer NOT NULL PRIMARY KEY,

CUSNAME char(10) ,

ADDRESS char(10),

SALENO integer REFERENCES SALESTAB(SALENO)

UPDATE OF SALESTAB CASCADES,

DELETE OF SALESTAB RESTRICTED);

ผลของคำสั่งนี้จะทำให้เมื่อต้องการปรับปรุงตารางที่สร้างขึ้นหรือตารางที่อ้างอิงถึง จะต้องมีเงื่อนไขในการปรับปรุง โดย

- คำสั่ง UPDATE OF SALESTAB CASCADES จะทำให้เมื่อมีการปรับปรุงคอลัมน์SALENOในตารางลูกค้าจะทำให้คอลัมน์ SALENOในตารางพนักงานขายถูกปรับปรุงไปด้วย

- คำสั่ง DELETE OF SALESTAB RESTRICTED จะทำให้เมื่อต้องการลบคอลัมน์SALENOในตารางลูกค้าจะไม่สามารถลบได้ ถ้าคอลัมน์SALENOในตารางพนักงานขายยังมีข้อมูลอยู่

f2.bmp

ตัวอย่าง สมมุติว่าต้องการลบ Chaiwat ออกจากตารางพนักงานขาย (SALESTAB) คำสั่งนี้ก็จะไม่เป็นที่ยอมรับ นอกเสียจากเปลี่ยนค่าคอลัมน์ SALENO ของลูกค้าชื่อ Arlee และ Surasit ไปเป็น SALENO ของพนักงานขายผู้อื่น หรือกล่าวอีกอย่างหนึ่งว่าจะเปลี่ยนค่า SALENO ของ Chaiwat เป็น 1009 แล้ว ในตารางลูกค้า Arlee และ Surasit ก็จะเปลี่ยนค่า SALENO ของทั้งสองคนนั้นตามไปด้วยโดยอัตโนมัติ

3.5 การกำหนดการตรวจสอบ(CHECK) การตรวจสอบความถูกต้องครบถ้วนสมบูรณ์ของข้อมูล(entity integrity)โดยการระบุเงื่อนไขหรือกำหนดค่าเฉพาะของคอลัมน์ใดคอลัมน์หนึ่งขึ้น หากมีการป้อนข้อมูลที่ผิดจากเงื่อนไขที่ระบุไว้ ค่านั้นก็จะถูกปฎิเสธหรือไม่ยอมรับ การตรวจสอบจะใช้คำสั่ง CHECK ต่อท้ายชนิดและขนาดของข้อมูลคอลัมน์

ตัวอย่าง  สมมติว่าต้องการกำหนดให้ตารางพนักงานขายในคอลัมน์ SNUM และ SNAME ไม่ให้เป็นค่าว่าง (NOT NULL ) และในคอลัมน์ SALENO และคอลัมน์ SALENAME ไม่ให้มีค่าซ้ำกันพร้อมทั้งกำหนดให้ คอลัมน์ SALECOM ชนิดข้อมูลที่ป้อนลงไปจะเป็นเลขทศนิยมเท่านั้น จะสามารถสร้างตารางพนักงานด้วยคำสั่งดังนี้ 

CREATE TABLE SALESPEOPLE

(SALENO integer NOT NULL UNIQUE,

SALENAME char(10) NOT NULL UNIQUE,

CITY char(10),

SALECOM decimal CHECK (salecom

SQL

หัวข้อพิเศษไอที, SQL No Comments »

การสร้างตาราง

การสร้างตารางในภาษา SQL จะใช้คำสร้าง CREATE TABLE ซึ่งเป็นคำสั่งที่ใช้ในการสร้างตารางขึ้นมาใหม่ คำสั่ง CREATE TABLE จะกำหนดชื่อตารางและกำหนดลักษณะข้อมูลเป็นคอลัมน์ต่างๆที่ตั้งขึ้นในตารางรวมไปถึงชนิดของข้อมูลของแต่ละคอลัมน์นั้น ในโครงสร้างของคำสั่งการสร้างตารางมีรูปแบบไวยากรณ์ดังต่อไปนี้

f3.bmp

ตัวอย่างที่ การสร้างตารางพนักงานขาย

f4.bmp

จากคำสั่งจะทำให้ได้ตารางพนักงานขายที่มีคอลัมน์ SALENO มีชนิดข้อมูลเป็น integer คอลัมน์ SALENAME มีชนิดข้อมูลเป็น char มีความยาว 10 ตัวอักษร คอลัมน์ ADDRESS มีชนิดข้อมูลเป็น char มีความยาว 10 ตัวอักษร และคอลัมน์ SALECOM มีชนิดข้อมูลเป็น decimal

ผลของคำสั่งการสร้างตารางจะได้ตารางพนักงานขายที่ยังไม่มีข้อมูลใดๆ เป็นเพียงแต่โครงของตารางเท่านั้นดังนี้

f5.bmp

SQL-ตารางข้อมูล

หัวข้อพิเศษไอที, SQL No Comments »

ตารางข้อมูล

สำหรับภาษา SQL เป็นภาษาที่ใช้สำหรับฐานข้อมูลแบบสัมพันธ์ คือประกอบด้วยตารางและในตารางหนึ่งๆมี 2 มิติได้แก่ แถว (rows) ในแนวนอน และคอลัมน์(columns) ในแนวตั้ง ฐานข้อมูลแบบสัมพันธ์ เช่น

                     ตารางพนักงานขาย(SALESTAB) 

SALENO

SALENAME

ADDRESS

SALECOM

1001

Chaiwat

Bangkok

0.12

1002

Mitree

Puket

0.13

1004

Benjawan

Bangkok

0.11

1007

Kanjana

Chiangmai

0.15

1003

Ternjai

Nonthaburi

0.10

คำอธิบายของคอลัมน์ต่าง ๆ ในตาราง

  

คอลัมน์

  

ชนิดข้อมูล

  

รายละเอียด

SALENO

Integer

เลขประจำตัวพนักงานขาย

SALENAME

Char(10)

ชื่อพนักงานขาย

ADDRESS

Char(10)

ที่อยู่ของพนักงานขาย

SALECOM

Decimal

ค่าคอมมิชชั่นของพนักงานขายตามคำสั่งซื้อ

ภาษาสำหรับนิยามข้อมูล (Data Definition Language : DDL) เป็นส่วนหนึ่งของภาษา SQL โดยเป็นภาษาที่ใช้นิยามโครงสร้างของฐานข้อมูล เพื่อทำการสร้างเปลี่ยนแปลงหรือยกเลิกโครงสร้างของฐานข้อมูลตามที่ได้ออกแบบไว้ โครงสร้างของฐานข้อมูลสามารถเรียกได้อีกอย่างว่าสคีมา (sehema) ดังนั้นภาษาสำหรับนิยามข้อมูล จึงเป็นภาษาที่ใช้ในการสร้างสคีมานั้นเอง หลังจากที่ได้มีการออกแบบฐานข้อมูลเรียบร้อยแล้วจะทำให้ทราบว่าฐานข้อมูลนั้นมีสคีมาอย่างไร และประกอบด้วยตารางใดบ้าง แต่ละตารางสัมพันธ์กันอย่างไร คีย์หลักของตารางคืออะไร เมื่อทราบถึงรายละเอียดต่างๆที่ได้จากการออกแบบฐานข้อมูลแล้วก็จะทำการสร้างตารางต่างๆที่จะใช้เป็นฐานข้อมูลลงในเครื่องคอมพิวเตอร์

SQL

หัวข้อพิเศษไอที, SQL No Comments »
               การตั้งชื่อของตารางในภาษา SQL นั้น มีหลักการง่าย ๆ กล่าวคือ  จะต้องนำหน้าชื่อตารางด้วยพยัญชนะใด ๆ หรือ $ , #  หรือ  @  ก็ได้  และไม่ควรตั้งชื่อยาวกว่า  18  อักษร  และภายในชื่อสามารถผสมคำจากอักษรใด ๆ และตามด้วยตัวเลข 0..9 และ _ ก็ได้  

                ข้อควรระวังอีกข้อหนึ่งสำหรับการตั้งชื่อตาราง  คือ ภาษา SQL จะมีคำสงวน ( Reserved Words ) หรือ Keyword ที่ต้องระวังไม่ให้ใช้ในการประกาศเป็นตัวแปร หรือ ชื่อของตารางใด ๆ ซึ่งคำสงวนจะมี 88 คำ  ดังนี้

ALL AND ANY AS ASC
AUTHORIZATION AVG BEGIN BETWEEN BY
AHAR CHARACTER CHECK CLOSE COBOL
COMMIT CONTINUE COUNT CREATE CURRENT
CURSOR DEC DEMIMAL DECLARE DELETE
DESC DISTINCT DOUBLE END ESCAPE
EXEC EXISTS FETCH FLORAT FOR
FORTRAN FOUND FROM GO GOTO
GRANT GROUP HAVING IN INDICATOR
INSERT INT INTEGER INTO IS
LANGUAGE LIKE MAX MIN MODULE
NOT NULL NUMERIC OF ON
OPEN OPTION OR ORDER ANSCAL
PLI PRECISION PRIVILEGES PROCEDURE PUBLIC
REAL ROLLBACK DCHEMA SECTION SELECT
SET SMALLINT SOME SQL SQLCODE
SQLERROR SUM TABLE TO UNIOR
UNIQUE UPDATE USER    
 

 

 

SQL-View

หัวข้อพิเศษไอที, SQL No Comments »

ข้อดีของวิว

วิวเป็นข้อมูลทีถูกคัดลอกออกมาจากฐานข้อมูลเพื่อเป็นการป้องกันและรักษาความปลอดภัยในระบบการจัดการฐานข้อมูล วิวมีความสำคัญต่อการรักษาความปลอดภัยในการจัดการฐานข้อมูล ข้อดีของวิวในระบบจัดการฐานข้อมูลได้แก่

1. วิวช่วยสนับสนุนการรักษาความปลอดภัยของข้อมูลตามมุมมองของของผู้ใช้ได้อย่างมีประสิทธิภาพ ได้แก่ ผู้ใช้สามารถมีมุมมองต่างกันในข้อมูลที่แตกต่างกันได้โดยการจัดรูปแบบของโครงสร้างข้อมูลของวิวนี้จะทำให้ได้ข้อมูลทั้งแถวและคอลัมน์ตามที่ผู้ใช้งานต้องการเท่านั้น

2. วิวช่วยรักษาความปลอดภัยในการปรับปรุงข้อมูลทั้งการเพิ่ม ลบ แก้ไข ข้อมูล ด้วยคำสั่ง INSERT , DELETE และ UPDATE โดยปรับปรุงข้อมูลเฉพาะบ้างส่วนของฐานข้อมูลผ่านวิว

3. วิวช่วยรักษาความปลอดภัยของข้อมูล โดยจำกัดผู้ใช้ไม่ให้เข้าถึงข้อมูลจริงและยังช่วยไม่ให้กระทบต่อต่อฐานข้อมูล

4. วิวช่วยให้ง่ายต่อการสอบถามข้อมูล เพราะวิวสามารถเรียกข้อมูลจากหลายๆ ตารางและแสดงผลเสมือนตารางเดียว โดยเปลี่ยนการสอบถามจากตารางข้อมูลจริงหลายตารางมายังตารางเสมือนตารางเดียว

5. วิวมีความง่ายทางโครงสร้าง เพราะวิวจะให้โครงสร้างข้อมูลตามที่ผู้ใช้งานต้องการ โดยไม่ต้องคำนึงถึงเรื่องความซับซ้อนของข้อมูล

6. วิวไม่มีผลกระทบต่อการเปลี่ยนแปลงโครงสร้างตาราง วิวสามารถควบคุมความคงเส้นคงวา (consistent) ในการใช้งาน แม้ว่าจะมีความจำเป็นต้องปรับเปลี่ยนตารางข้อมูลจริงอย่างใดก็ตาม ไม่ว่าจะเป็นชื่อตาราง ชื่อคอลัมน์ หรือ แม้แต่จะแบ่งแยกตารางข้อมูลออกเป็นหลายตารางก็ตาม

7. วิวช่วยให้มีความถูกต้องของข้อมูล เพราะข้อมูลถูกเรียกใช้ผ่านวิว ไม่ได้ผ่านข้อมูลจริง ระบบจัดการฐานข้อมูลสามารถตรวจสอบข้อมูลว่าตรงกับกฎควบคุมความถูกต้องของโครงสร้างข้อมูลที่กำหนดไว้หรือไม่

ข้อด้อยของวิว

ข้อด้อยบางประการในการใช้วิวคือ

1. ข้อจำกัดในด้านประสิทธิภาพ เพราะการเรียกใช้ข้อมูลผ่านวิวที่มีความซับซ้อนมาก จะทำให้มีการเรียกคำสั่งสอบถามข้อมูลหลายคำสั่ง ดังนั้นแม้ว่าจะเรียกข้อมูลผ่านวิวที่ง่ายๆ แต่ถ้าวิวสร้างมาจากตารางข้อมูลที่เชื่อมกันอย่างซับซ้อน ก็จะต้องกินเวลาในการทำงานนาน

2. ข้อจำกัดในการปรับปรุงข้อมูล เมื่อผู้ใช้ต้องการปรับปรุงข้อมูลบางแถวจากวิว ระบบจัดการฐานข้อมูลจะแปลความต้องการไปยังแถวที่ต้องการปรับปรุงในตารางข้อมูลจริง ซึ่งจะกระทำได้กับวิวแบบง่ายๆ แต่สำหรับวิวที่ซับซ้อนก็จะจำกัดให้อ่านข้อมูลได้อย่างเดียว

SQL-View

หัวข้อพิเศษไอที, SQL No Comments »

การลบโครงสร้างของวิว

เมื่อต้องการลบโครงสร้างของวิวที่ถูกนิยามขึ้น สามารถทำได้ด้วยคำสั่ง DROP TABLE แล้วตามด้วยตารางที่ต้องการลบ รูปแบบทั่วไปมีดังนี้

 DROP VIEW ;

DROP VIEW เป็นคำสั่งที่ต้องมีทุกครั้งที่ต้องการลบวิว

view name ชื่อวิวที่ต้องการลบ

ถ้าต้องการลบโครงสร้างตารางเสมือนชื่อ BANGKOKSTAFF

 DROP VIEW BANGKOKSTAFF;

 ผลของคำสั่งนี้จะทำให้วิว BANGKOKSTAFF ถูกลบไป

คุณสมบัติของวิว

วิวมีคุณสมบัติดังนี้

-วิวเกิดจากส่วนย่อยของข้อมูลจากตารางข้อมูลจริงได้มากกว่าหนึ่งตาราง

-ค่าที่ปรากฎบนวิวเป็นค่าจริงในตารางข้อมูล

-สามารถปรับปรุงข้อมูลในวิวได้ ถ้าได้รับการอนุญาตจากระบบจัดการฐานข้อมูล ได้แก่ การเพิ่มแถวในวิว(INSERT) การปรับปรุงคอลัมน์ในวิว(UPDATE) การลบข้อมูลในวิว(DELETE)

-สามารถกำหนดสิทธิการใช้งานให้ผู้ใช้งานได้ว่าจะให้ใช้วิวหรือไม่ให้ใช้ เช่นเดียวกับตารางข้อมูล โดยไม่ต้องยุ่งเกี่ยวกับตารางข้อมูลจริง

-สามารถกำหนดเงื่อนไขการเรียกใช้ลงในวิวอย่างถาวร เพื่อให้ง่ายต่อผู้ใช้

-วิวช่วยให้ทำงานง่ายขึ้น เพราะทำให้สามารถสอบถามข้อมูลที่ต้องการได้ง่ายขึ้น

ตัวอย่าง เมื่อสร้างวิวขึ้นมา ดังนี้

 CREATE VIEW view-emp

SELECT EMPNO,ENAME,JOB,MGR,SAL

FROM demp

WHERE DEPTNO=10;

 จากวิว view-emp สามารถใช้คำสั่ง SQL เพื่อสอบถามข้อมูลอย่างง่ายๆ ดังนี้

 SELECT ENAME,JOB

FROM view-emp

WHERE HIREDATE= ‘21-AMR-89”;

 หากไม่สร้างวิว ก็จะต้องใช้คำสั่ง SQL ที่ยุ่งยากกว่า เพื่อเรียกข้อมูลดังนี้

 SELECT ENAME,JOB

FROM demp

WHERE DEPTNO=10 AND HIREDATE= ‘21-AMR-89”;

วิวไม่ได้ช่วยเรื่องความเร็ว บางครั้งการใช้วิวก็มีปัญหาในเรื่องความเร็ว

ตัวอย่างที่เมื่อสร้างวิวขึ้นมา ดังนี้

 CREATE VIEW vsummary (DEPTNO,MINSAL,MAXSAL,AVGSAL)

SELECT DEPTNO,MIN(SAL), MAX(SAL),AVG(SAL)

FROM demp

GROUP BY DEPTNO;

และเรียกข้อมูลจากวิวด้วยคำสั่งต่อไปนี้

 SELECT DEPTNO,MINSAL

FROM vsummary WHERE DEPTNO = 20 ;

ผลก็คือเครื่องจะทำงานได้ผลช้ากว่าคำสั่งที่เรียกข้อมูลจากตารางข้อมูลโดยตรง ต่อไปนี้

 SELECT DEPTNO,MIN(SAL) FROM demp

GROUP BY DEPTNO HAVING DEPTNO = 20;

หลีกเลี่ยงการสร้างวิวจากวิวหรือ join วิว เพราะจะทำให้ยุ่งยากซับซ้อนต่อการจัดการข้อมูล

SQL-View

หัวข้อพิเศษไอที, SQL No Comments »

การสร้างวิว

การสร้างวิวได้จากการ query ในคำสั่ง SQL ทำให้เห็นข้อมูลในแถวและคอลัมน์ตามต้องการ การสร้างวิวอาจสร้างมาจากตารางข้อมูลเดียวหรือมากกว่าหนึ่งตารางได้ ภาษา SQL จะมีการสร้างวิวโดยใช้คำสั่ง CREATE VIEW ซึ่งมีรูปแบบทั่วไปดังนี้

CREATE VIEW

 

|column1 , column2 ….>)]

AS ;

CREATE VIEW เป็นคำสั่งที่ต้องมีทุกครั้งที่ต้องการสร้างวิว

view name ชื่อวิวที่ต้องการสร้าง

column 1 ชื่อของคอลัมน์ที่ต้องการตั้งชื่อในวิวที่สร้างขึ้น

AS เป็นไปตามเงื่อนไขในการเรียกค้น

ถ้าต้องการสร้างวิวชื่อ SALESOWN จากตารางพนักงานขาย( SALESTAB) โดยให้มีคอลัมน์ SALENO SALENAME และADDRESS จะใช้คำสั่งสร้างวิวดังนี้

CREATE VIEW SALESOWN

AS SELECT SALENO,SALENAME,ADDRESS

FROM SALESTAB;

                                 ตาราง SALESTAB

SALENO

SALENAME

ADDRESS

SALECOM

1001

Chaiwat

Bangkok

0.12

1002

Mitree

Puket

0.13

1004

Benjawan

Bangkok

0.11

1007

Kanjana

Chiangmai

0.15

1003

Ternjai

Nonthaburi

0.10

วิว SALESOWN

SALENO

SALENAME

ADDRESS

1001

Chaiwat

Bangkok

1002

Mitree

Puket

1004

Benjawan

Bangkok

1007

Kanjana

Chiangmai

1003

Ternjai

Nonthaburi

                              ตารางที 1 แสดงวิว SALESOWN

ผลของคำสั่งจะได้ตาราง SALESOWN ที่ไม่มีคอลัมน์ SALECOM อยู่ดังตารางที่ 12.1

ถ้าต้องการสร้างวิวชื่อ BANGKOKSTAFF จากตาราง SALESTAB โดยให้มีคอลัมน์ ADDRESS ที่เป็น “Bangkok” จะใช้คำสั่งดังนี้

 CREATE VIEW BANGKOKSTAFF

AS SELECT *

FROM SALESTAB

WHERE ADDRESS = ‘Bangkok’;

                                         ตาราง SALESTAB

SALENO

SALENAME

ADDRESS

SALECOM

1001

Chaiwat

Bangkok

0.12

1002

Mitree

Puket

0.13

1004

Benjawan

Bangkok

0.11

1007

Kanjana

Chiangmai

0.15

1003

Ternjai

Nonthaburi

0.10

วิว BANGKOKSTAFF

SALENO

SALENAME

ADDRESS

SALECOM

1001

Chaiwat

Bangkok

0.12

1004

Benjawan

Bangkok

0.11

                             ตารางที่ 2 แสดงวิว BANGKOKSTAFF

ผลจากคำสั่งนี้จะทำให้ได้วิวที่ชื่อ BANGKOKSTAFF ดังตารางที่ 12.2 ซึ่งเป็นวิวที่สามารถใช้ได้เหมือนตารางอื่น ๆ คือสามารถสอบถามข้อมูล แก้ไขปรับปรุง นำไปใส่ ลบออกจากและรวมกับตารางอื่น ๆ ได้

ถ้าต้องการสอบถามข้อมูลจากวิว BANGKOKSTAFF

 SELECT * FROM BANGKOKSTAFF;

ผลของคำสั่งนี้จะแสดงทุกคอลัมน์ในวิว BANGKOKSTAFF

วิวที่สร้างขึ้นนี้จะถูกเปลี่ยนแปลงโดยอัตโนมัติไปตามตารางข้อมูลที่สร้างวิว เช่น วิว BANGKOKSTAFF ถูกสร้างมาจากตารางพนักงานขาย (SALESTAB) ถ้าตารางพนักงานขาย (SALESTAB) มีการปรับปรุง โดยการเพิ่มพนักงานขายที่อยู่ใน Bangkok เข้าไปอีกคนหนึ่งในตารางพนักงานขาย( SALESTAB) พนักงานขายผู้นี้ก็จะปรากฎอยู่ในวิว BANGKOKSTAFF เองโดยอัตโนมัติ

การสร้างวิวให้เกิดประสิทธิภาพในการรักษาความปลอดภัยของข้อมูลและให้เกิดความเร็วในการสอบถามข้อมูลควรกำหนดขอบเขตโครงสร้างข้อมูลที่ต้องการ เพื่อจัดทำเป็นโครงสร้างของวิว โดยกำหนดเฉพาะชื่อคอลัมน์ไม่ต้องกำหนดชนิดข้อมูล เพราะจะเป็นไปตามที่กำหนดไว้ในตารางข้อมูลที่เลือกแล้ว นอกจากการกำหนดขอบเขตแล้วในการสร้างวิวจะระบุเฉพาะชื่อคอลัมน์ของวิวที่ต้องการเท่านั้น

SQL-View

หัวข้อพิเศษไอที, SQL No Comments »

วิว(View)

การควบคุมความปลอดภัยให้กับข้อมูลสามารถสร้างโครงสร้างข้อมูลใหม่ ที่ทำให้ผู้ใช้ เห็นเพียงโครงสร้างบ้างส่วนของฐานข้อมูลเท่านั้น ที่เป็นการป้องกันไม่ให้ผู้ใช้ได้เห็นข้อมูลทั้งหมดของฐานข้อมูล เราเรียกตารางข้อมูลประเภทนี้ว่า “ตารางเสมือน” หรือ “วิว” บางครั้งการออกแบบฐานข้อมูลในระดับกายภาพก็ต้องกำหนดตารางเป็นลักษณะวิว เพื่อเป็นการป้องกันรักษาความปลอดภัยของข้อมูลและการควบคุมการใช้งานในระบบฐานข้อมูล เพราะหากสร้างเป็นตารางข้อมูลจริงอาจจะเกิดความซ้ำซ้อนของข้อมูลมากซึ่งยากต่อการควบคุมการใช้งาน

โครงสร้างของวิว

วิว(VIEW)หรือตารางเสมือนเป็นตารางข้อมูลที่มีรายละเอียดหรือได้รายละเอียดมาจากตารางหลัก วิว(view) ถูกสร้างขึ้นจากฐานข้อมูล โดยตารางที่สร้างขึ้นนี้จะสอดคล้องกับการใช้งานของผู้ใช้และยังเป็นการป้องกันข้อมูลที่แท้จริงภายในฐานข้อมูล วิว(view) ถูกสร้างขึ้นจากฐานข้อมูล โดยวิวที่สร้างขึ้นนี้จะสอดคล้องกับการใช้งานของผู้ใช้และยังเป็นการป้องกันข้อมูลที่แท้จริงภายในฐานข้อมูล วิว(view) ถูกสร้างขึ้นจากฐานข้อมูล โดยตารางที่สร้างขึ้นนี้จะสอดคล้องกับการใช้งานของผู้ใช้และยังเป็นการป้องกันข้อมูลที่แท้จริงภายในฐานข้อมูล ตารางเหล่านี้จะทำงานเช่นเดียวกับตารางธรรมดา แต่ไม่มีข้อมูลเป็นของตนเอง วิวใช้เป็นเครื่องมือในการควบคุมไม่ให้ผู้ใช้เข้าไปดูข้อมูลทั้งหมดของตารางได้ วิวเป็นกลไกรักษาความปลอดภัยในการปกปิดส่วนต่าง ๆ ของตารางที่เป็นความลับหรือเกินความจำเป็นสำหรับผู้ใช้ เช่น ถ้าต้องการให้พนักงานขายดูตารางข้อมูลพนักงานขายได้ แต่ไม่ต้องการให้เห็นค่าคอมมิชชั่นของแต่ละคน ก็ควรสร้างวิวของตารางพนักงานขายที่ไม่มีคอลัมน์ค่าคอมมิชชั่นไว้ให้พนักงานขายได้เรียกดู

ดังนั้นในการป้องกันและรักษาความปลอดภัยของข้อมูลในการเรียกใช้ข้อมูลที่แตกต่างจากตารางข้อมูลที่ออกแบบไปแล้ว ก็อาจทำได้โดยการสร้างเป็นวิว

การทำงานของวิว

เมื่อมีการเรียกใช้วิว ระบบจัดการฐานข้อมูลจะทำหน้าที่โดยเริ่มค้นหาข้อกำหนดของวิวในคำสั่ง SQL ที่เก็บไว้ในฐานข้อมูล แล้วแปลคำสั่งของวิวเพื่อไปนำข้อมูลมาจากตารางข้อมูลจริง ทำให้วิวรักษาความถูกต้องของโครงสร้างข้อมูล (integrity) ไว้ได้

สำหรับวิวแบบง่ายๆ ระบบจัดการฐานข้อมูลอาจสร้างแต่ละแถวของวิวขึ้นมาจากตารางข้อมูลจริงเลย ส่วนวิวที่ซับซ้อนนั้นระบบจัดการฐานข้อมูลจะเก็บแถวของวิวไว้ในตารางชั่วคราว แล้วจึงแสดงผลจากตารางชั่วคราว และเลิกใช้ตารางชั่วคราวนั้นเมื่อหมดความต้องการใช้งานอีกต่อไป คือเมื่อสิ้นสุดคำสั่งของ SQL อย่างไรก็ตามไม่ว่าระบบจัดการฐานข้อมูลจะจัดการกับวิวอย่างไร ผลที่ได้ที่ผู้ใช้ได้รับก็ไม่แตกต่างกัน นั่นคือ วิวสามารถอ้างอิงได้จากคำสั่ง SQL เสมือนหนึ่งว่าอ้างอิงไปยังตารางข้อมูลจริงเลย


   Designed By:  SadhWeb Directory  &  WP Theme

Sponsored By:  Affiliate Marketing Blog  &  Paid Directory