Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore 6.ภาษา SQL

6.ภาษา SQL

Published by โอออง ซ่า, 2015-01-09 01:26:36

Description: ภาษา SQL

Search

Read the Text Version

บทท6ี่ ภาษามาตรฐานสาหรับการนยิ ามข้อมูล และการใช้ข้อมลู Structure Query Language:SQL 1.1โครงสร้างของภาษาเอสควิ แอล ภาษา SQL (สามารถอา่ นออกเสียงได้ 2 แบบ คือ ‚เอสคิวแอล‛ (SQL) หรือ ‚ซีเควล‛ (Sequel))ยอ่ มาจาก Structured Query Language หรือภาษาในการสอบถามขอ้ มลู เป็นภาษาทางดา้ นฐานขอ้ มลู ท่ีสามารถสร้างและปฎิบตั ิการกบั ฐานขอ้ มลู แบบสมั พนั ธ์(relational database)โดยเฉพาะและ เป็นภาษาที่มลี กั ษณะคลา้ ยกบั ภาษาองั กฤษ ภาษา SQLถกู พฒั นาข้ึนจากแนวคิดของ relationalcalculus และ relational algebra เป็นหลกั ภาษา SQL เริ่มพฒั นาคร้ังแรกโดย almaden researchcenter ของบริษทั IBM โดยมีช่ือเร่ิมแรกว่า ‚ซีเควล‛ (Sequel) ต่อมาไดเ้ ปล่ียนชื่อเป็น‚เอสคิวแอล‛(SQL) หลงั จากน้นั ภาษา SQLไดถ้ กู นามาพฒั นาโดยผผู้ ลิตซอฟแวร์ดา้ นระบบจดั การฐานขอ้ มลู เชิงสมั พนั ธจ์ นเป็นท่ีนิยมกนั อยา่ งแพร่หลายในปัจจุบนั โดยผผู้ ลิตแต่ละรายก็พยายามท่จี ะพฒั นาระบบจดั การฐานขอ้ มลู ของตนใหม้ ลี กั ษณะเด่นเฉพาะข้ึนมา ทาใหร้ ูปแบบการใชค้ าสง่ั SQL มีรูปแบบที่แตกต่างกนั ไปบา้ ง เช่น ORACLE ACCESS SQL Base ของ Sybase INGRES หรือ SQL Serverของ Microsoft เป็นตน้ ดงั น้นั ในปี ค.ศ. 1986 ทางดา้ น American National Standards Institute(ANSI) จึงไดก้ าหนดมาตรฐานของ SQL ข้ึน อยา่ งไรกด็ ี โปรแกรมฐานขอ้ มลู ที่ขายในทอ้ งตลาดไดข้ ยาย SQL ออกไปจนเกินขอ้ กาหนดของ ANSI โดยเพิม่ คุณสมบตั ิอืน่ ๆ ที่คิดว่าเป็นประโยชน์เขา้ ไปอีกแต่โดยหลกั ทวั่ ไปแลว้ ก็ยงั ปฏิบตั ิตามมาตราฐานของ ANSI ในการอธิบายคาสงั่ ต่างๆของภาษา SQL ในหนงั สือเลม่ น้ีจะอธิบายคาสงั่ ที่เป็นรูปแบบคาสง่ั มาตราฐานของภาษา SQLโดยทวั่ ไป1.ประเภทของคาสงั่ ของภาษา SQLภาษา SQL เป็นภาษาที่ใชง้ านไดต้ ้งั แต่ระดบั เคร่ืองคอมพวิ เตอร์ส่วนบุคคลพซี ีไปจนถงึ ระดบัเมนเฟรม ประเภทของคาสง่ั ในภาษา SQL (The subdivision of sql) แบ่งออกเป็น 3 ประเภท คือ1. ภาษาสาหรับการนิยามขอ้ มลู (Data Definition Language : DDL) ประกอบดว้ ยคาสง่ั ที่ใชใ้ นการกาหนดโครงสร้างขอ้ มลู วา่ มคี อลมั น์อะไร แต่ละคอลมั นเ์ กบ็ ขอ้ มลู ประเภทใด รวมถงึ การเพิม่คอลมั น์ การกาหนดดชั นี การกาหนดววิ หรือตารางเสมือนของผใู้ ช้ เป็นตน้2. ภาษาสาหรับการจดั การขอ้ มลู (Data Manipulation Language : DML) ประกอบดว้ ยคาสง่ั ที่ใชใ้ นการเรียกใชข้ อ้ มลู การเปลี่ยนแปลงขอ้ มลู การเพ่ิมหรือลบขอ้ มลู เป็นตน้

3. ภาษาควบคุม (Data Control Language : DCL) : ประกอบดว้ ยคาสงั่ ท่ีใชใ้ นการควบคุม การเกิดภาวะพร้อมกนั หรือการป้ องกนั การเกดิ เหตุการณ์ที่ผใู้ ชห้ ลายคนเรียกใชข้ อ้ มลู พร้อมกนั และคาสง่ัที่เกี่ยวขอ้ งกบั การควบคุมความปลอดภยั ของขอ้ มลู ดว้ ยการกาหนดสิทธิของผใู้ ชท้ ี่แตกต่างกนั เป็นตน้2. ชนิดของขอ้ มลู ที่ใชใ้ นภาษา SQLในภาษา SQL การบรรจขุ อ้ มลู ลงในคอลมั น์ต่าง ๆ ของตารางจะตอ้ งกาหนดชนิดของขอ้ มลู (datatype) ใหแ้ ต่ละคอลมั น์ ชนิดของขอ้ มลู น้ีจะแสดงชนิดของค่าท่ีอยใู่ นคอลมั น์ ค่าทุกค่าในคอลมั น์ที่กาหนดจะตอ้ งเป็นชนิดเดียวกนั เช่น ในตารางลกู คา้ คอลมั น์ท่ีเป็นรายช่ือลกู คา้ จะตอ้ งเป็นตวั หนงั สือ ในขณะทีค่ อลมั น์จานวนเงินท่ีลกู คา้ ซ้ือสินคา้ เป็นตวั เลขชนิดของขอ้ มลู ของแต่ละคอลมั นจ์ ะข้ึนกบั ลกั ษณะของขอ้ มลู แต่ละคอลมั น์ ซ่ึงแบ่งไดด้ งั น้ีชนิดขอ้ มลู พ้นื ฐานในภาษา SQL ดงั น้ี2.1 ตวั หนงั สือ(character) ในภาษา SQL จะใช้- ตวั หนงั สือแบบความยาวคงท่ี(fixed-length character) จะใช้ char (n) หรือ character(n) แทนประเภทของขอ้ มลู ท่ีเป็นตวั หนงั สือใดๆที่มีความยาวของขอ้ มลู คงท่ีโดยมคี วามยาว n ตวั หนงั สือประเภทน้ีจะมกี ารจองเน้ือท่ีตามความยาวที่คงท่ีตามท่ีกาหนดไว้ ชนิดของขอ้ มลู ประเภทน้ีจะเก็บความยาวของขอ้ มลู ไดม้ ากที่สุดได้ 255 ตวั อกั ษร- ตวั หนงั สือแบบความยาวไมค่ งท่ี(variable-length character) จะใช้ varchar (n) แทนประเภทของขอ้ มลู ท่ีเป็นตวั หนงั สือใดๆท่ีมคี วามยาวของขอ้ มลู ไม่คงที่ โดยมีความยาว n ตวั หนงั สือประเภทน้ีจะมกี ารจองเน้ือท่ีตามความยาวของขอ้ มลู ชนิดของขอ้ มลู ประเภทน้ีจะเกบ็ ความยาวของขอ้ มลู ได้มากที่สุดได้ 4000 ตวั อกั ษร2.2 จานวนเลข( numeric)- จานวนเลขที่มีจุดทศนิยม(decimal) ในภาษา SQL จะใช้ dec(m,n) หรือ decimal(m,n) เป็นประเภทขอ้ มลู ท่ีเป็นจานวนเลขที่มจี ุดทศนิยมโดย m คือจานวนตวั เลขท้งั หมด (รวมจุดทศนิยม) และ n คือจานวนตวั เลขหลงั จุดทศนิยม

- จานวนเลขท่ีไมม่ จี ดุ ทศนิยมในภาษา SQL จะใช้ int หรือ integer เป็นเลขจานวนเตม็ บวกหรือลบขนาดใหญ่ เป็นตวั เลข 10 หลกั ที่มคี ่าต้งั แต่ –2,147,483,648 ถึง +2,147,483,647 และในภาษา SQLจะใช้ smallint เป็นประเภทขอ้ มลู ท่ีเป็นเลขจานวนเต็มบวกหรือลบขนาดเลก็ เป็นตวั เลข 5 หลกั ท่ีมีค่าต้งั แต่ – 32,768 ถงึ + 32,767 ตวั เลขจานวนเตม็ ประเภทน้ีจะมกี ารจองเน้ือที่นอ้ ยกวา่ แบบ integer- เลขจานวนจริง ในภาษา SQL อาจใช้ number(n)แทนจานวนเลขท่ีไม่มีจุดทศนิยมและจานวนเลขท่ีมจี ุดทศนิยม2.3 ขอ้ มลู ในลกั ษณะอ่ืนๆ- วนั ที่และเวลา(Date/Time) เป็นชนิดวนั ที่หรือเวลาในภาษา SQL จะใช้ date เป็นขอ้ มลู วนั ที่ ซ่ึงจะมหี ลายรูปแบบใหเ้ ลือกใช้ เช่น yyyy-mm-dd (1999-10-31) dd.mm.yyyy(31. 10.1999) หรือdd/mm/yyyy (31/10/1999)3. ลกั ษณะการใชง้ านของภาษา SQLภาษา SQL เป็นส่วนประกอบหน่ึงของ DBMS มกั พบใน DBMS เชิงสมั พนั ธห์ ลายตวั และเป็นท่ีนิยมใชใ้ นปัจจุบนั ภาษา SQL ง่ายต่อการเรียนรู้ การใชง้ านในภาษา SQLแบ่งเป็น 2 ลกั ษณะ คือภาษา SQL ที่โตต้ อบได้ (interactive SQL)และภาษา SQL ที่ฝังในโปรแกรม (embedded SQL)3.1 ภาษา SQL ที่โตต้ อบได้ ใชเ้ พอ่ื ปฏบิ ตั ิงานกบั ฐานขอ้ มลู โดยตรง เป็นการใชค้ าสงั่ ภาษา SQLสงั่ งานบนจอภาพ โดยเรียกดูขอ้ มลู ไดโ้ ดยตรงในขณะท่ีทางาน เพื่อใหไ้ ดผ้ ลลพั ธท์ ่ีนาไปใชไ้ ด้ตวั อยา่ งเช่น ตอ้ งการเรียกดูขอ้ มลู ในคอลมั น์ SALENAME และ SALECOM จากตารางSALESTAB จะใชค้ าสง่ั ของภาษา SQL ดงั น้ีSELECT SALENAME, SALECOMFROM SALESTAB;โดยตาราง SALESTAB มรี ายละเอียดของตารางดงั น้ีSALENO SALENAME ADDRESS SALECOM1001 Chaiwat Bangkok 0.121002 Mitree Puket 0.13

