ผลของคาสง่ั ท่ีไดจ้ ะทาการรวมคะแนนท้งั หมดในคอลมั น์ SINGLES, DOUBLES, TRIPLES, HRแลว้ แสดงออกมาเป็นคอลมั น์ TOTAL_SIGLES TOTAL_DOUBLES, TOTAL_TRIPLES,TOTAL_HR ตามลาดบั ดงั น้ีTOTAL_SINGLES TOTAL_DOUBLES TOTAL_TRIPLES TOTAL_HR174 32 5 29ตวั อยา่ ง ถา้ ตอ้ งการหาผลรวมของคอลมั น์ SINGLES, DOUBLES, TRIPLES, HR จากตารางTEAMGAME ที่มเี งื่อนไขว่า HITS หารดว้ ย AB มากกวา่ หรือเท่ากบั .300 โดยใหแ้ สดงคอลมั นข์ องผลรวมท่ีไดใ้ นช่ือ TOTAL_SIGLES, TOTAL_DOUBLES, TOTAL_TRIPLES, TOTAL_HRตามลาดบัSELECT SUM(SINGLES) TOTAL_SINGLES, SUM(DOUBLES) TOTAL_DOUBLES,SUM(TRIPLES) TOTAL_TRIPLES, SUM(HR) TOTAL_HRFROM TEAMGAME;WHERE HITS/AB > = .300;ผลของคาสงั่ ที่ไดจ้ ะทาใหร้ วมคะแนนท้งั หมดในคอลมั น์ตา่ ง ๆ เฉพาะแถวที่มีค่า HITS หารดว้ ยAB มากกวา่ หรือเท่ากบั .300 แลว้ แสดงผลในช่ือ TOTAL_SIGLES, TOTAL_DOUBLES,TOTAL_TRIPLES, TOTAL_HR ตามลาดบัTOTAL_SINGLES TOTAL_DOUBLES TOTAL_TRIPLES TOTAL_HR164 30 5 29ตวั อย่าง ถ้าต้องการผลรวมในคอลมั น์ NAMESELECT SUM(NAME)FROM TEAMGAME;ผลของคาสง่ั จะเกิด ERROR ข้ึนเน่ืองจากในคอลมั น์ NAME มีประเภทของขอ้ มลู เป็นตวั อกั ขระฟังกช์ นั SUM จะใชก้ บั ตวั เลขเท่าน้นั ถา้ ใช้ SUM กบั ตวั อกั ษรจะเกิด ERROR ดงั ตวั อยา่ ง
ERROR:ORA-01722: invalid numberNo rows selected1.3 ฟังกช์ นั AVG (X) เป็นฟังกช์ นั ท่ีใชใ้ นการหาค่าเฉล่ยี ของคอลมั น์ (X) ที่เก็บขอ้ มลู ประเภทตวั เลขตวั อยา่ ง ถา้ ตอ้ งการหาเฉลย่ี ของ HITS ใหแ้ สดงในชื่อ HIT_AVERAGESELECT AVG(HITS) HITS_AVERAGEFROM TEAMGAME;ผลของคาสงั่ ที่ไดจ้ ะแสดงค่าเฉลี่ยของ HITS ท่ีเกิดจากการนาค่าในแถวต่าง ๆ ในคอลมั น์ HIT มาบวกกนั แลว้ หารดว้ ยจานวนแถว คือ 6HITS_AVERAGE40.1666661.4 ฟังกช์ นั MAX (X) เป็นฟังกช์ นั ที่ใชใ้ นการคานวณหาค่าสูงสุดของคอลมั น์ (X)ตวั อยา่ ง ถา้ ตอ้ งการหาว่าในคอลมั น์ HITS มีค่าสูงสุดเท่าใดSELECT MAX(HITS)FROM TEAMGAME;ผลของคาสงั่ ท่ีไดจ้ ะไดว้ า่ HITS มคี ่าสูงสุดคือ 70 ดงั น้ีMAX(HITS)70ตวั อยา่ ง ถา้ ตอ้ งการหาว่าใครเป็นผทู้ ี่ได้ HITS สูงท่ีสุดโดยใชค้ าสง่ั ดงั น้ีSELECT NAME
FROM TEAMGAMEWHERE HITS = MAX(HITS);ผลของคาสง่ั จะเกิด ERROR เนื่องจากฟังกช์ นั ในการรวม (Aggregate function) มาใชใ้ นเง่ือนไขอนุประโยค WHERE ไมไ่ ดจ้ ะเกดิ ERROR ข้ึนจากตวั อยา่ ง WHERE HITS = MAX(HITS);MAX(HITS) จะมาใชใ้ นเง่ือนไขอนุประโยค WHERE ไม่ได้ จากคาถามขอ้ น้ีจะสามารถใชไ้ ดก้ บัคาสง่ั CROUP BY และ HAVING ที่จะไดศ้ ึกษาต่อไปERROR at line 3:ORA – 00934: group function is not allowed hereตวั อยา่ ง การใช้ MAX กบั ประเภทของขอ้ มลู ที่เป็นตวั อกั ขระSELECT MAX (NAME)FROM TEAMGAME;ผลของคาสง่ั จากคาสง่ั จะทาการหาช่ือของผทู้ ่ีมีอกั ษร (A-Z) ตามลาดบั ใครท่ีมอี กั ษรลาดบั มากท่ีสุดจะถกู แสดงออกมาเพียงแถวเดียวMAX(NAME)WORLEY1.5 ฟังกช์ นั MIN (X) เป็นฟังกช์ นั ที่ใชใ้ นการหาค่าต่าสุดของคอลมั น์ (X)ตวั อยา่ ง ถา้ ตอ้ งการหาค่าต่าสุดในคอลมั น์ ABSELECT MIN(AB)FROM TEAMGAME;ผลของคาสง่ั ท่ีไดจ้ ะไดค้ ่าต่าสุดในคอลมั น์ AB ดงั น้ีMIN (AB)1
ตวั อยา่ ง การใช้ MIN กบั ประเภทของขอ้ มลู ที่เป็นตวั อกั ขระSELECT MIN(NAME)FROM TEAMGAME;ผลของคาสงั่ จากคาสงั่ จะทาการหาช่ือของผทู้ ่ีมีอกั ษร (A-Z) ตามลาดบั ใครที่มีอกั ษรลาดบั นอ้ ยท่ีสุดจะถกู แสดงออกมาเพยี งแถวเดียวMIN (NAME)CASEYตวั อยา่ ง ถา้ ตอ้ งการหาค่าต่าสุดและสูงสุดในคอลมั น์ ABSELECT MIN(AB), MAX(AB)FROM TEAMGAME;ผลของคาสง่ั จะไดค้ ่าต่าสุดและสูงสุดในคอลมั น์ AB ดงั น้ีMIN (AB) MAX (AB)1 1871.6 ฟังกช์ นั VARIANC (X) เป็นฟังกช์ นั ในการหาค่าส่วนเบี่ยงเบนมาตราฐานยกกาลงั 2(S2) ในคอลมั น์ Xตวั อยา่ ง ถา้ ตอ้ งการหาค่า VARIANC ของ คอลมั น์ HITSSELECT VARIANCE(HITS)FROM TEAMGAME;ผลของคาสง่ั ที่ไดจ้ ะไดค้ ่า VARIANCE ในคอลมั น์ HITSVARIANCE(HITS)802.96667
ตวั อยา่ ง ถา้ ตอ้ งการหาค่า VARIANCE ของคอลมั น์ NAMESELECT VARIANCE(NAME)FROM TEAMGAME;ผลของคาสง่ั จะเกิด ERRORข้ึนเน่ืองจากฟังกช์ นั VARIANCE ไม่สามารถใชก้ บั ขอ้ มลู ที่เป็นตวั อกั ษรไดด้ งั น้ีERROR:ORA-01722: invalid numberNo rows selected1.7 ฟังกช์ นั STDDEV (X) หรือฟังกช์ นั ส่วนเบ่ียงเบนมาตราฐาน ส่วนเบี่ยงเบนมาตราฐาน คือ การหาค่ารากท่ีสองของผลรวมของความแตกต่างระหวา่ งขอ้ มลู ดิบกบั ค่าเฉลีย่ ยกกาลงั สอง (sum ofsquaresของผลต่าง) หารดว้ ยจานวนขอ้ มลู ท้งั หมดของคอลมั น์ Xตวั อยา่ ง ถา้ ตอ้ งการหาส่วนเบ่ียงเบนมาตรฐานของคอลมั น์ HITSSELECT STDDEV(HITS)FROM TEAMGAME;ผลของคาสงั่ จะไดส้ ่วนเบ่ียงเบนมาตรฐานของคอลมั น์ HITS ดงั น้ี STDDEV(HITS) 28.336666SELECT STDDEV(NAME)FROM TEAMGAME;ผลของคาสง่ั จะเกิด ERROR ไดเ้ น่ืองจากฟังกช์ นั STDDEV ไมส่ ามารถใชก้ บั ขอ้ มลู ที่เป็นตวั อกั ษรได้
ERROR:ORA-01722: invalid numberno rows selectedตวั อยา่ ง ถา้ ตอ้ งการนบั จานวนแถวในคอลมั น์ หาค่าเฉลยี่ หาค่าสูงสุด ต่าสุด หาค่าส่วนเบี่ยงเบนมาตรฐาน หาค่าวา่ เรียน และหาผลรวมของคอลมั น์ ABSELECT COUNT(AB),AVG(AB),MIN(AB),MAX(AB),STDEV(AB),VARIANCE(AB),SUM(AB),FROM TEAMGAME;ผลของคาสงั่ ที่ไดค้ ่าต่าง ๆ ตามลาดบั ดงั น้ีCOUNT(A AVG(A MIN(A MAX(A STDDEV(A VARIANCE(A SUM(A B) B) B) B) B) B) B)6 119.167 1 187 75.589 5712.97 715 2.ฟังก์ชันวนั และเวลา (Date and tune functions)เป็นกลุ่มฟังกช์ นั ที่แสดงขอ้ มลู ออกมาเป็นวนั และเวลา
ตวั อยา่ ง ตารางPROJECT TASK STARTDATE ENDDATEKICKOFF MTG 01-APR-2001 01-APR-2001TECH SURVEY 02-APR-2001 01-MAY-2001USER MTGS 15-MAY-2001 30-MAY-2001DESIGN WIDGET 01-JUN-2001 30-JUN-2001CODE WIDGET 01-JUL-2001 02-SEP-2001TESTING 03-SEP-2001 17-JAN-20022.1 ฟังกช์ นั ADD_MONTHS (X,Y) เป็นฟังกช์ นั ที่ตอ้ งการบวกจานวนเดือน (Y) เขา้ ไปในขอ้ มลูคอลมั น์ Xตวั อยา่ ง ถา้ ตอ้ งการใหเ้ ลอ่ื นเวลาในคอลมั น์ ENDDATE ใหม้ กี าหนดเวลาเพม่ิ ข้ึนอีก 2 เดือน โดยให้ผลลพั ธแ์ สดงคอลมั น์ TASK, STARTDATE และคอลมั น์ ENDDATE ใหแ้ สดงเป็นคอลมั น์ORIGINALEND ส่วนกาหนดเวลาที่บวกเพมิ่ ไปอีก 2 เดือน ใหแ้ สดงในคอลมั น์ ADD_MONTHSELECT TASK,STARTDATE, ENDDATE ORIGINAL_END,ADD_MONTHS(ENDDATE,2)FROM PROJECT;ผลของคาสงั่ จะได้ ADD_MONTHS เพิม่ มาอีก 1 คอลมั น์ ซ่ึงเกิดจากขอ้ มลู ในคอลมั น์ ENDDATEบวกอีก 2 เดือนTASK STARTDATE ORIGINAL ADD_MONTHKICKOFF MTG 01-APR-2001 01-APR-2001 01-JUN-2001TECH SURVEY 02-APR-2001 01-MAY- 01-JUN-2001 2001USER MTGS 15-MAY- 30-MAY- 30-JUN-2001 2001 2001
DESIGN 01-JUN-2001 30-JUN-2001 31-AUG-2001WIDGET 01-JUL-2001 02-SEP-2001 02-NOV-2001CODE 03-SEP-2001 17-JAN-2002 17-MAR-2002WIDGETTESTINGตวั อยา่ ง ถา้ ตอ้ งการหาวา่ งานใดบา้ งท่ีมรี ะยะการทางานไมเ่ กิน 1 เดือนจะใชค้ าสง่ั ดงั น้ีSELECT TASK, TASKS_SHORTER_THAN_ONE_MONTHFROM PROJECTWHERE ADD_MONTHS(STARTDATE, 1) > ENDDATE;ผลของคาสงั่ จะไดค้ อลมั น์ TASKS_SHORTER_THAN_ONE_MONTH ท่ีแสดงงานท่ีมีระยะเวลาการทางานไม่เกิน 1เดือน TASKS_SHORTER_THAN_ONE_MONTH KICKOFF MTG TECH SURVEY USER MTGS DESIGN WIDGET2.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-20022.3 ฟังกช์ นั MONTHS_BETWEEN (X,Y) เป็นฟังกช์ นั ท่ีคานวณค่าระหวา่ ง X และ Y โดยมีหน่วยเป็ นเดือนถา้ ตอ้ งการคานวณหาค่าระหว่างคอลมั น์ STARIDATE กบั คอลมั น์ ENDDATE ว่ามีระยะเวลาห่างกนั ก่ีเดือนSELECT TASK, STARTDATE, ENDDATE, MONTHS_BETWEEN(STARTDATE,ENDDATE)DURATIONFROM PROJECT;ผลของคาสง่ั ท่ีไดค้ อลมั น์ DURATION ที่ติดค่าลบเน่ืองจากใชค้ อลมั น์ STARTDATE ซ่ึงมีค่านอ้ ยกวา่ คอลมั น์ ENDDATE เป็นค่าเร่ิมตน้ TASK STARTDATE ENDDATE DURATIONKICKOFF MTG 01-APR-2001 01-APR-2001 0TECH SURVEY 02-APR-2001 01-MAY-2001 -.9677419USER MTGS 15-MAY-2001 30-MAY-2001 -.483871DESIGN WIDGET 01-JUN-2001 30-JUN-2001 -.9354839CODE WIDGET 01-JUL-2001 02-SEP-2001 -2.032258TESTING 03-SEP-2001 17-JAN-2002 -4.451613เป็ นการหาค่าเดือนเหมอื นดงั ตวั อย่างข้างต้น แต่จะนาคอลมั น์ ENDDATE มาเป็ นค่าเร่ิมต้นSELECT TASK, STARTDATE, ENDDATE,
MONTHS_BETWEEN(ENDDATE ,STARTDATE) DURATIONFROM PROJECT;ผลของคาสงั่ ที่ไดค้ อลมั น์ DURATION เป็นบวกเพราะคอลมั น์ ENDDATE ท่ีเป็นค่าเริ่มตน้ มคี ่ามากกวา่ คอลมั น์ STARIDATE TASK STARTDATE ENDDATE DURATOPN KICKOFF MTG 01-APR-2001TECH SURVEY 02-APR-2001 01-APR-2001 0 USER MTGS 15-MAY-2001DESIGN WIDGET 01-JUN-2001 01-MAY-2001 .96774194CODE WIDGET 01-JUL-2001 03-SEP-2001 30-MAY-2001 .48387097 TESTING 30-JUN-2001 .93548387 02-SEP-2001 2.0322581 17-JAN-2002 4.4516129ตวั อยา่ ง ถา้ ตอ้ งการหาวา่ ค่าท่ีเร่ิมก่อนวนั ท่ี 15 MAY 2001SELECT *FROM PROJECTWHERE 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 3.ฟังก์ชันคณติ ศาสตร์ (Arithmetic functions)เป็นกลุ่มคาสง่ั ท่ีเกี่ยวกบั การคานวณทางเลขคณิต
ตวั อยา่ ง ตารางNUMBERS; AB 3.1415 4 -45 .707 59 - 42 57.667 15 55 -7.2 5.33.1 ฟังกช์ นั ABS(X)เป็นฟังกช์ นั ในการหาค่าสมบรู ณ์ของ Xตอ้ งการหาค่าสมบรู ณ์ในคอลมั น์ ASELECT ABS(A) ABSOLUTE_VALUEFROM NUMBERS;ผลของคาสง่ั ABSOLUTE_VALUE 3.1415 45 5 57.667 15 7.23.2 ฟังกช์ นั CEIL(X) and FLOOR(X)ฟังกช์ นั CEIL (X) เป็นฟังกช์ นั ท่ีใหค้ ่าตวั เลขจานวนเต็มทมี่ ีค่ามากวา่ หรือเท่ากบั ค่าในคอลมั น์ (X)
ฟังกช์ นั FLOORเป็นฟังกช์ นั ท่ีใหค้ ่าตวั เลขจานวนเต็มท่ีพจิ ารณาจากค่าในคอลมั น์ X ถา้ หลงั จุดทศนิยมมีค่ามากวา่ 5 ก็จะใหค้ ่าเลขจานวนเตม็ ท่ีมากข้ึน แต่ถา้ หลงั จุดทศนิยมมคี ่านอ้ ยกว่า 5 จะให้ค่าตวั เลขที่มคี ่านอ้ ยลงตวั อยา่ ง ถา้ ตอ้ งการหาค่าตวั เลขจานวนเตม็ ท่ีมีค่ามากกว่าหรือเท่ากบั ค่าในคอลมั น์ BSELECT B, CEIL(B) CEILINGFROM NUMBERS;ผลของคาสง่ั จะไดค้ อลมั น์ CEILING ท่ีแสดงตวั เลขจานวนเตม็ ท่ีมคี ่ามากกว่าหรือเท่ากบั ค่าในคอลมั น์ B B CEILING 44 .707 1 99 42 42 55 55 5.3 6ตวั อยา่ ง ถา้ ตอ้ งการหาค่าตวั เลขจานวนเต็มในคอลมั น์ A โดยถา้ หลงั จุดทศนิยมมีอยมู่ ากกว่า 5 ก็จะใหค้ ่าเลขจานวนเต็มที่มากข้ึน แต่ถา้ หลงั จุดทศนิยมมีค่านอ้ ยกวา่ 5 กจ็ ะใหค้ ่าตวั เลขที่มคี ่านอ้ ยลงSELECT A, FLOOR(A) FLOORFROM NUMBERS;ผลของคาสงั่ จะไดค้ อลมั น์ FLOOR ที่มีค่ามากกว่า A FLOOR 3.1415 3 .45 -45 55
-57.667 -58 15 15 -7.2 -83.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 ของมมุ ในคอลมั น์ ASELECT A, COS(A)FROM NUMBERS;ผลของคาสง่ั จะไดข้ อง (A) ท่ีมีค่าดงั น้ี A COS(A) 3.1415 -1 -45 .52532199 5 .28366219 -57.667 .437183 15 -.7596879 .7.2 .608351313.4 ฟังกช์ นั EXP (X)เป็นฟังกช์ นั หาค่า e ยกกาลงั Xตวั อยา่ ง ถา้ ตอ้ งการหาค่า e ยกกาลงั ของขอ้ มลู ในคอลมั น์ ASELECT 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 .000746593.5 ฟังกช์ นั LN(X) และ LOG(X)ฟังกช์ นั LN เป็นการหาค่า natural log ของ Xฟังกช์ นั LOG เป็นการหาค่า log ฐาน10 ของ Xตวั อยา่ ง ถา้ ตอ้ งการหา natural log ของคอลมั น์ ASELECT A, LN(A)FROM NUMBERS;ผลของคาสง่ั จะเกิด ERROR ข้ึนเน่ืองจากแถวท่ี 2 และ 4 ของตาราง NUMBERS มคี ่าเป็นลบ ซ่ึงถา้ขอ้ มลู มีค่าเป็นลบจะหาค่าไมไ่ ด้ERROR:ORA-01428: argument ‘-45’ is out of rangeจากตวั อยา่ งถา้ ทาการยกกาลงั 2 ขอ้ มลู ในคอลมั น์ A ค่าของขอ้ มลู ที่เป็นลบอยเู่ มอ่ื ถกู ยกกาลงั 2 จะกลายเป็นบวกจากน้นั จึงทาการหาค่า LN ขอ้ มลู ในคอลมั น์ ASELECT 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.9740813.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 595 -57.667 42 -15.667 15 55 15 -7.2 5.3 -1.93.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.073.8 ฟังกช์ นั SIGN (X) เป็นฟังกช์ นั ที่- ใหค้ ่าเป็น –1 ถา้ X มีค่านอ้ ยกวา่ 0- ใหค้ ่าเป็น 0 ถา้ X มคี ่าเท่ากบั 0- ใหค้ ่าเป็น 1 ถา้ X มีค่ามากกวา่ 0ตวั อยา่ ง ถา้ ตอ้ งการหาฟังกช์ นั SIGN ในการหาค่าขอ้ มลู ในคอลมั น์ ASELECT A, SIGN(A)
FROM NUMBERS;ผลของคาสง่ั A SIGN (A) 3.1415 1 -45 -1 51 -57.667 -1 15 1 -7.2 -1 00ถา้ ตอ้ งการใชฟ้ ังกช์ นั SIGN ท่ีมีค่า 1 ในคอลมั น์ ASELECT AFROM NUMBERSWHERE SIGN(A) =1;ผลของคาสงั่ จะแสดงขอ้ มลู ในคอลมั น์ A ที่เมอื่ ใชฟ้ ังกช์ นั SIGN แลว้ มีค่าเป็น 1 A 3.1415 5 153.9 ฟังกช์ นั SQRT (X) เป็นฟังกช์ นั ในการหาค่ารากท่ี 2 ของ X
ตวั อยา่ ง ถา้ ตอ้ งการหารากท่ีท่ี 2 ของขอ้ มลู ในคอลมั น์ ASELECT A, SQRT(A)FROM NUMBERS;ผลของคาสงั่ จะเกิด ERROR เนื่องจากไมส่ ามารถหาค่ารากท่ี 2 ของตวั เลขท่ีมคี ่าเป็นลบไดด้ งั น้ีERROR:ORA-01428: ARGUMENT ‘-45’ is out of rangeตวั อยา่ ง ถา้ นาขอ้ มลู ในคอลมั น์ A มาหาค่าสมบรู ณ์แลว้ จึงนาไปหาค่ารากท่ี 2SELECT 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 00 4.ฟังก์ชันตวั อกั ขระ (Character functions)เป็นฟังกช์ นั ท่ีใชส้ าหรับจดั การขอ้ มลู อกั ขระ โดยท่ีมตี วั แปรจริงเป็นชนิดอกั ขระหรือชนิดตวั เลขและใหผ้ ลการคานวณเป็นค่าอกั ขระหรือค่าตวั เลข
ตวั อยา่ งตาราง CHARACTERS LASTNAMEFIRSTNAME 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 524.1 ฟังกช์ นั CHR เป็นฟังกช์ นั สาหรับเปล่ยี นนิพจนอ์ กั ขระใหเ้ ป็นรหสั ASCII ค่าท่ีไดจ้ ากฟังกช์ นั น้ีจะเป็นค่ารหสั ASCIIตวั อยา่ ง ถา้ ตอ้ งการเปล่ียนค่าตวั เลขในคอลมั น์ CODE ใหเ้ ป็นตวั อกั ษรSELECT CODE, CH(CODE)FROM CHARACTERS;ผลของคาสง่ั CODE CH 32 - 67 C 65 A 87 W 77 M 52 44.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 KONG4.3 ฟังกช์ นั INITCAP (<string>) เป็นฟังกช์ นั ที่เปลย่ี นค่าตวั อกั ขระ (string) ใหต้ วั แรกเป็นอกั ขระตวั ใหญ่แลว้ ตามดว้ ยอกั ขระตวั เลก็ถา้ ตอ้ งการเปลยี่ นใหเ้ ป็นอกั ษรตวั ใหญ่ในคอลมั น์ FIRSTNAMESELECT FIRSTNAME BEFORE, INITCAP(FIRSTNAME) AFTERFROM CHARACTERS;ผลของคาสงั่ จะทาการเปล่ยี น BEFORE AFTER KELLY Kelly CHUCK Chuck LAURA Laura FESTER Fester ARMANDO Armando MAJOR Major4.4 ฟังก์ชัน LOWER (<string>) and UPPER (<string>)
ฟังกช์ นั LOWER (<string>) เป็นฟังกช์ นั ที่เปลี่ยนตวั อกั ขระ (<string>) เป็นอกั ขระตวั เลก็ฟังกช์ นั UPPER (<string>) เป็นฟังกช์ นั ท่ีเปลีย่ นตวั อกั ขระ (<string>) เป็นอกั ขระตวั ใหญ่ตวั อยา่ ง ถา้ ตอ้ งการเปลย่ี นแปลงตวั อกั ขระในคอลมั น์ FIRSTNAME จากอกั ขระตวั เลก็ ใหเ้ ป็นอกั ขระตวั ใหญ่ทุกแถว ถา้ ใชค้ าสงั่ UPDATE ดงั น้ีUPDATE CHARACTERSSET 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 kellyCHUCK CHUCK chuckLAURA LAURA lauraFESTER FESTER festerARMANDO ARMANDO armandoMAJOR MAJOR major
4.7 ฟังกช์ นั REPLACE (<string>,X,Y) เป็นฟังกช์ นั ในการแทนค่าอกั ขระ X โดยการคน้ หาตวัอกั ขระที่ตอ้ งการแทนที แลว้ แทนทด่ี ว้ ยอกั ขระ Y ที่ตอ้ งการตวั อยา่ ง ถา้ ตอ้ งการคน้ หาอกั ขระ ST โดยไม่แทนท่ีดว้ ยอกั ขระใดๆคาสงั่ ตอ้ งการหาตวั อกั ษร ST ในคอลมั น์ LASTNAME โดยไม่ตอ้ งแทนที่ดว้ ยตวั อกั ษรใดSELECT LASTNAME, REPLACE(LASTNAME, ‘ST’) REPLACEMENTFROM 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’, ‘**’) REPLACEMENTFROM CHARACTERS;ผลของคาสงั่ จะทาใหใ้ นแถวท่ี 3 และแถวที่ 6 ในคอลมั น์ LASTNAME ที่มีอกั ษร ST อยจู่ ะถกูแทนท่ีดว้ ย ** LASTNAME REPLACEMENT PURVIS PURVIS TAYLOR TAYLOR CHRISTINE CHRI**INE
ADAMS ADAMS COSTALES CO**ALES KONG KONG4.8 ฟังกช์ นั SUBSTR (<string>,x,y) เป็นฟังกช์ นั ท่ีนาตวั อกั ษร (<string>) ในตาแหน่งที่ xตวั อยา่ ง ถา้ ตอ้ งกแสดงอกั ษรต้งั แตต่ าแหน่งที่ 2 มาแสดง 3 ตาแหน่ง ของคอลมั น์ FIRSTNAMESELECT 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 5.ฟังก์ชันการแปลง (Conversion functions)5.1ฟังกช์ นั TO_CHAR จะทาการแลง data type ที่เป็นตวั เลขใหเ้ ป็นตวั อกั ษรSELECT TESTNUM, TO_CHAR(TESTNUM)FROM CONVERSIONS;ผลของคาสงั่ TESTNUM TO_CHAR(TESTNUM) 95 95 23 23 68 68SELECT TESTNUM, LENGTH(TO_CHAR(TESTNUM))FROM CONVERSIONS;ผลของคาสง่ั จะทาการนบั ความยาวของตวั เลขที่แปลงเป็นตวั อกั ษรแลว้ TESTNUM LEGTH(TO_CHAR(TESTNUM)) 95 2 23 2 68 2 3.2การเรียกดูข้อมูลในรูปแบบต่างๆ
1. การเรียกดูข้อมูลโดยใช้ฟั่งก์ชันในการรวมการเรียกดขู อ้ มลู โดยใชฟ้ ังกช์ นั ในการรวมมรี ูปแบบดงั น้ีSELECT <column 1, column 2,…>FROM <table name>[WHERE<condition>][GROUP BY < grouping column>…][HAVING<condition>];SELECT คาสง่ั ท่ีตอ้ งมที ุกคร้ังท่ีตอ้ งการเรียกคน้ ขอ้ มลูcolumn 1, column 2,… คอลมั นท์ ่ีตอ้ งการเรียกคน้FROM การกาหนดวา่ ใหเ้ รียกดขู อ้ มลู ไดจ้ ากตารางใดบา้ งtable name ช่ือตารางท่ีตอ้ งการเรียกคน้ ขอ้ มลูWHERE<condition> ส่วนของคาสง่ั ท่ีบอกเงื่อนไขที่จะใชใ้ นการคน้ หาขอ้ มลูGROUP BY < grouping column>… ส่วนของคาสงั่ ท่ีบอกเงื่อนไขการจดั กลุ่มHAVING<condition> ใชค้ วบคู่กนั กบั GROUP BY เสมอ เพือ่ ตอ้ งการใหไ้ ดข้ อ้ มลู ท่ีจดั กลมุ่ ตามGROUP BYการเรียกดูขอ้ มลู โดยใชอ้ นุประโยค GROUP BY อนุประโยค GROUP BY เป็นคาสงั่ ในการกาหนดค่าต่าง ๆ ในคอลมั น์ใดคอลมั น์หน่ึงโดยเฉพาะในรูปของอกี คอลมั น์หน่ึง ซ่ึงใชจ้ ดั เรียงขอ้ มลู ท่ีมคี วามสมั พนั ธก์ นั ตามเง่ือนไข ขอ้ มลู ท่ีตอ้ งการจดั กลุม่ น้นั และ ตอ้ งสามารถรวมกลุ่มกนั ได้ดว้ ย คาสงั่ GROUP BY เป็นคาสงั่ ท่ีใชใ้ นการจดั แถวขอ้ มลู ตามคอลมั นท์ ี่ระบุหลงั GROUP BYโดยขอ้ มลู ที่เหมอื นกนั จะจดั ใหอ้ ยใู่ นหมเู่ ดียวกนั
ตวั อยา่ งตาราง CHECKS CHECK# PAYEE AMOUNT REMARKS 1 Malee Benjanee 150 Have sons next time 2 Reading R.R. 24534 Train to Chiangmai 3 Malee Benjanee 20032 Cellular Phone 4 Surasit Utilities 98 Gas 5 Jintana $ Mitree 150 Groceries 16 Cash 25 Wild Night Out 17 Benjawan Gas 251 Gas 9 Arun Cleaners 2435 X-Tra Starch 20 Arun Cleaners 105 All Dry clean 8 Cash 60 Trip to Saraburi 21 Cash 34 Trip to Nonthaburi 30 Surasit Utilities 875 Water 31 Surasit Utilities 34 Sewer 25 Benjawan Gas 1575 Gasตวั อยา่ ง ถา้ ตอ้ งการหาผลรวมในคอลมั น์ AMOUNT ของตาราง CHECKS จะใชค้ าสง่ั ดงั น้ีSELECT PAYEE, SUM(AMOUNT)FROM CHECKS;ถา้ ไมใ่ ช่ GROUP BY ในการรวมคอลมั น์ AMOUNT ของแต่ละคน จะเกิด ERROR ดงั น้ีผลลพั ธ์Dynamic SQL Error-SQL error code = -104-invalid column reference
จากตวั อยา่ งขา้ งตนั ถา้ ตอ้ งการนบั ว่า PAYEE แต่ละคนมีจานวนค่าใชจ้ ่ายกีค่ ร้ังจะใชค้ าสงั่ ดงั น้ีSELECT PAYEE, SUM(AMOUNT), COUNT(PAYEE)FROM CHECKSGROUP BY PAYEE;ผลลพั ธ์ PAYEE SUM COUNT 2 Arun Cleaners 2540 3 2 Cash 119 1 3 Benjawan Gas 1826 2 1 Jintana $ Mitree 150 Surasit Utilities 1007 Malee Benjanee 10182 Reading R.R. 24534ตวั อยา่ งตาราง ORGCHART NAME TEAM SALARY SICKLEAVE ANNUALLEAVE 34 12ASAMS RESEARCH 34000.00 40 9 20 19WILKES MARKETING 31000.00 30 27 20 17STOKES MARKETING 36000.00 25 18 22 14MEZA COLLECTIONS 40000.00 24 24SIRIWAN RESEARCH 45000.00RICHARDSON MARKETING 42000.00FURY COLLECTIONS 35000.00PRECOURT PR 37500.00ถา้ ตอ้ งการหาค่าเฉลยี่ ของ SALARY ของ TEAM งานแต่ละTEAM จะใชค้ าสงั่ ดงั น้ีSELECT TEAM, AVG(SALARY)
FROM ORGCHARTGROUP BY TEAM;ผลลพั ธ์ TEAM AVG COLLECTIONS 37500.00 MARKETING 36333.33 PR 37500.00 RESEARCH 39500.00การเรียกดขู อ้ มลู แบบ HAVING HAVING จะใชค้ วบค่กู นั กบั GROUP BY เสมอ เพ่อื ตอ้ งการใหไ้ ด้ขอ้ มลู ท่ีจดั กลมุ่ ตาม GROUP BYเพียงบางส่วนตามเง่ือนไขที่ระบุไวใ้ น HAVINGจากตวั อยา่ งที่ผา่ นมาถา้ ตอ้ งการดูเงินเดือนเฉล่ืยของทีมงานที่มคี ่านอ้ ยกวา่ 38000 จะใชค้ าสงั่ ดงั น้ีSELECT TEAM, AVG(SALARY)FROM ORGCHARTGROUP BY TEAMHAVING AVG(SALARY) < 38000;ผลลพั ธ์ TEAM AVG PR 37500.00ตวั อยา่ ง การใช้ GROUP BY และ HAVING ร่วมกบั คาสงั่ AND คือดวู า่ ทีมงานใดมีค่าเฉลย่ี ของSICKLEAVE มากกวา่ 25 และ มคี ่าเฉลีย่ ของ ANNUALLEAVE นอ้ ยกว่า 20 จะใชค้ าสงั่ ดงั น้ีSELECT TEAM, AVG(SICKLEAVE), AVG(ANNUALLEAVE)FROM ORGCHART
GROUP BY TEAMHAVING AVG(SICKLEAVE) >25 ANDAVG(ANNUALLEAVE) <20;ผลลพั ธ์ TEAM AVG AVG MARKETING 28 15 RESEARCH 27 15ตวั อยา่ ง ถา้ ตอ้ งการหาค่าเฉลีย่ ของ SICKLEAVE และค่าเฉล่ียของ ANNUALLEAVE ของจานวนทีมที่มจี านวน row มากกวา่ 1 จะใชค้ าสงั่ ดงั น้ีSELECT TEAM, AVG(SICKLEAVE), AVG(ANNUALLEAVE)FROM ORGCHARTGROUP BY TEAMHAVING COUNT(TEAM) > 1;ผลลพั ธ์ TEAM AVG AVG COLLECTIONS 26 21 MARKETING 28 15 RESEARCH 27 15 2.การเรียกค้นข้อมลู จากหลายตาราง การจดั ทาฐานขอ้ มลู ในรูปตารางเกิดจากการที่ขอ้ มลู ไดอ้ อกแบบมาเพ่อื ลดความซ้าซอ้ น (normalization) ดงั น้นั ขอ้ มลู ท่ีมรี ายละเอียดของขอ้ มลู มากอาจะถกู เก็บไวใ้ นหลายๆตารางแยกออกมาต่างหาก เช่น ตารางขอ้ มลู ที่เป็นตารางหลกั (master table) และ ตารางขอ้ มลู ที่เป็นตารางเชิง
รายการ (transaction table) และตารางขอ้ มลู ที่เป็นตารางทอ่ี ย(ู่ address table) เป็นตน้ การแยกออกเป็นตารางขอ้ มลู ยอ่ ยๆน้ีนอกจากลดความซ้าซอ้ น แลว้ ยงั ช่วยในการประหยดั เน้ือท่ี และยงั เพิม่ ประสิทธิภาพของฐานขอ้ มลูการเรียกคน้ ขอ้ มลู จากหลายตารางของภาษา SQL เป็นการกาหนดความสมั พนั ธร์ ะหวา่ งตารางท้งั หลาย โดยสามารถเอาขอ้ มลู ในตารางกี่ตารางก็ไดใ้ หม้ าสมั พนั ธก์ นั ดงั น้นั จึงสามารถเช่ือมต่อขอ้ มลู ท่ีแตกต่างกนั ไดโ้ ดยการใชค้ าสง่ั WHERE คาสงั่ WHERE เป็นคาสงั่ ในการกาหนดเง่ือนไขในการเรียกดขู อ้ มลู ใชค้ ่กู บั คาสง่ั SELECT และ FROMตวั อยา่ งTABLE1 ROW REMARK Row 1 Table 1 Row 2 Table 1 Row 3 Table 1 Row 4 Table 1 Row 5 Table 1 Row 6 Table 1ตวั อยา่ ง TABLE 2 ROW REMARK Row 1 Table 2 Row 2 Table 2 Row 3 Table 2 Row 4 Table 2 Row 5 Table 2 Row 6 Table 2ถา้ ตอ้ งการรวมท้งั 2 ตารางเขา้ ดว้ ยกนัSELECT * FROM TABLE1, TABLES2
ผลลพั ธ์ ROW REMARK ROW REMARK Row 1 Table 2 Row 1 Table 1 Row 1 Table 2 Row 1 Table 2 Row 1 Table 1 Row 2 Table 2 Row 1 Table 2 Row 1 Table 1 Row 3 Table 2 Row 2 Table 2 Row 2 Table 1 Row 4 Table 2 Row 2 Table 2 Row 2 Table 1 Row 5 Table 2 Row 2 Table 2 Row 2 Table 1 Row 6 Table 2 Row 3 Table 2 Row 3 Table 1 Row 1 Table 2 Row 3 Table 2 Row 3 Table 1 Row 2 Table 2 Row 3 Table 2 Row 3 Table 1 Row 3 Table 2 Table 1 Row 4 Table 1 Row 5 Table 1 Row 6 Table 1 Row 1 Table 1 Row 2 Table 1 Row 3 Table 1 Row 4 Table 1 Row 5 Table 1 Row 6
Search