1 Introduction to SQL กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร วิทยาเขต สารสนเทศพะเยา
2 เนื้อหาที่นิสิตจะได้เรียนในบทนี้ เป็นเพียงพื้นฐานส่วนเล็กๆ ของ การนำภาษา SQL มาใช้งานกับการ เขียนโปรแกรม ยังมีความรู้อื่นๆ ที่ นิสิตต้องเรียนรู้อีกมาก หาก ต้องการทราบรายละเอียดเกี่ยวกับ ฐานข้อมูลมากขึ้น นิสิตต้องศึกษา เพิ่มเติมในห้องสมุด อินเทอร์เน็ต หรือลงทะเบียนเรียนใน กระบวน วิชา Database
3 เนื้อหา คำสั่งสำหรับเรียกแสดงข้อมูล คำสั่งสำหรับเพิ่มข้อมูล คำสั่งสำหรับแก้ไขข้อมูล คำสั่งสำหรับลบข้อมูล สรุป
4 ตารางข้อมูลพนักงาน (Employee) IDNameAddressBirthDate 1ANTCHIANGMAI25/01/1987 2BATPHAYAO12/03/1987 3CATPHAYAO01/01/1988
5 คำสั่งสำหรับเรียกแสดง ข้อมูล Syntax SELECT คือ การเลือกแสดงข้อมูล FIELD_NAME คือ ชื่อฟิลด์ FROM คือ จากตาราง TABLE_NAME คือ ชื่อของตาราง WHERE คือ เงื่อนไขที่เราต้องการกำหนด ORDER BY คือ ให้มีการเรียงลำดับข้อมูลจาก น้อย - มาก หรือ มาก - น้อย SELECT FIELD_NAME(S) FROM TABLE_NAME(S) [WHERE CONDITION] [ORDER BY FIELD_NAME (S) [ASC|DESC]]
6 คำสั่งสำหรับเรียกแสดง ข้อมูล ต้องการแสดงข้อมูล ทั้งหมดของ พนักงาน SELECT * FROM EMPLOYEE IDNameAddressBirthDate 1ANTCHIANGMAI25/01/1987 2BATPHAYAO12/03/1987 3CATPHAYAO01/01/1988
7 คำสั่งสำหรับเรียกแสดง ข้อมูล ต้องการแสดงข้อมูล ทั้งหมดของ พนักงาน โดยแสดงลำดับจากรหัส พนักงาน จากมากไปน้อย SELECT * FROM EMPLOYEE ORDER BY ID DESC IDNameAddressBirthDate 3CATPHAYAO01/01/1988 2BATPHAYAO12/03/1987 1ANTCHIANGMAI25/01/1987
8 คำสั่งสำหรับเรียกแสดง ข้อมูล ต้องการแสดงข้อมูล รหัสของ พนักงาน SELECT ID FROM EMPLOYEE ID 1 2 3
9 คำสั่งสำหรับเรียกแสดง ข้อมูล ต้องการแสดงข้อมูล รหัสและชื่อ ของพนักงาน SELECT ID, NAME FROM EMPLOYEE IDName 1ANT 2BAT 3CAT
10 คำสั่งสำหรับเรียกแสดง ข้อมูล ต้องการนับจำนวนของพนักงาน ทั้งหมด SELECT COUNT(ID) AS TOTAL_EMPLOYEE FROM EMPLOYEE FROM EMPLOYEE TOTAL_EMPLOYEE 3
11 คำสั่งสำหรับเรียกแสดง ข้อมูล ต้องการแสดงรายการชื่อของที่อยู่ แบบไม่ซ้ำ SELECT DISTINCT(ADDRESS) AS MYADDR FROM EMPLOYEE FROM EMPLOYEE MYADDR CHIANGMAI PHAYAO
12 คำสั่งสำหรับเรียกแสดงข้อมูล ( อย่างมีเงื่อนไข ) ต้องการแสดงข้อมูลพนักงานที่มี รหัสพนักงาน เท่ากับ 1 SELECT * FROM EMPLOYEE WHERE ID = 1 IDNameAddressBirthDate 1ANTCHIANGMAI25/01/1987 ให้นิสิตสังเกต ว่าเงื่อนไข ใช้คำสั่ง WHERE โดยที่ ID = 1 แสดงว่า ID มีชนิดเป็นตัวเลข
13 คำสั่งสำหรับเรียกแสดงข้อมูล ( อย่างมีเงื่อนไข ) ต้องการแสดงข้อมูลพนักงานที่มีที่ อยู่ในจังหวัดพะเยา SELECT * FROM EMPLOYEE WHERE ADDRESS = “PHAYAO” IDNameAddressBirthDate 2BATPHAYAO12/03/1987 3CATPHAYAO01/01/1988 ให้นิสิตสังเกต ว่าเงื่อนไข ใช้คำสั่ง WHERE โดยที่ ADDRESS = “PHAYAO” แสดงว่า ADDRESS มีชนิดเป็นตัวอักษร
14 คำสั่งสำหรับเรียกแสดงข้อมูล ( อย่างมีเงื่อนไข ) ต้องการแสดงข้อมูลพนักงานที่มีที่ อยู่ในจังหวัดพะเยา และชื่อว่า CAT SELECT * FROM EMPLOYEE WHERE ADDRESS = “PHAYAO” AND NAME = “CAT” AND NAME = “CAT” IDNameAddressBirthDate 3CATPHAYAO01/01/1988
15 คำสั่งสำหรับเรียกแสดงข้อมูล ( อย่างมีเงื่อนไข ) ต้องการแสดงข้อมูลพนักงานที่ชื่อ BAT หรือ CAT SELECT * FROM EMPLOYEE WHERE NAME = “BAT” OR NAME = “CAT” OR NAME = “CAT” IDNameAddressBirthDate 2BATPHAYAO12/03/1987 3CATPHAYAO01/01/1988
16 คำสั่งสำหรับเรียกแสดงข้อมูล ( อย่างมีเงื่อนไข ) ต้องการแสดงข้อมูลพนักงานที่เกิด ในวันที่ 1 มกราคม 2531 SELECT * FROM EMPLOYEE WHERE BIRTHDATE = #01/01/1988# IDNameAddressBirthDate 3CATPHAYAO01/01/1988 ให้นิสิตสังเกต ว่าเงื่อนไข ใช้คำสั่ง WHERE โดยที่ BIRTHDATE = #01/01/1988# แสดงว่า BIRTHDATE มีชนิดเป็นวันที่
17 คำสั่งสำหรับเรียกแสดงข้อมูล ( อย่างมีเงื่อนไข ) ต้องการแสดงข้อมูลพนักงานที่ชื่อ ขึ้นต้นด้วย “A” SELECT * FROM EMPLOYEE WHERE NAME LIKE “A*” IDNameAddressBirthDate 1 ANT CHIANGMAI25/01/1987
18 คำสั่งสำหรับเรียกแสดงข้อมูล ( อย่างมีเงื่อนไข ) ต้องการแสดงข้อมูลพนักงานที่ชื่อ ลงท้ายด้วย “AT” SELECT * FROM EMPLOYEE WHERE NAME LIKE “*AT” IDNameAddressBirthDate 2 BAT PHAYAO12/03/ CAT PHAYAO01/01/1988
19 คำสั่งสำหรับเรียกแสดงข้อมูล ( อย่างมีเงื่อนไข ) ต้องการแสดงข้อมูลพนักงานที่ชื่อมี ส่วนประกอบของ “A” SELECT * FROM EMPLOYEE WHERE NAME LIKE “*A*” IDNameAddressBirthDate 1 ANT CHIANGMAI25/01/ BATBATBATBATPHAYAO12/03/ CATCATCATCATPHAYAO01/01/1988
20 คำสั่งสำหรับเรียกแสดงข้อมูล ( อย่างมีเงื่อนไข ) หมายเหตุ ในการกำหนดเงื่อนไข ของ WHERE- Clause นั้นนิสิตจำเป็นต้องดูว่าฐานข้อมูล แต่ละบริษัท อาจมีเงื่อนไข WHERE ต่างกัน ตัวอย่างที่อาจารย์แสดงข้างต้นนั้น เหมาะสำหรับฐานข้อมูล ACCESS กับ VB หากเป็น MySQL เงื่อนไข WHERE ก็อาจ เปลี่ยนไป เช่น BIRTHDATE = ’01/01/1988’ ซึ่งใน ACCESS จะ เป็น # 01/01/1988# เป็นต้น
21 คำสั่งสำหรับเพิ่มข้อมูล Syntax INSERT INTO TABLE_NAME VALUES (Value1[, Value2, … ]) INSERT INTO TABLE_NAME (FIELD_NAME1[, …]) VALUES (Value1[, …] ) OR
22 คำสั่งสำหรับเพิ่มข้อมูล ต้องการเพิ่มข้อมูลพนักงานใหม่เข้าสู่ระบบ INSERT INTO EMPLOYEE VALUES (4, “RAT”, “CHIANGMAI”, #12/01/1988#) IDNameAddressBirthDate 1ANTCHIANGMAI25/01/1987 2BATPHAYAO12/03/1987 3CATPHAYAO01/01/1988 4RATCHIANGMAI12/01/1988
23 คำสั่งสำหรับเพิ่มข้อมูล ต้องการเพิ่มข้อมูลพนักงานใหม่เข้าสู่ระบบ INSERT INTO EMPLOYEE (ID, NAME, ADDRESS, BIRTHDATE) VALUES (5, “SAT”, “CHIANGRAI”, #22/05/1988#) IDNameAddressBirthDate 1ANTCHIANGMAI25/01/1987 2BATPHAYAO12/03/1987 3CATPHAYAO01/01/1988 4RATCHIANGMAI12/01/1988 5SATCHIANGRAI22/05/1988
24 คำสั่งสำหรับเพิ่มข้อมูล ต้องการเพิ่มข้อมูลพนักงานใหม่เข้าสู่ระบบ INSERT INTO EMPLOYEE (ID, NAME) VALUES (6, “ZAT”) IDNameAddressBirthDate 1ANTCHIANGMAI25/01/1987 2BATPHAYAO12/03/1987 3CATPHAYAO01/01/1988 4RATCHIANGMAI12/01/1988 5SATCHIANGRAI22/05/1988 6ZAT
25 คำสั่งสำหรับแก้ไขข้อมูล Syntax ในการใช้คำสั่ง UPDATE นิสิตควร ต้องมีการกำหนดเงื่อนไขในการ แก้ไขข้อมูลด้วยทุกครั้ง ไม่เช่นนั้น อาจมีการแก้ไขข้อมูลผิดพลาดได้ UPDATE TABLE_NAME SET FIELD_NAME1 = VALUE1[, FIELD_NAMEX = VALUEX] [WHERE CONDITION]
26 คำสั่งสำหรับแก้ไขข้อมูล แก้ไขที่อยู่พนักงานรหัส 1 จาก เชียงใหม่เป็นเชียงราย UPDATE EMPLOYEE SET ADDRESS = “CHIANGRAI” WHERE ID = 1 IDNameAddressBirthDate 1ANTCHIANGMAI25/01/1987 2BATPHAYAO12/03/1987 3CATPHAYAO01/01/1988 4RATCHIANGMAI12/01/1988 5SATCHIANGRAI22/05/1988 6ZATIDNameAddressBirthDate1ANTCHIANGRAI25/01/1987 2BATPHAYAO12/03/1987 3CATPHAYAO01/01/1988 4RATCHIANGMAI12/01/1988 5SATCHIANGRAI22/05/1988 6ZAT
27 คำสั่งสำหรับแก้ไขข้อมูล แก้ไขชื่อพนักงานรหัส 6 จาก ZAT เป็น VAT และปรับปรุงข้อมูลที่อยู่ จากที่ไม่มีเป็นเชียงใหม่ UPDATE EMPLOYEE SET NAME=“VAT”, ADDRESS = “CHIANGMAI” WHERE ID = 6 IDNameAddressBirthDate 1ANTCHIANGRAI25/01/1987 2BATPHAYAO12/03/1987 3CATPHAYAO01/01/1988 4RATCHIANGMAI12/01/1988 5SATCHIANGRAI22/05/1988 6ZATIDNameAddressBirthDate1ANTCHIANGRAI25/01/1987 2BATPHAYAO12/03/1987 3CATPHAYAO01/01/1988 4RATCHIANGMAI12/01/1988 5SATCHIANGRAI22/05/1988 6VATCHIANGMAI
28 คำสั่งสำหรับแก้ไขข้อมูล แก้ไขวันเกิดของพนักงานรหัส 6 เป็นวันที่ 10/05/1988 UPDATE EMPLOYEE SET BIRTHDATE = #10/05/1988# WHERE ID = 6 IDNameAddressBirthDate 1ANTCHIANGRAI25/01/1987 2BATPHAYAO12/03/1987 3CATPHAYAO01/01/1988 4RATCHIANGMAI12/01/1988 5SATCHIANGRAI22/05/1988 6VATCHIANGMAIIDNameAddressBirthDate1ANTCHIANGRAI25/01/1987 2BATPHAYAO12/03/1987 3CATPHAYAO01/01/1988 4RATCHIANGMAI12/01/1988 5SATCHIANGRAI22/05/1988 6VATCHIANGMAI10/05/1988
29 คำสั่งสำหรับลบข้อมูล Syntax DELETE FROM TABLE_NAME [WHERE CONDITION]
30 คำสั่งสำหรับลบข้อมูล ต้องการลบข้อมูลพนักงานที่มีที่อยู่ ในจังหวัดเชียงใหม่ DELETE FROM EMPLOYEE WHERE ADDRESS = “CHIANGMAI” IDNameAddressBirthDate 1ANTCHIANGRAI25/01/1987 2BATPHAYAO12/03/1987 3CATPHAYAO01/01/1988 4RATCHIANGMAI12/01/1988 5SATCHIANGRAI22/05/1988 6VATCHIANGMAI10/05/1988IDNameAddressBirthDate1ANTCHIANGRAI25/01/1987 2BATPHAYAO12/03/1987 3CATPHAYAO01/01/1988 4RATCHIANGMAI12/01/1988 5SATCHIANGRAI22/05/1988 6VATCHIANGMAI10/05/1988
31 คำสั่งสำหรับลบข้อมูล ต้องการลบข้อมูลพนักงานที่มีที่อยู่ ในจังหวัดเชียงใหม่ DELETE FROM EMPLOYEE WHERE ADDRESS = “CHIANGMAI” IDNameAddressBirthDate 1ANTCHIANGRAI25/01/1987 2BATPHAYAO12/03/1987 3CATPHAYAO01/01/1988 5SATCHIANGRAI22/05/1988
32 คำสั่งสำหรับลบข้อมูล ต้องการลบข้อมูลพนักงานทั้งหมด DELETE FROM EMPLOYEE IDNameAddressBirthDate 1ANTCHIANGRAI25/01/1987 2BATPHAYAO12/03/1987 3CATPHAYAO01/01/1988 5SATCHIANGRAI22/05/1988IDNameAddressBirthDate1ANTCHIANGRAI25/01/1987 2BATPHAYAO12/03/1987 3CATPHAYAO01/01/1988 5SATCHIANGRAI22/05/1988
33 คำสั่งสำหรับลบข้อมูล ต้องการลบข้อมูลพนักงานทั้งหมด DELETE FROM EMPLOYEE IDNameAddressBirthDate
34 สรุป คำสั่งที่นิสิตได้เรียนไป ในส่วน เงื่อนไข (Condition) เหมาะสมกับ ฐานข้อมูล ACCESS เท่านั้น หาก ต้องการใช้กับฐานข้อมูลอื่นๆ ต้อง ตรวจสอบ ไวยากรณ์ (Syntax) ของ ฐานข้อมูลนั้นๆ ก่อน คำสั่งที่นิสิตได้เรียนไป เป็นเพียง คำสั่งเบื้องต้น หากต้องการทราบ คำสั่งอื่นๆ ให้นิสิต ฝึกคนคว้าด้วย ตนเอง จากอินเทอร์เน็ต