1004 Benjawan Bangkok 0.111007 Kanjana Chiangmai 0.151003 Ternjai Nonthaburi 0.10ผลของคาสงั่ จะแสดงผลลพั ธด์ งั น้ีทนั ทีSALENAME SALECOMChaiwat 0.12Mitree 0.13Benjawan 0.11Kanjana 0.15Ternjai 0.10(รายละเอียดจะไดศ้ กึ ษาต่อไป)3.2 ภาษา SQL ท่ีฝังในโปรแกรม เป็นภาษา SQL ท่ีประกอบดว้ ยคาสง่ั ต่าง ๆ ของ ภาษา SQL ที่ใส่ไวใ้ นโปรแกรมที่ส่วนมากแลว้ เขียนดว้ ยภาษาอ่ืน เช่น โคบอล ปาสคาล ภาษาซี ลกั ษณะของคาสง่ัSQL จะแตกต่างจากภาษาอ่นื ๆ ในแง่ท่ีวา่ SQL ไม่มีคาสงั่ ที่เกี่ยวกบั การควบคุม(control statement)เหมือนภาษาอืน่ เช่น if..then…else for…do หรือ loop หรือ while ทาใหม้ ีขอ้ จากดั ในการเขียนชุดคาสง่ั งาน การใชภ้ าษา SQL ฝังในโปรแกรมอื่นจะทาใหภ้ าษา SQL มคี วามสามารถและมีประสิทธิภาพมากยง่ิ ข้นึ ผลลพั ธข์ องคาสง่ั ท่ีเกิดจากภาษา SQL ที่ฝังในโปรแกรมจะถกู ส่งผา่ นไปใหก้ บั ตวั แปรหรือพารามิเตอร์ท่ีใช้ โดยโปรแกรมท่ีภาษา SQL ไปฝังตวั อยู่ เช่นwhile not end-of-file(input) dobeginreadin(id-num, salesperson,loc,comm);

EXEC SQL INSERT INTO SALESTABVALUES(:id-num,:salesperson,:loc,:comm);end;จากตวั อยา่ งถา้ ใชค้ าสง่ัINSERT INTO SALESTABVALUES (:id-num,:salesperson,: loc, :comm);เพียงอยา่ งเดียว จะทาใหค้ าสงั่ น้ีใส่ค่า id-num salesperson loc comm ใส่ค่าไดเ้ พียงคร้ังเดียว แต่เมื่อนาคาสงั่ น้ีมาใส่ไวใ้ นภาษาปาสคาลขา้ งตน้ จะทาใหค้ าสงั่ ดงั กล่าวมคี วามสามารถสูงข้ึนคือคาสง่ั น้ีจะสามารถทางานซ้า(loop) โดยใส่ค่าต่างๆลงในตวั แปรเพ่ือใหท้ าซ้ากนั หลายๆคร้ัง โดยจากตวั อยา่ งส่วนของโปรแกรมภาษาปาสคาลจะกาหนดลปู วนซ่ึงจะอา่ นค่าจากแฟ้ มขอ้ มลู แลว้ เกบ็ ค่าน้นั ไวใ้ นตวั แปร id-num, salesperson, loc, comm ของตารางSALESTAB การอ่านค่าแลว้ เก็บค่าไวใ้ นตวั แปรจะทาซ้าจนกระทงั่ ขอ้ มลู หมดจากแฟ้ มขอ้ มลูท้งั ภาษา SQL ที่โตต้ อบไดแ้ ละภาษา SQL ท่ีฝังในโปรแกรมจะมลี กั ษณะของคาสง่ั ที่ใชง้ านเหมอื นกนั จะต่างกนั แต่เพียงภาษา SQL ท่ีฝังในโปรแกรมจะมวี ธิ ีการเช่ือมโยงกบั ภาษาอ่ืน 1.2ภาษาสาหรับนิยามข้อมูลคาสง่ั ในภาษา SQL (The subdivision of sql) แบ่งออกเป็น 3 ประเภท คือ- คาสงั่ ภาษาสาหรับการนิยามขอ้ มลู (Data Definition Language : DDL)- คาสง่ั ภาษาสาหรับการจดั การขอ้ มลู (Data Manipulation Language : DML)- คาสงั่ ภาษาควบคุม (Data Control Language : DCL) 1. ตารางข้อมลู สาหรับภาษา SQL เป็ นภาษาท่ใี ช้สาหรับฐานข้อมลู แบบสัมพนั ธ์ คอื ประกอบด้วยตารางและใน ตารางหนง่ึ ๆมี 2 มติ ไิ ด้แก่ แถว (rows) ในแนวนอน และคอลมั น์(columns) ในแนวต้งั ฐานข้อมูล แบบสัมพนั ธ์ เช่น

ตารางพนกั งานขาย(SALESTAB)SALENO SALENAME ADDRESS SALECOM1001 Chaiwat Bangkok 0.121002 Mitree Puket 0.131004 Benjawan Bangkok 0.111007 Kanjana Chiangmai 0.151003 Ternjai Nonthaburi 0.10 คาอธบิ ายในคอลมั ต่างๆในตารางคอลมั น์ ชนิดข้อมูล รายละเอยี ดSALENO Integer เลขประจาตวั พนกั งานขายSALENAME Char(10) ชื่อพนกั งานขายADDRESS Char(10) ท่ีอยขู่ องพนกั งานขายSALECOM Decimal ค่าคอมมชิ ชนั่ ของพนกั งานขายตามคาสงั่ ซ้ือภาษาสาหรับนยิ ามข้อมลู (Data Definition Language : DDL) เป็ นส่วนหนง่ึ ของภาษา SQL โดยเป็ นภาษาทใ่ี ช้นยิ ามโครงสร้างของฐานข้อมูลเพอ่ื ทาการสร้างเปลยี่ นแปลงหรอื ยกเลกิ โครงสร้างของฐานข้อมลู ตามทไี่ ด้ออกแบบไว้ โครงสร้างของฐานข้อมูลสามารถเรียกได้อกี อย่างว่าสคมี า (sehema)ดังน้นั ภาษาสาหรับนยิ ามข้อมูลจงึ เป็ นภาษาทใี่ ช้ในการสร้างสคมี าน้นั เองหลงั จากทไี่ ด้มกี ารออกแบบฐานข้อมลู เรียบร้อยแล้วจะทาให้ทราบว่าฐานข้อมูลน้นั มสี คมี าอย่างไรและประกอบด้วยตารางใดบ้างแต่ละตารางสัมพนั ธ์กนั อย่างไรคยี ์หลกั ของตารางคอื อะไรเมอื่ ทราบถึงรายละเอยี ดต่างๆทไ่ี ด้จากการออกแบบฐานข้อมลู แล้วกจ็ ะทาการสร้างตารางต่างๆทจี่ ะใช้เป็ นฐานข้อมลู ลงในเคร่ืองคอมพวิ เตอร์

2. การสร้างตารางการสร้างตารางในภาษา SQL จะใชค้ าสร้าง CREATE TABLE ซ่ึงเป็นคาสง่ั ที่ใชใ้ นการสร้างตารางข้ึนมาใหม่ คาสงั่ CREATE TABLE จะกาหนดชื่อตารางและกาหนดลกั ษณะขอ้ มลู เป็ นคอลมั น์ต่างๆท่ีต้งั ข้ึนในตารางรวมไปถงึ ชนิดของขอ้ มลู ของแต่ละคอลมั นน์ ้นั ในโครงสร้างของคาสงั่ การสร้างตารางมรี ูปแบบไวยากรณด์ งั ต่อไปน้ีCREATE TABLE<table name>(<column name>< >[<size>][[ constraint <constraint_name>]constraint_type][,<column name>data type>[<size>],………]);CREATE TABLE เป็นคาสงั่ ท่ีตอ้ งมีทุกคร้ังท่ีตอ้ งการสร้างตารางtable name ช่ือตารางที่ตอ้ งการสร้างcolumn name ช่ือของคอลมั น์แต่ละคอลมั น์data type ชนิดขอ้ มลู ของคอลมั นน์ ้นั ๆconstraint ขอ้ กาหนดของคอลมั น์constraint_name ช่ือของขอ้ กาหนดที่ตอ้ งการสร้างใหก้ บั คอลมั น์constraint_type ประเภทของขอ้ กาหนดตวั อยา่ งที่ การสร้างตารางพนกั งานขายCREATE TABLE SALESTAB(SALENO integer,SALENAME char (10),ADDRESS char (10),SALECOM decimal);

จากคาสง่ั จะทาใหไ้ ดต้ ารางพนกั งานขายที่มีคอลมั น์ SALENO มชี นิดขอ้ มลู เป็น integer คอลมั น์SALENAME มีชนิดขอ้ มลู เป็น char มคี วามยาว 10 ตวั อกั ษร คอลมั น์ ADDRESS มชี นิดขอ้ มลู เป็นchar มีความยาว 10 ตวั อกั ษร และคอลมั น์ SALECOM มีชนิดขอ้ มลู เป็น decimalผลของคาสงั่ การสร้างตารางจะไดต้ ารางพนกั งานขายท่ียงั ไม่มีขอ้ มลู ใดๆ เป็นเพยี งแต่โครงของตารางเท่าน้นั ดงั น้ี 3. การสร้างตารางโดยมกี ารกาหนดข้อจากดัการสร้างตารางสามารถกาหนดขอ้ จากดั (constraints)ลงในค่าต่างๆท่ีจะป้ อนลงในคอลมั น์ต่างๆของตารางได้ การกาหนดขอ้ จากดั เป็นการควบคุมความถกู ตอ้ งสมบูรณ์(integrity)ที่จดั เก็บในฐานขอ้ มลูใหม้ คี วามถกู ตอ้ งตามท่ีถกู กาหนดไวห้ รือตามท่ีควรจะเป็น การกาหนดขอ้ จากดั ทาใหข้ อ้ มลู มคี วามเช่ือถือได้ การกาหนดขอ้ จากดั จะทาใหข้ อ้ มลู ในตารางไม่สามารถรับค่าใดๆท่ีไมต่ รงกบั ขอ้ จากดั ที่กาหนดไว้ การกาหนดขอ้ จากดั ท่ีเป็นการควบคุมความถกู ตอ้ งสมบรู ณ์(integrity)ไดด้ งั น้ี3.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);

3.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.3. การกาหนดคียห์ ลกั (primary key) สามารถกาหนดได้ 2 วธิ ีคือ1) การกาหนดใหค้ อลมั น์เดียวเป็นคียห์ ลกัตวั อยา่ ง สมมติวา่ ตอ้ งสร้างตารางพนกั งานท่ีกาหนดใหค้ อลมั น์ SALENO เป็น คียห์ ลกั (primarykey) โดยไมใ่ หม้ ีค่าซ้ากนั และคอลมั น์ 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 ));3.4 การกาหนดคียน์ อก(foreign key ) คียน์ อกเป็นคอลมั นข์ องตารางหน่ึงที่ใชเ้ ช่ือมโยงหรืออา้ งองิขอ้ มลู กบั อกี ตารางหน่ึงที่มีคอลมั น์ที่มีช่ือคอลมั น์เดียวกนั เช่น ลกู คา้ ในตารางลกู คา้ แต่ละคนมีคอลมั น์ SALENO ท่ีอยใู่ นตารางพนกั งานขายหากกาหนดคียน์ อกเป็นขอ้ จากดั ในระดบั คอลมั นจ์ ะใชค้ าสง่ั REFERENCE ต่อทา้ ยประเภทและขนาดของคอลมั นท์ ่ีเป็นคียน์ อก

จากตาราง แสดงการอา้ งองิ ขอ้ มลู โดยคอลมั น์ท่ีมีชื่อเดียวกนั เป็นตารางลกู คา้ และตารางพนกั งานขายโดยในท่นี ้ีจะไมก่ ลา่ วถึงคอลมั นต์ ่างๆที่ไมจ่ าเป็นเพ่อื สะดวกในการศกึ ษา ลกู คา้ ในตารางลกู คา้แต่ละคนมคี อลมั น์ SALENO (เป็นคอลมั นเ์ ดียวกนั กบั คอลมั น์ SALENO ท่ีอยใู่ นตารางพนกั งานขาย) คอลมั น์ SALENOท่ีอยตู่ ารางลกู คา้ เป็นคอลมั นท์ ่ีแสดงพนกั งานขายที่กาหนดใหก้ บั ลกู คา้ แต่ละคนตวั อยา่ ง ถา้ ตอ้ งการสร้างตารางลกู คา้ ( CUSTOMERSTAB) โดยกาหนดใหค้ อลมั นC์ USNO เป็นPRIMARY KEY และคอลมั น์SALENO เป็นคียน์ อก (foreign key) ที่ใชเ้ ช่ือมโยงหรืออา้ งอิงขอ้ มลูกบั ตารางพนกั งานขาย( SALESTAB) โดยใชค้ าสงั่ ดงั น้ี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 จะทาใหเ้ มื่อมกี ารปรับปรุงคอลมั นS์ ALENOในตารางลกู คา้ จะทาใหค้ อลมั น์ SALENOในตารางพนกั งานขายถกู ปรับปรุงไปดว้ ย- คาสง่ั DELETE OF SALESTAB RESTRICTED จะทาใหเ้ มอ่ื ตอ้ งการลบคอลมั น์SALENOในตารางลกู คา้ จะไม่สามารถลบได้ ถา้ คอลมั น์SALENOในตารางพนกั งานขายยงั มขี อ้ มลู อยู่

ตวั อยา่ งสมมุติวา่ ตอ้ งการลบ 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 < 1); 4.ข้อคานงึ ในการใช้คาสั่งสร้างตาราง4.1 ในการสร้างตารางแต่ละตารางอยา่ งนอ้ ยท่ีสุดตอ้ งกาหนดคอลมั นไ์ ด้ 1 คอลมั น์4.2 รายละเอียดของแต่ละคอลมั นแ์ ยกจากกนั ดว้ ยเคร่ืองหมาย comma (,)4.3 สิ้นสุดคาสง่ั ดว้ ยเครื่องหมาย semicolon (;)*หมายเหตุ ขอ้ คานึงเหล่าน้ีอาจมีความแตกต่างกนั ไปบา้ ง ข้ึนอยกู่ บั ผผู้ ลิตแต่ละราย

5.การลบโครงสร้างตารางออกจากระบบเมื่อตอ้ งการลบโครงสร้างตารางท่ีถกู สร้างข้ึนจะสามารถทาไดด้ ว้ ยคาสงั่ DROP TABLE ซ่ึงมีรูปแบบทวั่ ไปดงั น้ีDROP TABLE <table name>[CASCADE CONSTRAINTS];DROP TABLE เป็นคาสงั่ ท่ีตอ้ งมีทุกคร้ังที่ตอ้ งการลบโครงสร้างตารางtable name ช่ือตารางที่ตอ้ งการลบCASCADE CONSTRAINTS ระบบจดั การฐานขอ้ มลู จะทาการลบขอ้ จากดั ต่างๆ(constraint) ท่ีมีการอา้ งถงึ ตารางท้ิงไปใหด้ ว้ ยท้งั หมดตวั อยา่ ง ถา้ ตอ้ งการลบตารางพนกั งานขาย (SALESTAB) จะใชค้ าสง่ั ดงั น้ีDROP TABLE SALESTAB;ผลของคาสง่ั การลบโครงสร้างตาราง จะทาใหข้ อ้ มลู ถกู ลบไปดว้ ยจะทาใหด้ ชั นี( index) ทุกตวั และตารางเสมอื นหรือวิวที่สร้างข้ึนสาหรับตารางSALESTABน้ี จะถกู ลบไปพร้อมๆกนั ดว้ ย เมอ่ื มีการใชค้ าสงั่ ลบโครงสร้างตารางเกิดข้ึนก่อนท่ีจะลบโครงสร้างตารางขอ้ มลู DBMS จะเตือนผใู้ ชถ้ ึงผลท่ีเกิดจากการลบโครงสร้างตาราง 6. การเปลย่ี นแปลงโครงสร้างตารางเม่ือสร้างโครงสร้างตารางแลว้ ถา้ ตอ้ งการเปล่ยี นแปลงโครงสร้างตารางท่ีมกี ารสร้างไวข้ า้ งตน้ ใหม่เช่น ตอ้ งการเพ่มิ หรือลบบางคอลมั นท์ ี่เป็นโครงสร้างหลกั ของตารางออก หรือตอ้ งการเปลีย่ นประเภทขอ้ มลู ของคอลมั น์ ซ่ึงในกรณีท่ีตารางมขี อ้ มลู และกาหนดโครงสร้างไปแลว้ การแกไ้ ขโครงสร้างขอ้ มลู อาจมีผลกระทบกบั ขอ้ มลู ท่ีมีอยู่ แต่ในภาษา SQL สามารถใชค้ าสง่ั ในการแกไ้ ขโครงสร้างขอ้ มลู ไดด้ ว้ ยคาสงั่ การเปล่ยี นแปลงโครงสร้างตาราง รูปแบบของของคาสงั่ ALTERTABLE มี 2 แบบ คือ- ALTER TABLE ที่ใชใ้ นการเพ่มิ คอลมั น์

- ALTER TABLE ท่ีใชใ้ นการเปลย่ี นชื่อคอลมั น์คาสง่ั ALTER TABLE เป็นคาสง่ั ท่ีใชใ้ นการแกไ้ ขปรับปรุงโครงสร้างตาราง เมื่อจาเป็นที่ตอ้ งปรับปรุงจากโครงสร้างเดิมตามที่ไดก้ าหนดไวต้ ้งั แต่สร้างตารางในคร้ังแรก คาสง่ั ALTER TABLEมีรูปแบบดงั น้ีALTER TABLE <table name>Database update(<column_name> 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 แทน

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

ไปท่ีหมายเลข 2999 ในดชั นีเลย การสร้างดชั นีจะทาใหก้ ารคน้ หาขอ้ มลู เร็วข้ึน แต่การสร้างดชั นีก็เปล้ืองพ้นื ท่ีในหน่วยความจาการสร้างดชั นีมรี ูปแบบคาสง่ั ของการสร้างดงั น้ีCREATE INDEX <index name>ON <table name>(<column>name>[,<column name>]..);CREATE INDEX เป็นคาสงั่ ที่ตอ้ งมีทุกคร้ังที่ตอ้ งการสร้างดชั นีindex name ช่ือดชั นีtable name ชื่อตารางที่จะสร้างดชั นีตวั อยา่ ง ถา้ ตารางลกู คา้ เป็นตารางท่ีพนกั งานขายอา้ งถึงบ่อยท่ีสุดเพ่อื ถามหาลกู คา้ ของตนเองแลว้ ก็ควรสร้างดชั นีข้ึนในคอลมั นพ์ นกั งาน( SALENO) ของตารางลกู คา้ จะใชค้ าสงั่ ดงั น้ีCREATE UNIQUE INDEX CLIENTGROUP ON CUSTOMERSTAB(SALENO);จากคาสง่ั ‚UNIQUE‛ เป็นการระบุวา่ ดชั นี( index) ที่สร้างข้ึนในคอลมั น์ CLIENTGROUP ซ่ึงในคอลมั นน์ ้ีจะมคี ่าที่ซ้ากนั ไม่ได้ และจะใชค้ อลมั น์ SALENO เป็นขอ้ มลู ในการคน้ หา ผลของคาสง่ัตารางลกู คา้ จะมี CLIENTGROUP เป็นดชั นี( index) ในการคน้ หาขอ้ มลู โดยเรียงลาดบั ตามขอ้ มลูในคอลมั น์ SALENO ของตารางลกู คา้ index คอลมั นC์ LIENTGROUP ที่สร้างข้ึนน้ีจะไมถ่ กู เกบ็ ไว้ในตารางลกู คา้ แต่จะถกู เก็บไวแ้ ยกต่างหากในหน่วยความจาของเครื่องคอมพิวเตอร์ 9. การลบดัชนขี องตารางเมื่อตอ้ งการจบดชั นีท่ีสร้างข้ึน ก็สามารถทาไดด้ ว้ ยคาสงั่ DROP INDEX แลว้ ตามดว้ ยช่ือดชั นีที่ตอ้ งการลบ โดยคาสงั่ การลบดชั นีมรี ูปแบบทวั่ ไปดงั น้ีDROP INDEX <index name>;DROP INDEX เป็นคาสงั่ ที่ตอ้ งมที ุกคร้ังทต่ี อ้ งการลบดชั นีindex name ช่ือดชั นี

ในการลบดชั นีออกไปจะไมม่ ีผลกระทบกบั รายละเอียดในคอลมั น์ต่าง ๆ ภายในตารางแต่อยา่ งไรเพราะดชั นีที่สร้างข้นึ ไม่ไดบ้ รรจุไวใ้ นตารางตวั อยา่ ง ถาั ตอ้ งการลบดชั นีช่ือ CLIENTGROUP ใชค้ าสงั่ ดงั น้ีDROP INDEX CLIENTGROUP ;ผลของคาสง่ั น้ีจะทาใหด้ ชั นีชื่อ CLIENTGROUP ท่ีเดิมเป็นดชั นีของตารางลกู คา้ ไดถ้ กู ลบออกไปทาใหต้ ารางลกู คา้ ไมม่ ีดชั นีดงั กล่าว 2.การบนั ทกึ ข้อมูล การปรับปรุงข้อมลู และการลบข้อมลู 2.1 การบันทกึ ข้อมลู การปรับปรุงข้อมลู การลบข้อมลูในระบบฐานขอ้ มลู การบนั ทึกขอ้ มลู การปรับปรุงขอ้ มลู และการลบขอ้ มลู ถือเป็นส่ิงสาคญั ในภาษา SQL มภี าษาสาหรับการจดั การขอ้ มลู (Data manipulation Language : DML) ซ่ึงเป็นภาษาที่ใชใ้ นการบนั ทึกขอ้ มลู การปรับปรุงขอ้ มลู และการลบขอ้ มลู ภาษาสาหรับการจดั การขอ้ มลู เป็นส่วนประกอบหน่ึงในภาษา SQL โดยภาษาสาหรับการจดั การขอ้ มลู ใชส้ าหรับจดั การขอ้ มลู ภายในตารางของฐานขอ้ มลู ในการใชค้ าสงั่ ที่เป็นภาษาสาหรับนิยามขอ้ มลู ของภาษา SQL เช่น CREATETABLE จะทาใหไ้ ดโ้ ครงสร้างตารางวา่ งๆ ที่ยงั ไมม่ ขี อ้ มลู ใดๆเก็บอยู่ คาสงั่ ในภาษาสาหรับการจดั การขอ้ มลู จะเป็นคาสงั่ ท่ีช่วยในการจดั การขอ้ มลู ภายในโครงสร้างตารางที่สร้างข้ึน ตวั อยา่ งของคาสงั่ ในภาษาสาหรับการจดั การขอ้ มลู จะเป็นคาสงั่ การปรับปรุงขอ้ มลู ไดแ้ ก่ การเพม่ิ ขอ้ มลู(INSERT) การปรับปรุง (UPDATE) และ การลบขอ้ มลู (DELETE)ซ่ึงจะกล่าวต่อไป และคาสงั่ การเรียกคน้ ขอ้ มลู ไดแ้ กค่ าสง่ั (SELECT)ซ่ึงจะกลา่ วในเร่ืองต่อไปคาสง่ั ที่ใชใ้ นการปรับปรุงขอ้ มลู ของภาษา SQL คือ การเพม่ิ ขอ้ มลู (INSERT) การปรับปรุงขอ้ มลู(UPDATE) และ การลบขอ้ มลู (DELETE) เป็นคาสง่ั ในภาษาการจดั การขอ้ มลู เมื่อโครงสร้างหลกัของตารางไดถ้ กู กาหนดข้ึนเรียบร้อยแลว้ กจ็ ะทาการบนั ทกึ ขอ้ มลู ลงในตารางหลกั หรืออาจทาการปรับปรุง หรือลบขอ้ มลู ในภายหลงั คาสง่ั ท้งั 3 น้ี เมือ่ ดาเนินการในภาษา SQL จะไมแ่ สดงผลลพั ธ์ออกมาทางหนา้ จอ แต่ผลของคาสงั่ จะมีผลต่อขอ้ มลู ผใู้ ชส้ ามารถดผู ลของการใชค้ าสง่ั ในการเพิ่มขอ้ มลู การปรับปรุงและการลบขอ้ มลู โดยใชค้ าสง่ั การเรียกคน้ ขอ้ มลู (SELECT)

1. คาส่ังการเพม่ิ ข้อมลูคาสง่ั การเพม่ิ ขอ้ มลู ในตารางจะใชค้ าสง่ั INSERT จะมีอยู่ 2 รูปแบบคือ การเพิม่ ขอ้ มลู เขา้ ไปทีละแถว และ การเพิ่มขอ้ มลู โดยการดึงกล่มุ ขอ้ มลู ดว้ ยคาสง่ั คน้ หาขอ้ มลู1.1 คาสงั่ การเพม่ิ ขอ้ มลู ทีละแถวโดยระบุขอ้ มลู ที่จะ INSERTเขา้ ไปโดยตรง รูปแบบของคาสงั่ เป็นดงั น้ีINSERT INTO <tablename>[(column 1, column 2,…)]VALUE(<value1,value2, …>);INSERT INTO เป็นคาสง่ั ท่ีตอ้ งมีทุกคร้ังที่ตอ้ งการเพิ่มขอ้ มลูtablename ช่ือตารางที่จะเพมิ่ ขอ้ มลูcolumn 1, column 2,…คอลมั ท่ีตอ้ งการเพม่ิ ขอ้ มลูvalue1,value2, ค่าขอ้ มลู ของแต่ละคอลมั ภท์ ี่ตอ้ งการเพ่มิตวั อยา่ ง ถา้ ตอ้ งการจะใส่ขอ้ มลู ทุกคอลมั นล์ งในตารางลกู คา้INSERT INTO SALESTABVALUES( 1001, ‚Chaiwat‛, ‚Bangkok‛,0.12);ผลของคาสงั่ น้ี จะมขี อ้ มลู ปรากฎในทุกคอลมั น์ในตารางพนกั งานขายดงั น้ีSALENO SALENAME ADDRESS SALECOM1001 Chaiwat Bangkok 0.12ตวั อยา่ ง ถา้ ตอ้ งการจะใส่ขอ้ มลู บางคอลมั น์ เช่น ช่ือเมือง Bangkok ชื่อลกู คา้ Arlee และหมายเลขลกู คา้ 2001 ลงในตารางลกู คา้ ใชค้ าสง่ั ดงั น้ีINSERT INTO CUSTOMERSTAB(ADDRESS,CUSNAME,CUSNO)

VALUES( 'Bangkok','Arlee', 2001);ผลของคาสง่ั ในตารางลกู คา้ จะทาใหค้ อลมั น์ ADDRESS มคี ่าเป็น Bangkok คอลมั น์ CUSNAMEจะมีค่าเป็น Arlee คอลมั น์ CUSNO จะมคี ่าเป็น 2001ดงั น้ีCUSNO CUSNAME ADDRESS RATING SALENO2001 Arlee Bangkokจะเห็นวา่ ไม่ไดใ้ ส่ค่าในคอลมั น์ RATING และ SALENO ไว้ ดงั น้นั ท้งั สองคอลมั นน์ ้ีจะมคี ่าเป็นNULL โดยอตั โนมตั ิ1.2 คาสง่ั การเพ่ิมขอ้ มลู โดยการดึงกลุ่มขอ้ มลู ดว้ ยคาสง่ั คน้ หาขอ้ มลู ในภาษา SQL สามารถใชค้ าสง่ัINSERT ในการนาค่าหรือหาค่าจากตารางหน่ึงแลว้ ไปใส่ไวใ้ นอกี ตาราหน่ึงได้ โดยไดค้ ่าน้นั มาจากการสอบถามขอ้ มลู รูปแบบเป็นดงั น้ีINSERT INTO <table name>[(column 1, column 2,…)]SELECT statement;INSERT INTO เป็นคาสง่ั ท่ีตอ้ งมที ุกคร้ังท่ีตอ้ งการเพ่ิมขอ้ มลูtablename ช่ือตารางท่ีจะเพม่ิ ขอ้ มลูSELECT statement ประโยคคาสงั่ SELECTที่ตอ้ งการขอ้ มลู อกี ตารางหน่ึงตวั อยา่ ง ถา้ ตอ้ งการใส่ขอ้ มลู พนกั งานลงในตาราง BANGKOKSTAFF โดยขอ้ มลู ท่ีจะใส่ลงไปน้นัไดม้ าจากตารางพนกั งานขายที่อาศยั อยใู่ น ‚Bangkok‚INSERT INTO BANGKOKSTAFFSELECT *FROM SALESTABWHERE ADDRESS = ‘Bangkok’;

ผลของคาสง่ั น้ีจะทาใหไ้ ดข้ อ้ มลู พนกั งานที่อยใู่ นเมือง Bangkok ( ADDRESS = ‘Bangkok’)ท้งั หมดไปใส่ไวใ้ นตาราง BANGKOKSTAFF โดยตาราง BANGKOKSTAFF ไดถ้ กู สร้างไวแ้ ลว้ดว้ ยคาสงั่ CREATE TABLE ในการสร้างตาราง BANGKOKSTAFF จะตอ้ งสร้างใหม้ ี 4 คอลมั น์และมีชนิดขอ้ มลู ตรงกบั คอลมั น์ของตารางพนกั งานขาย (โดยไม่จาเป็นตอ้ งมีชื่อคอลมั น์เหมือนกนั ) 2. คาสั่งปรับปรุงแถวข้อมลูหลงั จากที่ป้ อนขอ้ มลู เขา้ ไปเกบ็ ไวใ้ นตารางแลว้ กรณีทีต่ อ้ งการปรับปรุงแกไ้ ขขอ้ มลู สามารถทาได้ดว้ ยภาษา SQL การปรับปรุงแถวขอ้ มลู เป็นการปรับปรุงหรือแกไ้ ขค่าคอลมั น์ ซ่ึงในคาสง่ั ปรับปรุงขอ้ มลู อาจมีมากกว่า 1 คอลมั นใ์ นแถวทุกแถวที่มเี ง่ือนไขสอดคลอ้ งกบั ท่ีระบุไวห้ ลงั คาวา่ WHEREรูปแบบของคาสงั่ ปรับปรุงแถวขอ้ มลู มดี งั น้ีUPDATE <table name> SET <column 1>[, column 2,…] = <expression |sunquery>[WHERE<condition>];UPDATE เป็นคาสง่ั ที่ตอ้ งมีทุกคร้ังที่ตอ้ งการปรับปรุงขอ้ มลูtable name ช่ือตารางท่ีตอ้ งการปรับปรุง

SET <column > ช่ือคอลมั นท์ ี่ตอ้ งการปรับปรุงexpression ค่าขอ้ มลู ท่ีตอ้ งการปรับปรุงWHERE<condition> เงื่อนไขในการปรับปรุงตวั อยา่ ง ถา้ ตอ้ งการเปล่ยี นค่า RATING ของลกู คา้ ท้งั หมดในตารางลกู คา้ ใหเ้ ป็น 200 จะตอ้ งป้ อนคาสงั่ ดงั น้ีUPDATE CUSTOMERSTABSET RATING = 200;ผลของคาสงั่ จะทาใหค้ อลมั น์ RATING ของตารางลกู คา้ มคี ่าเป็น 200 ทุกแถวและเมื่อเขา้ ไปดูขอ้ มลูในตารางลกู คา้ จะปรากฎขอ้ มลู ดงั น้ี

หากตอ้ งการจะเปลย่ี นเฉพาะแถวใดแถวหน่ึงเท่าน้นั ก็สามารถทาไดด้ งั น้ีตวั อยา่ ง ถา้ ตอ้ งการจะเปลีย่ นค่า RATING ใหก้ บั ลกู คา้ ท้งั หมด ที่มหี มายเลขประจาตวั พนกั งานขาย(SALENO) เป็น 1001 ใหม้ ีค่า RATINGเป็น 200UPDATE CUSTOMERSTABSET RATING = 200WHERE SALENO = 1001;ผลของคาสงั่ จะทาใหต้ ารางลกู คา้ เดิมเปล่ียนเป็นตารางใหม่ในตารางใหมน่ ้ี ลกู คา้ ท้งั หมดที่มีหมายเลขประจาตวั เป็น 1001 จะมคี ่า RATING เป็น 200 ดงั น้ี

3. คาสั่งการลบข้อมลู ท้งั แถวคาสง่ั ในการลบแถวขอ้ มลู เป็นคาสงั่ ท่ีใชใ้ นการลบแถวขอ้ มลู ทุกแถวที่มีเง่ือนไขสอดคลอ้ งกบั ท่ีระบุไวห้ ลงั WHERE คาสง่ั การลบขอ้ มลู มีรูปแบบทวั่ ไปดงั น้ีDELETE FROM <table name>[WHERE<condition>];DELETE FROM เป็นคาสงั่ ท่ีตอ้ งมที ุกคร้ังที่ตอ้ งการลบขอ้ มลูtable name ช่ือตารางที่ตอ้ งการลบขอ้ มลูWHERE<condition> เง่ือนไขในการลบขอ้ มลูตวั อยา่ ง ถา้ ตอ้ งการลบแบบมเี ง่ือนไข เช่น ตอ้ งการลบพนกั งานขายช่ือ Ternjai ซ่ึงมีหมายเลขพนกั งาน (SALENO)=1003 ออกจากตารางจะใชค้ าสง่ั วา่DELETE FROM SALESTABWHERE SALENO = 1003;ผลของคาสง่ั จากตารางพนกั งานขายเดิมจะทาใหไ้ ดต้ ารางใหม่ดงั น้ีตารางพนกั งานขาย(SALESTAB)SALENO SALENAME ADDRESS SALECOM1001 Chaiwat Bangkok 0.121002 Mitree Puket 0.131004 Benjawan Bangkok 0.111007 Kanjana Chiangmai 0.15

1003 Ternjai Nonthaburi 0.10SALENO SALENAME ADDRESS SALECOM1001 Chaiwat Bangkok 0.121002 Mitree Puket 0.131004 Benjawan Bangkok 0.111007 Kanjana Chiangmai 0.15โดยปกติแลว้ การลบขอ้ มลู จะกระทาการลบเพยี งบางแถวของตารางเท่าน้นั การลบแถวต่าง ๆ ออกจากตารางดว้ ยคาสงั่ ในการปรับปรุงคือคาสงั่ DELETE คาสง่ั น้ีจะลบแถวท้งั แถวแต่ไมส่ ามารถลบค่าเพียงคอลมั นใ์ ดคอลมั นห์ น่ึงตวั อยา่ ง ถา้ ตอ้ งการลบรายละเอยี ดท้งั หมดของตารางพนกั งานขายจะตอ้ งป้ อนคาสง่ั ต่อไปน้ีDELETE FROM SALESTAB;ในตารางพนกั งานขายก็จะวา่ งไมม่ คี ่าใดๆ อยแู่ ต่ตารางยงั ปรากฎอยู่ ถา้ ตอ้ งการตารางออกไปจะใช้คาสง่ั DROP TABLEตวั อยา่ ง ถา้ ตอ้ งการลบตาราง SALESTABใชค้ าสงั่ ดงั น้ีDROP TABLE SALESTAB; 2.2การเรียกค้นข้อมลู อย่างง่าย การเรียกคน้ ขอ้ มลู เป็นการสอบถามขอ้ มลู หรือ ‚Query‛ โดยการนาขอ้ มลู จากฐานขอ้ มลู มาแสดงออกทางจอภาพ การสอบถามขอ้ มลู น้ีในภาษา SQL ใชค้ าสง่ั SELECT โดยการเรียกคน้ ขอ้ มลูจะเป็นไปตามเง่ือนไขท่ีผใู้ ชข้ อ้ มลู ระบุ

1. การเรียกค้นดูทกุ คอลมั น์ในตารางคาสงั่ SELECT แบบง่ายมีรูปแบบดงั น้ีSELECT *FROM <table name>;SELECT * เป็นคาสงั่ ที่ตอ้ งมีทุกคร้ังที่ตอ้ งการเรียกคน้ ขอ้ มลู ทุกคอลมั น์FROM เป็นการกาหนดวา่ ใหเ้ รียกดขู อ้ มลู ไดจ้ ากตารางใดบา้ งtable name ชื่อตารางที่ตอ้ งการเรียกคน้ ขอ้ มลูการเรียกดขู อ้ มลู สามารถเรียกดไู ดม้ ากกวา่ 1 คอลมั น์ข้ึนไป โดยถา้ มมี ากกว่า 1 คอลมั น์ แต่ละคอลมั นจ์ ะตอ้ งคน่ั ดว้ ยเคร่ืองหมายคอมม่า(,) และถา้ ตอ้ งการดทู ุกคอลมั น์จะใชเ้ คร่ืองหมาย ดอกจนั(*) หลงั SELECT การใชค้ าสง่ั SELECT จะใชค้ วบค่กู บั คาสง่ั FROM เสมอในการเลือกตารางการใชค้ าสงั่ SELECT ในการเรียกคน้ ขอ้ มลู ทุกคอลมั นใ์ นตารางจะใชเ้ คร่ืองหมายดอกจนั (*)ตามหลงั คาสง่ั SELECTตวั อยา่ ง ตาราง CHECKSCHECK# PAYEE AMOUNT REMARKS 150 Have sons next time1. Malee Benjanee 24534 Train to Chiangmai 20032 Cellular Phone2. Reading R.R 98 Gas 150 Groesries3. Malee Benjanee 25 Wild Night Out 251 Gas4. Surasit Utities5. Jintana $ Mitree6. Cash7. Benjawan Gasตวั อยา่ ง ถา้ ตอ้ งการดทู กุ คอลมั น์ในตารางกจ็ ะใชเ้ คร่ืองหมายดอกจนั (*) แทนรายการคอลมั นไ์ ด้ท้งั หมดไดด้ งั น้ี

select * from checks;ผลลพั ธ์CHECK# PAYEE AMOUNT REMARKS1. Malee Benjanee 150 Have sons next time2. Reading R.R 24534 Train to Chiangmai3. Malee Benjanee 20032 Cellular Phone4. Surasit Utities 98 Gas5. Jintana $ Mitree 150 Groesries6. Cash 25 Wild Night Out7. Benjawan Gas 251 Gasจากคาสง่ั select * จะเป็นการบอกใหน้ าขอ้ มลู ท้งั จากตาราง CHECKS มา แสดง (from checks) โดยลาดบั ตามคอลมั นใ์ นฐานขอ้ มลู 2. การเรียกค้นข้อมลู เฉพาะคอลมั น์ใดๆในตารางและการเปลย่ี นลาดบั คอลมั น์์การใชค้ าสง่ั SELECT ในการเรียกคน้ ขอ้ มลู เฉพาะคอลมั นท์ ี่สนใจทาไดโ้ ดยใส่เฉพาะคอลมั น์ที่ตอ้ งการดูในส่วนของคาสง่ั SELECT มีรูปแบบคงั น้ีSELECT <column 1, column 2,…>FROM <table name>;SELECT เป็นคาสงั่ ที่ตอ้ งมีทุกคร้ังท่ตี อ้ งการเรียกคน้ ขอ้ มลูcolumn 1, column 2,…เป็นคอลมั น์ที่ตอ้ งการเรียกคน้FROM เป็นการกาหนดว่าใหเ้ รียกดขู อ้ มลู ไดจ้ ากตารางใดบา้ งtable name ช่ือตารางที่ตอ้ งการเรียกคน้ ขอ้ มลู

การเลอื กบางคอลมั น์ตวั อยา่ ง ถา้ ตอ้ งการแสดงขอ้ มลู บางคอลมั น์จะใช้ เช่น ถา้ ตอ้ งการดูคอลมั น์ CHECK# และ AMOUNTใช้คาสง่ั ดงั น้ีSELECT CHECK#, amount from checks;ผลลพั ธ์ CHECK# AMOUNT 1 150 2 24534 3 20032 4 98 5 150 6 25 7 251จะเห็นไดว้ า่ เราสามารถใชท้ ้งั อกั ษรตวั ใหญ่และตวั เลก็ ปนกนั ในคาสง่ั ซ่ึงอกั ษรตวั ใหญ่และตวั เลก็ จะไมม่ ีความแตกต่างกนัตวั อยา่ ง ถา้ ตอ้ งแสดงขอ้ มลู โดยการเปล่ียนลาดบั คอลมั น์ของขอ้ มลู จะใชค้ าสงั่ ดงั น้ีSELECT PAYEE, REMARKS, AMOUNT, CHECK#FROM checks;ผลลพั ธ์ PAYEE REMARKS AMOUNT CHECK# Malee Have sons next 150 1 Benjanee time Reading R.R. Train to 24534 2 Chiangmai

Malee Cellular Phone 20032 3BenjaneeSurasit Utilities Gas 98 4Jintana $ Groesries 150 5MitreeCash Wild Night Out 25 6Benjawan Gas Gas 251 7 3.การเรียกค้นข้อมลู กบั คาสั่ง Distinctionจากตาราง CHECKS ถา้ ตอ้ งการดคู อลมั น์ AMOUNT เป็นดงั น้ีselect amount from checks;ผลลพั ธ์ AMOUNT 150 24534 20032 98 150 25 251จากผลลพั ธจ์ ะเห็นว่าในคอลมั น์ AMOUNT มีขอ้ มลู ท่ีซ้ากนั อยคู่ ือ 150 ถา้ ใชค้ าสงั่ Distinct ในคาสง่ัSELECT จะทาใหข้ อ้ มลู ที่ซ้ากนั น้นั แสดงออกมาเพียงคร้ังเดียวดงั น้ีselect DISTINCT amount from checks;ผลลพั ธ์

AMOUNT 25 251 98 150 20032 24534จะเห็นว่าจะแสดงขอ้ มลู ออกมาเพียง 6 แถวเท่าน้นั 4.การใช้คาสั่ง SELECT กบั WHERESELECT <column 1, column 2,…>FROM <table name>[WHERE<condition>];SELECT เป็นคาสงั่ ท่ีตอ้ งมีทุกคร้ังท่ตี อ้ งการเรียกคน้ ขอ้ มลูcolumn 1, column 2,…คอลมั นท์ ่ีตอ้ งการเรียกคน้FROM เป็นการกาหนดว่าใหเ้ รียกดขู อ้ มลู ไดจ้ ากตารางใดบา้ งtable name ช่ือตารางที่ตอ้ งการเรียกคน้ ขอ้ มลูWHERE<condition> ส่วนของคาสง่ั ท่ีบอกเง่ือนไขที่จะใชใ้ นการคน้ หาขอ้ มลูการใช้ WHERE ในคาสงั่ SELECT จะช่วยใหส้ ามารถสืบคน้ ขอ้ มลู ไดอ้ ยา่ งเจาะจงมากกวา่ เช่น ถา้ใชเ้ ฉพาะ SELECT อยา่ งเดียวจะไดข้ อ้ มลู ท้งั หมด ตวั อยา่ งเช่นตวั อยา่ ง ตาราง BIKESNAME FRAMESIZE COMPOSITION MILESRIDDEN TYPETREK 2300 22.5 CARBON FIBER 3500 RACING

BURLEY 22 STEEL 2000 TANDEM STEEL 1500 COMMUTERGIANT 19 STEEL 500 TOURING STEEL 100 MOUNTAINFUJI 20 ALUMINUM 3000 RACINGSPECIALIZED 16CANNONDALE 22.5ถา้ ตอ้ งการจะดูเฉพาะขอ้ มลู ของ ‚BURLEY‛ เท่าน้นั เราจะตอ้ งใช้ คาสง่ั WHERE ดงั น้ีSELECT * FROM BIKESWHERE NAME = ‘BURLEY’ ;ผลลพั ธ์ NAME FRAMESIZE COMPOSITION MILESRIDDEN TYPEBURLEY 22 STEEL 2000 TANDEM 5.โอเปอเรเตอร์การเรียกคน้ ขอ้ มลู อยา่ งมีเง่ือนไขตามหลกั ของภาษา SQL จะอยหู่ ลงั คาสง่ั WHERE ซ่ึงสามารถเปรียบเทียบตามโอเปอเรเตอร์ ในภาษา SQL อาจแบ่งโอเปอเรเตอร์ ไดเ้ ป็น 4 กลุ่ม คือ1. โอเปอเรเตอร์คณิตศาสตร์(Arithmetic Operators)2. โอเปอเรเตอร์เปรียบเทียบ(Comparison Operators)3. โอเปอเรเตอร์อกั ขระ(Character Operators)4. โอเปอเรเตอร์ตรรกะ(Logical Operators)4.1. โอเปอเรเตอร์คณิตศาสตร์(Arithmetic Operators) ไดแ้ ก่ operators ที่เป็น plus (+) minus (-),divide (/), multiply (*), and modulo (%)- โอเปอเรเตอร์ Plus (+) เป็นคาสง่ั ท่ีใชร้ วมค่า 2 ค่าเขา้ ดว้ ยกนั ดงั ตวั อยา่ งต่อไปน้ี

จากตาราง PRICE มรี ายละเอียดดงั น้ี ITEM WHOLESALE TOMATOES 34 POTATOES 51 BANANAS 67 TURNIPS 45 CHEESE 89 APPLES 23ตวั อยา่ ง ถา้ ในคาสงั่ ในคอลมั น์ WHOLESALE ตอ้ งการ บวก 15 เขา้ ไป ผลลพั ธท์ ่ีไดจ้ ะแสดงค่าของWHOLESALE ท่ีบวก 15 เขา้ ไปโดยคอลมั น์ แต่จะแสดงเพยี งชวั่ คราวที่หนา้ จอเท่าน้นั โดยไม่มีผลต่อขอ้ มลู ของคอลมั น์ WHOLESALE ในตาราง PRICE คอลมั น์ WHOLESALE ในตาราง PRICEจะมีค่าเหมือนเดิมและจากคอลมั น์ WHOLESALE+15 สามารถใหแ้ สดงผลหนา้ จอเป็นชื่อคอลมั น์อื่นได้ โดยถา้ตอ้ งการให้ WHOLESALE +15 และใหแ้ สดงผลเป็นคอลมั น์ RETAIL จะใชค้ าสง่ั ดงั น้ีSELECT ITEM, WHOLESALE, (WHOLESALE + 0.15) RETAILFROM PRICE;ผลลพั ธ์ ITEM WHOLESALERETAIL TOMATOES 34 49 POTATOES 51 66 BANANAS 67 82 TURNIPS 45 60 CHEESE 89 104 APPLES 23 38

นอกจากน้ีเราสามารถแสดงขอ้ มลู ในคอลมั น์ใหม้ ีชื่อใหม่ตามท่ีตอ้ งการได้ เช่น ตอ้ งการใหแ้ สดงขอ้ มลู ในคอลมั น์ ITEM ในตาราง PRICE ใหแ้ สดงออกมาทางหนา้ จอเป็นชื่อคอลมั น์ PRODUCEได้ โดยในคาสง่ั ยงั ไมใ่ ส่เครื่องหมายคอมม่าระหว่าง ITEM และ PRODUCE เพือ่ ใหภ้ าษาSQLเขา้ ใจไดว้ า่ จะแสดงคอลมั น์ ITEM เป็นคอลมั น์ PRODUCE ดงั ตวั อยา่ งต่อไปน้ีSELECT ITEM PRODUCE, WHOLESALE, WHOLESALE * 0.25 RETAILFROM PRICE:ผลลพั ธ์ PRODUCE WHOLESALE RETAIL TOMATOES 34 59 POTATOES 51 76 BANNANAS 67 92 TURNIPS 45 70 CHEESE 89 114 APPLES 23 48โอเปอร์เรเตอร์ Minus (-) คาสงั่ Minus ใชไ้ ดเ้ ป็น 2 กรณีคือ1. การเปลี่ยนเครื่องหมายจากบวกเป็นลบและจากลบเป็นบวก2. การนาขอ้ มลู ของคอลมั นห์ น่ึงไปลบออกจากขอ้ มลู ของอีกคอลมั น์หน่ึง1.การเปล่ยี นเคร่ืองหมายจากบวกเป็นลบและจากลบเป็นบวก เช่น รายละเอียดของตาราง HILOWเป็นดงั น้ีตวั อยา่ งตาราง HILOW STATE HIGHTEMP LOWTEMP CA 120 -50 FL 110 20 LA 101 15

ND 99 -70 NE 100 -60ตวั อยา่ ง ถา้ ตอ้ งการใหค้ อลมั น์ HIGHTEMP และ LOWTEMP มีค่าจากลบเป็นบวก จากบวกเป็นลบ และแสดงหนา้ จากคอลมั น์ HIGHTEMP เป็นคอลมั น์ LOWS และคอลมั น์ LOWTEMP เป็นคอลมั น์ HIGHS ใชค้ าสงั่ ดงั น้ีSELECT STATE, - HIGHTEMP LOWS, -LOWTEMP HIGHSFROM HILOW;ผลลพั ธ์ STATE LOWS HIGHS CA -120 50 FL -110 -20 LA -101 -15 ND -99 70 NE -100 602.การนาขอ้ มลู ของคอลมั น์หน่ึงไปลบออกจากขอ้ มลู ของอีกคอลมั น์หน่ึงตวั อยา่ ง ถา้ ตอ้ งการนาคอลมั น์ HIGHTEMP ลบออกจากคอลมั น์ LOWTEMPแลว้ นาผลลพั ธท์ ี่ได้แสดงในคอลมั น์ DIFFERENCE โดยใชค้ าสงั่ ดงั น้ีSELECT STATE,HIGHTEM LOWS,LOWTEMP HIGHS, (HIGHTEMP - LOWTEMP ) DIFFERENCEFROM HILOW;ผลลพั ธ์์ STATE LOWS HIGHS DIFFERENCE CA -50 120 170

FL 20 110 90 LA 15 99 84 ND -70 101 171 NE -60 100 160- โอเปอร์เรเตอร์ Divide (/)เป็นคาสงั่ ท่ีใชใ้ นการหารขอ้ มลู ดงั ตวั อยา่ ง เช่นตวั อยา่ งตาราง PRICE ITEM WHOLESALE TOMATOES 34 POTATOES 51 BANNANAS 67 TURNIPS 45 CHEESE 89 APPLES 23เม่อื ตอ้ งการใหค้ อลมั น์ WHOLESALE ถกู หารดว้ ย 2 และแสดงในคอลมั น์ SALEPRICE จะใช้คาสงั่ ดงั น้ีSELECT ITEM, WHOLESALE, (WHOLESALE/2) SALEPRICEFROM PRICE;ผลลพั ธ์ ITEM WHOLESALE SALEPRICE TOMATOES 34 17 POTATOES 51 25.5 BANNANAS 67 33.5 TURNIPS 45 22.5 CHEESE 89 44.5 APPLES 23 11.5

จากตวั อยา่ งคอลมั น์ SALEPRICE เป็นผลลพั ธท์ ่ีเกิดจากการนาคอลมั น์ WHOLESALE มาหารดว้ ย2- โอเปอร์เรเตอร์ Multiply (*)เป็นคาสงั่ ที่ใชใ้ นคูณค่าของขอ้ มลู ในคอลมั น์ตวั อยา่ งตาราง PRICE ITEM WHOLESALE TOMATOES 34 POTATOES 51 BANANAS 67 TURNIPS 45 CHEESE 89 APPLES 23ตวั อยา่ ง ถา้ ตอ้ งการคูณคอลมั น์ WHOLESALE ดว้ ย 0.9 ใหไ้ ดผ้ ลลพั ธเ์ ป็นขอ้ มลู ในคอลมั นใ์ หม่ท่ีช่ือ NEWPRICE จะใชค้ าสงั่ ดงั น้ีSELECT ITEM, WHOLESALE, WHOLESALE * 0.9 NEWPRICEFROM PRICE;ผลลพั ธ์ ITEM WHOLESALE NEWPRICE TOMATOES 34 30.6 POTATOES 51 45.9 BANANAS 67 60.3 TURNIPS 45 40.5 CHEESE 89 80.1 APPLES 23 20.7- โอเปอเรเตอร์ Modulo (%)เป็นคาสง่ั ที่ไดผ้ ลลพั ธเ์ ป็นเศษท่ีไดจ้ ากการหาร

ตวั อยา่ ง ตาราง REMAINS NUMERATOR DENOMENATOR 10 5 83 23 9 40 17 1024 16 85 34ตวั อยา่ ง ถา้ ตอ้ งการสร้างคอลมั น์ REMAINDER ท่ีมีขอ้ มลู ที่เกิดจากการนาขอ้ มลู ในคอลมั น์NUMERATOR หารดว้ ยขอ้ มลู ในคอลมั น์ DENOMINATOR เหลอื เศษในการหารเท่าไรแลว้ นาค่าที่ไดไ้ ปเกบ็ ไวใ้ นคอลมั น์ REMAINDER ดงั คาสง่ั ต่อไปน้ีSELECT NUMERATOR,DENOMINATOR,NUMERATOR%DENOMINATOR REMAINDERFROM REMAINS;ผลลพั ธ์ NUMERATOR DENOMENATORREMAINDER 10 5 0 83 2 23 9 5 40 17 6 1024 16 0

85 34 17นอกจากการใชเ้ ครื่องหมาย % ในคาสงั่ Modulo แลว้ ในภาษา SQL ยงั ใชฟ้ ังกช์ นั MOD แทนเคร่ืองหมาย %ไดซ้ ่ึงจะใหผ้ ลลพั ธเ์ ช่นเดียวกนั ดงั คาสง่ั ต่อไปน้ีSELECT NUMERATOR,DENOMINATOR,MOD(NUMERATOR, DENOMONATOR) REMAINDERFROM REMAINS;4.2. โอเปอรเรเตอร์ เปรียบเทียบ (Comparison Operators เป็น Operator ที่จะใหค้ ่าออกมา 3 ค่า คือถกู (TRUE) ผดิ (FALSE) ไมร่ ู้ (Unknow) การไมร่ ู้หมายถงึ ถา้ นาขอ้ มลู ท่ีมีค่าไปเปรียบเทียบกบัขอ้ มลู ท่ีเป็น NULL ตวั เปรียบเทียบจะใหค้ ่าไม่รู้ตวั อยา่ งในตาราง PRICE ITEM WHOLESALE TOMATOES 34 POTATOES 51 BANANAS 67 TURNIPS 45 CHEESE 89 APPLES 23 ORANGES -ตวั อยา่ ง ถา้ ตอ้ งการดวู า่ ITEM ท่ีไมม่ คี ่า WHOLESALE หรือค่า WHOLESALEเป็นค่าวา่ งจะใช้คาสงั่ ดงั น้ีSELECT *FROM PRICE

WHERE WHOLESALE IS NULL;หรือSELECT *FROM PRICEWHERE WHOLESALE = NULL;ผลลพั ธ์ ITEM WHOLESALE ORANGES -4.3 โอเปอเรเตอร์ตวั อกั ษร(Character Operators) ตวั โอเปอเรเตอร์ LIKE เป็นการคน้ หาขอ้ มลู ของคอลมั นท์ ี่เก็บขอ้ มลู ประเภทตวั อกั ษรเท่าน้นั โดยไม่ทราบค่าขอ้ มลู ท้งั หมดที่จะคนั หา หรือรู้เพียงบางตวั อกั ษรเท่าน้นั โอเปอร์เรเตอร์ LIKE จะระบุต่อทา้ ยชอ่ื คอลมั น์ท่ีเป็นเงื่อนไข โดยจะใช้สญั ลกั ษณ์ท่ีเป็นตวั คน้ หาช่วยในการคน้ หาขอ้ มลู ที่เรียกวา่ วิน การ์ด (WILD Card) สญั ลกั ษณ์ดงั กล่าวประกอบดว้ ย % และ _(เคร่ืองหมายขีดเสน้ ใต)้ โดยขอ้ มลู บางส่วนท่ีใชใ้ นการคน้ หาพร้อมกบั สญั ลกั ษณ์ท้งั สองน้ี จะตอ้ งมีเคร่ืองหมาย ‘ ‘ กากบั เสมอ ความหมายของสญั ลกั ษณ์ท้งั สองเป็นดงั น้ีคือ- สญั ลกั ษณ์ % ใชแ้ ทนจานวนอกั ษรไดห้ ลายตวั เช่น พนกั งานขายท่ีข้ึนตน้ ดว้ ยตวั T จะเขียนเงื่อนไขว่า WHERE SALENAME LIKE ‘T%’- สญั ลกั ษณ์ _ ใชแ้ ทนจานวนที่ไม่ทราบค่า 1 ตวั เช่น พนกั งานขายที่มีชื่อข้นึ ตน้ S และมีความยาว 7ตวั อกั ษร เช่น WHERE SALENAME LIKE ‘S______’SELECT PAYEE, AMOUNT, REMARKSFROM CHECKSWHERE PAYEE LIKE (‘CA%’);ผลลพั ธ์์

PAYEE AMOUNT REMARKS Cash 25 Wild Night Out Cash 60 Trip to Saraburi Cash 34 Trip to Nonthaburiกบั คาสง่ั LIKE ดงั ตวั อยา่ งขา้ งตน้ เปรียบเทียบกบั คาสง่ั WITHSELECT PAYEE, AMOUNT, REMARKSFROM CHECKSWHERE PAYEE STARING WITH (‘Ca’);ผลลพั ธ์ PAYEE AMOUNT REMARKS Cash 25 Wild Night Out Cash 60 Trip to Saraburi Cash 34 Trip to Nonthaburiจะเห็นว่าไดผ้ ลลพั ธเ์ ช่นเดียวกนัตวั อยา่ ง ถา้ ตอ้ งการใหแ้ สดงคอลมั น์ PAYEE ท่ีข้ึนตน้ ดว้ ยอกั ษร Ca หรือ คอลมั น์ REMARKS ท่ีข้ีนตน้ ดว้ ยอกั ษร G จะใชค้ าสง่ั ดงั น้ีSELECT PAYEE, AMOUNT, REMARKSFROM CHECKSWHERE PAYEE STARTING WITH(‘Ca’)ORREMARKS LIKE ‘G%’;

ผลลพั ธ์์ PAYEE AMOUNT REMARKS Surasit Utilities 98 Gas Jintana $ Mitree 150 Groceries Cash 25 Wild Night Out Benjawan Gas 251 Gas Cash 60 Trip to Saraburi Cash 34 Trip to Nonthaburi Benjawan Gas 1575 Gas4.4 โอเปอรเรเตอร์ตรรกะ (Logical Operator) เป็นตวั โอเปอเรเตอร์ที่ใชใ้ นการเปรียบเทียบเช่ือมโยงค่า 2 ค่าตวั อยา่ ง ตาราง VACATION LASTNAME EMPLOYEENUM YEARS LEAVETAKENARLEE 101 2 4AMPORNI 104 5 23JINTANA 107 8 45BOLIVAR 233 4 80TANACHOTE 210 15 100TAWATCHI 211 10 78จากตวั อยา่ งสมมุติวา่ บริษทั ใหพ้ นกั งานแต่ละคนสามารถหยดุ งานได้ โดยพจิ ารณาจากจานวนปี ที่พนกั งานทางาน พนกั งานจะหยดุ งานได้ 12 วนั ในอายกุ ารทางานแต่ละปี ถา้ ตอ้ งการหาว่าพนกั งานที่มีช่ือตวั หนา้ วา่ B และยงั สามารถหยดุ งานไดอ้ ีก 50 วนั จะใชค้ าสง่ั ดงั น้ีSELECT * LASTNAME, YEARS * 12 – LEAVETAKEN REMAININGFROM VACATIONWHERE LASTNAME LIKE ‘B%’

ANDYEARS * 12 – LEAVETAKEN > 50;ผลลพั ธ์ LASTNAME REMAINING JINTANA 51 TANACHOTE 80จากคาสง่ั เราจะใชค้ าสงั่ YEARS * 12 – LEAVETAKEN เพ่อื หาวนั หยดุ ที่พนกั งานยงั เหลอื- ตวั โอเปอเรเตอร์ AND เป็นตวั โอเปอเรเตอร์ ท่ีใชเ้ ช่ือมโยงค่า 2 ค่า โดยถา้ ค่าหน่ึงเป็น TURE อีกค่าหน่ึงเป็น TURE จะใหค้ ่า TRUE ออกมา แต่ถา้ ค่าหน่ึงเป็น TURE อกี ค่าหน่ึงเป็น FALSE จะให้ค่าเป็น FALSE ตวั อยา่ งเช่น ถา้ ตอ้ งการหาวา่ มพี นกั งานที่ทางานมากกวา่ 5 ปี และเหลือวนั หยดุมากกวา่ 50% จะใชค้ าสง่ั ดงั น้ีSELECT LASTNAME WORKAHOLICSFROM VACATIONWHERE YEARS >=5AND((YEARS *12) – LEAVETAKEN)/(YEARS *12) >=0.50;ผลลพั ธ์ WORKAHOLICS AMPORNI JINTANA

ตวั โอเปอเรเตอร์ OR ใชใ้ นการเปรียบเทียบถา้ ส่ิงที่นามาเปรียบเทียบส่ิงใดส่ิงหน่ึงเป็นจริง จะได้ผลลพั ธอ์ อกมาเป็นจริงSELECT LASTNAME WORKAHOLICSFROM VACATIONWHERE YEARS >=5OR((YEARS *12) – LEAVETAKEN)/(YEARS *12)>=0.50;ผลลพั ธ์ WORKAHOLICS ARLEE AMPORNI JINTANA TANACHOTE TAWATCHI- ตวั โอเปอเรเตอร์ NOT ในการเปรียบเทียบถา้ ส่ิงท่ีนามาเปรียบเทียบเป็นจริงจะไดผ้ ลลพั ธอ์ อกมาเป็นเท็จ แต่ถา้ สิ่งท่ีนามาเปรียบเทียบเป็นเทจ็ ผลท่ีไดอ้ อกมาจะเป็นจริง ดงั ตวั อยา่ งSELECT *FORM VACATIONWHERE LASTNAME NOT LIKE ‘B%’;ผลลพั ธ์ LASTNAME EMPLOYEENUM YEARS LEAVETAKEN 4 ARLEE 101 2 78 COSTALES 211 10

- ตวั โอเปอเรเตอร์ NOT ยงั ใชก้ บั NULL ได้ ถา้ นา not กบั null มารวมกนั แลว้ จะใชส้ าหรับค่าที่ไม่วา่ งตวั อยา่ งตารางPRICE ITEM WHOLESALE TOMATOES 34 POTATOES 51 BANANAS 67 TURNIPS 45 CHEESE 89 APPLES 23 ORANGES -ตวั อยา่ ง ถา้ ตอ้ งการใหแ้ สดงเฉพาะขอ้ มลู ที่มีค่าเท่าน้นั จะใชค้ าสง่ั not nullมาร่วมกบั null เพื่อแสดงเฉพาะขอ้ มลู ท่ีมีค่าดงั คาสง่ั ต่อไปน้ีSELECT *FROM PRICEWHERE wholesale is not null;ผลลพั ธ์์ ITEM WHOLESALE TOMATOES 34 POTATOES 51 BANANAS 67 TURNIPS 45 CHEESE 89 APPLES 23

- โอเปอร์เรเตอร์ IN และ BETWEEN ตวั โอเปอเรเตอร์ IN เป็นการกาหนดเซต็ ของสิ่งที่ตอ้ งการคน้ หา โดยการกาหนดชื่อของสมาชิกเซ็ตลงไปในวงเลบ็ และแยกจากกนั ดว้ ยคอมมา่SELECT *FROM FRIENDSWHERE STATE= ‘Chiangmai’ORSTATE = ‘Bangkok’ORSTATE = ‘Puket’;ผลลพั ธ์ LASTNAME FIRSTNAME PHONE ADDRESS SIRIWAN ARLEEWAN 555-6666 Bangkok SURASIT CHAIYO 555-6767 Puket WICHAI AMPORNWAN 555-3116 ChiangmaiSELECT *FROM FRIENDSWHERE STATE IN (‘Chiangmai ’, ‘Bangkok ’, ‘Puket ’);ผลลพั ธ์ LASTNAME FIRSTNAME PHONE ADDRESS SIRIWAN ARLEEWAN 555-6666 Bangkok

SURASIT CHAIYO 555-6767 Puket WICHAI Chiangmai AMPORNWAN 555-3116- ตวั โอเปอเรเตอร์ BETWEEN…AND… เป็นการกาหนดเง่ือนไขของคอลมั น์ระหวา่ งค่าสองค่า ซ่ึงค่าสองที่ออยรู่ ะหวา่ งคาสง่ั BETWEEN…AND…น้นั จะมคี วามหมายวา่ เท่ากบั หรือมากกวา่ และเท่ากบั หรือนอ้ ยกวา่SELECT *FROM PRICEWHERE WHOLESALE >25ANDWHOLESALE < 75;ผลลพั ธ์ ITEM WHOLESALE TOMATOES 34 POTATOES 51 BANANAS 67 TURNIPS 45ถา้ ใชค้ าสง่ั BETWEEN จะเป็นดงั น้ีSELECT *FROM PRICEWHERE WHOLESALE BETWEEN 25 AND 75;ผลลพั ธ์

ITEM WHOLESALE TOMATOES 34 POTATOES 51 BANANAS 67 TURNIPS 45 3.การเรียกค้นข้อมลู 3.1 ฟังก์ชั่นฟังกช์ นั ที่ใชใ้ นภาษา SQLเป็นฟังกช์ นั ซ่ึงเกบ็ ประจาไวก้ บั ภาษา SQL ภาษา SQL มีฟังกช์ นั อยู่ 6ประเภทคือ1.ฟังกช์ นั ในการรวม (Aggregate functions)2.ฟังกช์ นั วนั และเวลา (Date and tune functions)3.ฟังกช์ นั คณิตศาสตร์ (Arithmetic functions)4.ฟังกช์ นั ตวั อกั ขระ (Character functions)5.ฟังกช์ นั การแปลง (Conversion functions)6.ฟังกช์ นั อ่ืนๆ (Miscellaneous functions) 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)ตวั อยา่ งตารางTEAMGAME NAME AB HITS WALKS SINGLES DOUBLES TRIPLES HRJONESDONKNOW 145 45 34 31 8 15WORLEYDAVID 175 65 50 50 10 14HAMHOCKERCASEY 157 49 35 35 8 33 187 70 48 48 4 0 17 50 12 10 10 2 00 10 0 0 0 00ตวั อย่างถ้าต้องการนับจานวนแถวท้งั หมดในตาราง TEAMGAMEโดยนบั เฉพาะแถวที่ HIT หารด้วย AB แล้วมคี ่าน้อยกว่า 0.35 จะใช้คาส่ังดงั นี้

SELECT COUNT(*)FROM TEAMGAMEWHERE HITS/AB < .35;ผลของคาสงั่ จะไดผ้ ลลพั ธเ์ ป็นจานวนแถวที่ HIT หารดว้ ย AB แลว้ มคี ่านอ้ ยกวา่ 0.35COUNT (*)4ตวั อยา่ ง ถา้ ตอ้ งการใหแ้ สดงคอลมั นท์ ่ีนบั ไดช้ ่ือ NUM_BELOW_350SELECT COUNT(*) NUM_BELOW_350FROM TEAMGAMEWHERE HITS/AB < .35;ผลของคาสง่ัNUM_BELOW_3504ตวั อยา่ ง ถา้ ตอ้ งการนบั จานวนคนที่มีเงื่อนไขให้ HIT หารดว้ ย AB แลว้ มีค่านอ้ ยกวา่ 0.35SELECT COUNT(NAME) NUM_BELOW_350FROM TEAMGAMEWHERE HITS/AB < .35;ผลของคาสง่ัNUM_BELOW_3504

ตวั อยา่ ง ถา้ ตอ้ งการนบั วา่ ขอ้ มลู ในตาราง TEAMGAME มีจานวนท้งั หมดกี่แถวจะใช้SELECT COUNT(*)FROM TEAMGAME;ผลของคาสงั่ COUNT(*)61.2 ฟังก์ชัน SUM (X) เป็ นฟังก์ชันทใี่ ช้ในการหาค่ารวมของคอลมั น์ (X) ที่เกบ็ ข้อมลู ประเภทตวั เลขตวั อยา่ ง ถา้ ตอ้ งการหาผลรวมของคอลมั น์ SINGLES จากตาราง TEAMGAME โดยใหแ้ สดงคอลมั นข์ องผลรวมท่ีไดใ้ นชื่อ TOTAL….SINGLESSELECT SUM(SINGLES) TOTAL_SINGLESFROM TEAMGAME;ผลของคาสงั่TOTAL_SINGLES174ตวั อยา่ ง ถา้ ตอ้ งการหาผลรวมของคอลมั น์ SINGLES, DOUBLES, TRIPLES, HR จากตารางTEAMGAME โดยใหแ้ สดงคอลมั น์ของผลรวมที่ไดใ้ นช่ือ 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;


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook