6.8 ภาษาเอสคิวแอล

     ภาษาเอสคิวแอล (Structured Query Language : SQL) เป็นภาษาสําหรับเชื่อมต่อและ จัดการกับฐานข้อมูล ทําให้สามารถเชื่อมต่อกับฐานข้อมูลที่หลากหลาย และเป็นมาตรฐาน ANSI (American National Standards Institute) ซึ่งภาษาเอสคิวแอลสามารถดึงข้อมูลจากฐานข้อมูลมาจัดเก็บ แทรกข้อมูล แก้ไข หรือ ลบข้อมูลได้ รวมไปถึงการจัดการเกี่ยวกับโครงสร้างของฐานข้อมูลด้วย

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

     ในการทดสอบคําสั่งเอสคิวแอล มีหลายวิธีซึ่งที่สะดวกกับผู้พัฒนาในรายวิชานี้จะใช้วิธีการ ทดสอบคําสั่งผ่านโปรแกรม phpMyAdmin ซึ่งนักศึกษามีอยู่แล้ว การทดสอบคําสั่งทําได้โดยการเข้าไป ที่หน้าหลักของโปรแกรม เลือกฐานข้อมูล จากนั้นเลือกแท็บ SQL จะปรากฏช่องว่างสําหรับใส่รหัสคําสั่ง เอสคิวแอล ซึ่งหลังจากพิมพ์คําสั่งแล้วต้องการทดสอบให้คลิกที่ปุ่ม Go ดังรูปที่ 6.15

รูปที่ 6.15 การทดสอบคำสั่งเอสคิวแอล

6.8.1 การสร้างและลบฐานข้อมูล

6.8.1.1 การสร้าง

     ภาษาเอสคิวแอล จะมีคำสั่งสำหรับสร้างฐานข้อมูลใหม่ โดยมีรูปแบบคำสั่ง ดังนี้


รูปแบบคำสั่ง

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

     ทดสอบการใช้คำสั่ง Create database dbname; โดยทดสอบคําสั่งผ่านโปรแกรม phpMyAdmin การทดสอบคําสั่งทําได้โดยการเข้าไป ที่หน้าหลักของโปรแกรม จากนั้นเลือกแท็บ SQL

รูปที่ 6.16 การทดสอบคำสั่งเอสคิวแอลในการสร้างฐานข้อมูล
รูปที่ 6.17 แสดงผลลัพธ์ในการสร้างฐานข้อมูลสำเร็จ

     จากตัวอย่างจะเห็นว่าเมื่อใช้คำสั่ง Create database ctcDB; สร้างฐานข้อมูลใหม่ขึ้น เมื่อกดปุ่ม Go หากไม่มีข้อผิดพลาดใด ๆ เกิดขึ้น จะมีข้อความแสดงว่า “MySQL returned an empty result set (i.e. zero rows). (Query took 0.0020 seconds.)” เพื่อทดสอบว่าฐานข้อมูล ได้ถูกสร้างขึ้นมาจริง ให้พิมพ์คำสั่ง show database; เพื่อแสดงรายชื่อฐานข้อมูลทั้งหมด ผลลัพธ์ที่ได้ดังนี้

รูปที่ 6.18 การทดสอบคำสั่งเอสคิวแอลในการแสดงรายชื่อฐานข้อมูลทั้งหมด
รูปที่ 6.19 แสดงรายชื่อฐานข้อมูลที่ถูกสร้าง

     จะเห็นว่ารายชื่อฐานข้อมูลทั้งหมดที่แสดงหลังจากสร้างฐานข้อมูลใหม่ จะปรากฏรายชื่อฐานข้อมูล ctcdb ที่สร้างขึ้นใหม่ด้วย

6.8.1.2 การลบฐานข้อมูล

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

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

     ทดสอบการใช้คำสั่ง Drop database ชื่อฐานข้อมูล โดยทดสอบคําสั่งผ่านโปรแกรม phpMyAdmin การทดสอบคําสั่งทําได้โดยการเข้าไป ที่หน้าหลักของโปรแกรม จากนั้นเลือกแท็บ SQL

รูปที่ 6.20 การทดสอบคำสั่งเอสคิวแอลในการลบฐานข้อมูล 

     จากตัวอย่างจะเห็นว่าเมื่อใช้คำสั่ง Drop database ctcDB; เพื่อลบฐานข้อมูลชื่อ ctcDB ออกไป เพื่อทดสอบว่าฐานข้อมูล ctcDB ได้ถูกลบออกไปจริงให้ใช้คำสั่ง SHOW DATABASES; เพื่อแสดงรายชื่อฐานข้อมูลทั้งหมด จะได้ผลลัพธ์ ดังนี้

รูปที่ 6.21 แสดงรายชื่อฐานข้อมูลทั้งหมด

     จะเห็นว่า รายชื่อฐานข้อมูลทั้งหมดที่แสดง หลังจากลบฐานข้อมูล ctcDB จะไม่ปรากฏรายชื่อฐานข้อมูลชื่อ ctcDB

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

     ภาษาเอสคิวแอล จะมีคำสั่งสำหรับสร้างตาราง โดยมีรูปแบบคำสั่ง ดังนี้


รูปแบบคำสั่ง

     table_name คือ ชื่อตาราง
     Column_name คือ ชื่อฟิลด์ หรือชื่อคอลัมน์
     datatype คือ ชนิดข้อมูล

ตัวอย่างโปรแกรมที่ 6.3 แสดงการใช้คำสั่งภาษาเอสคิวแอลในการสร้างตาราง 

     ทดสอบการใช้คำสั่งการสร้างตาราง ตามตัวอย่าง โดยทดสอบคําสั่งผ่านโปรแกรม phpMyAdmin การทดสอบคําสั่งทําได้โดยการเข้าไป ที่หน้าหลักของโปรแกรม จากนั้นเลือกแท็บ SQL

Fields nameData typeSizeDefaultKEY
PersonIDint10Not NullPrimary Key
LastNamevarchar255Not Null-
FirstNamevarchar255Not Null-
Addressvarchar255Not Null-
Cityvarchar255Not Null-

     การสร้างตารางต้องรู้ว่าจะสร้างตารางเก็บไว้ในฐานข้อมูลใด จึงต้องเลือกฐานข้อมูลที่จะสร้างตารางก่อน จากนั้นจึงใช้คำสั่งเอสคิวแอลเพื่อสร้างตาราง Person ได้ดังนี้

รูปที่ 6.22 การทดสอบคำสั่งเอสคิวแอลในการสร้างตาราง

     หลังจากพิมพ์คำสั่งสร้างตาราง Person เสร็จเรียบร้อยแล้ว ลองทดสอบดูว่าตาราง Person ได้ถูกสร้างอยู่ในฐานข้อมูลชื่อ ctcDB จริง ให้พิมพ์ Show tables; จะเห็นผลลัพธ์ตามตัวอย่าง

รูปที่ 6.23 การทดสอบคำสั่งเอสคิวแอลในการแสดงรายชื่อตารางทั้งหมด

6.8.3 การแสดงรายละเอียดของตาราง

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


รูปแบบคำสั่ง

     table_name  คือ ชื่อตาราง

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

     ทดสอบการใช้คำสั่งการแสดงรายละเอียดของตาราง โดยทดสอบคําสั่งผ่านโปรแกรม phpMyAdmin การทดสอบคําสั่งทําได้โดยการเข้าไป ที่หน้าหลักของโปรแกรมเลือกฐานข้อมูลที่ต้องการ ตามตัวอย่างให้เลือกฐานข้อมูลชื่อ ctcDB จากนั้นเลือกแท็บ SQL แล้วพิมพ์คำสั่งตามตัวอย่าง

รูปที่ 6.24 การทดสอบคำสั่งเอสคิวแอลในการแสดงรายละเอียดตาราง

     หลังจากพิมพ์คำสั่งแสดงรายละเอียดตาราง Person เสร็จเรียบร้อยแล้ว จะเห็นผลลัพธ์ตามตัวอย่าง

รูปที่ 6.25 แสดงรายละเอียดตาราง  Person

6.8.4 การเปลี่ยนชื่อตาราง

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

รูปแบบคำสั่ง

     old_table_name คือ ชื่อตารางเก่า
     new_table_name คือ ชื่อตารางใหม่

ตัวอย่างโปรแกรมที่ 6.5 แสดงการใช้คำสั่งภาษาเอสคิวแอลในการเปลี่ยนชื่อตาราง

     ทดสอบการใช้คำสั่งการเปลี่ยนชื่อตาราง โดยทดสอบคําสั่ง Rename table; ในตัวอย่างจะแก้ไขชื่อตารางจาก persons เป็น member โดยพิมพ์ตามคำสั่งตามรูปแบบคำสั่ง

รูปที่ 6.26 การทดสอบคำสั่งเอสคิวแอลในการเปลี่ยนชื่อตาราง

     จากตัวอย่างจะเห็นว่า คำสั่ง Rename table จะเปลี่ยนชื่อตารางจาก persons เป็น member ตามที่ต้องการ เพื่อทดสอบว่าชื่อตารางได้เปลี่ยนแล้วจริง ให้ใช้คำสั่ง show tables; โดยต้องเลือกฐานข้อมูลชื่อ ctcdb ก่อน

รูปที่ 6.27 แสดงรายชื่อตารางทั้งหมด

6.8.5 การเพิ่ม แก้ไข ลบ ขอบเขตข้อมูล (Filed)

     ขอบเขตข้อมูล (Field) คือเขตข้อมูล/ชุดข้อมูลที่ใช้แทนความหมายของสื่อโครงสร้าง เช่นชื่อของบุคคล ชื่อของวัสดุสิ่งของ กลุ่มของอักขระที่สัมพันธ์กันตั้งแต่ 1 ตัวขึ้นไปที่นำมารวมกันแล้วแสดงลักษณะหรือความหมายอย่างใดอย่างหนึ่ง

6.8.5.1 การเพิ่มขอบเขตข้อมูลในตาราง

     ถ้าต้องการแก้ไขโครงสร้างของตาราง โดยการเพิ่มขอบเขตข้อมูลจะใช้คำสั่ง Alter table ซึ่งมีรูปแบบคำสั่งดังนี้

รูปแบบคำสั่ง

   table_name คือ ชื่อตาราง
   column_name คือ ชื่อฟิลด์ หรือชื่อคอลัมน์
   datatype คือ ชนิดข้อมูล


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

     ทดสอบการใช้คำสั่งการเพิ่มขอบเขตข้อมูลในตาราง ในตัวอย่างเพิ่มฟิลด์ชื่อ email ในตาราง member

รูปที่ 6.28 การทดสอบคำสั่งเอสคิวแอลในการเพิ่มขอบเขตข้อมูลในตาราง

     จากตัวอย่างจะเห็นว่า เมื่อทำการเพิ่มขอบเขตข้อมูลใหม่ที่ชื่อ email เรียบร้อย เพื่อทดสอบว่าขอบเขตข้อมูลชื่อ email ได้ถูกเพิ่มเข้าไปในตารางจริง ให้ใช้คำสั่ง show columns from member; จะแสดงผลลัพธ์ที่มีขอบเขตข้อมูลชื่อ email โดยจะปรากฏเป็นลำดับสุดท้ายของตาราง

รูปที่ 6.29 การทดสอบคำสั่งเอสคิวแอลในการแสดงผลลัพธ์ที่มีขอบเขตข้อมูลชื่อ email
6.8.5.2 การแก้ไขชื่อฟิลด์

     ถ้าต้องการแก้ไขชื่อฟิลด์ หรือแก้ไขข้อมูลในฟิลด์ มีรูปแบบคำสั่งดังนี้

รูปแบบคำสั่ง

   table_name คือ ชื่อตาราง
   old_name คือ ชื่อฟิลด์ หรือชื่อคอลัมน์เก่า
   new_name คือ ชื่อฟิลด์ หรือชื่อคอลัมน์ใหม่
   datatype คือ ชนิดข้อมูลของฟิลด์ใหม่


ตัวอย่างโปรแกรมที่ 6.7 แสดงการใช้คำสั่งภาษาเอสคิวแอลในการแก้ไขชื่อฟิลด์

     ทดสอบการใช้คำสั่งการแก้ไขชื่อฟิลด์ ในตัวอย่างแก้ไขชื่อฟิลด์ email เป็น phone และต้องกำหนดรายละเอียดของฟิลด์ ตามตัวอย่าง

รูปที่ 6.30 การทดสอบคำสั่งเอสคิวแอลในการแก้ไขชื่อฟิลด์

     จากตัวอย่างจะเห็นว่า เมื่อทำการแก้ไขชื่อฟิลด์ email เรียบร้อย เพื่อทดสอบว่าขอบเขตข้อมูลชื่อ email ได้ถูกแก้ไขจริง ให้คำสั่ง show columns from member; เพื่อดูรายละเอียดผลลัพธ์

รูปที่ 6.31 การทดสอบคำสั่งเอสคิวแอลในการแสดงผลลัพธ์ขอบเขตข้อมูลชื่อ email ได้ถูกแก้ไขจริง
6.8.5.3 การแก้ไขข้อมูลในฟิลด์

     ถ้าต้องการแก้ไขข้อมูลในฟิลด์ที่มีอยู่แล้วในตารางภายหลัง มีรูปแบบคำสั่งดังนี้


รูปแบบคำสั่ง

     table_name คือ ชื่อตาราง
     column_name คือ ชื่อฟิลด์ หรือชื่อคอลัมน์
     column_type คือ ประเภทของฟิลด์ หรือคอลัมน์


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

     ทดสอบการใช้คำสั่งการแก้ไขรายละเอียดของฟิลด์ โดยไม่มีการเปลี่ยนชื่อฟิลด์ แต่จะแก้ไขชนิดข้อมูลในฟิลด์ ในตัวอย่างจะแก้ไขชนิดข้อมูลในฟิลด์ phone กำหนดให้ชนิดข้อมูลเป็น varchar(10) และไม่มีค่า Null

รูปที่ 6.32 การทดสอบคำสั่งเอสคิวแอลในการแก้ไขข้อมูลในฟิลด์

     จากตัวอย่างจะเห็นว่า เมื่อทำการแก้ไขรายละเอียดของฟิลด์ เรียบร้อย เพื่อทดสอบว่าชื่อฟิลด์ได้เปลี่ยนจริง  ให้ใช้คำสั่ง show columns from member; เพื่อดูรายละเอียดผลลัพธ์

รูปที่ 6.33 แสดงผลลัพธ์ในการแก้ไขข้อมูลในฟิลด์
6.8.5.4 การลบขอบเขตข้อมูล

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


รูปแบบคำสั่ง


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

     ทดสอบการใช้คำสั่งการลบขอบเขตข้อมูล ในตัวอย่างจะลบขอบเขตข้อมูลชื่อ phone ออกจากตาราง  จะใช้คำสั่งดังนี้

รูปที่ 6.34 การทดสอบคำสั่งเอสคิวแอลในการลบเขตข้อมูลในฟิลด์

     จากตัวอย่างจะเห็นว่าเมื่อใช้คำสั่งเพื่อลบขอบเขตข้อมูลชื่อ phone จะแสดงข้อความตามตัวอย่างเพื่อถามว่าต้องการจะลบขอบเขตข้อมูลชื่อ phone จริงหรือไม่

รูปที่ 6.35 แสดงข้อความเพื่อยืนยันในการลบขอบเขตข้อมูลชื่อ phone

     เมื่อทำการคลิกปุ่ม ตกลง ก็จะทำการลบขอบเขตข้อมูลชื่อ phone ออกสำเร็จ เพื่อทดสอบว่าขอบเขตข้อมูลชื่อ phone ได้ถูกลบออกจริง ให้ใช้คำสั่ง show columns from member; เพื่อดูรายละเอียดผลลัพธ์

รูปที่ 6.36 แสดงผลลัพธ์ในการลบเขตข้อมูลในฟิลด์

     จะเห็นว่าไม่ขอบเขตข้อมูลชื่อ phone ในตาราง member แล้ว

6.8.6 การเพิ่มข้อมูลด้วยคําสั่ง INSERT INTO

    วิธีการเพิ่มข้อมูลใหม่ ลงฐานข้อมูลด้วยคําสั่งเอสคิวแอลจะใช้คําสั่ง INSERT INTO รูปแบบการใช้ งานคําสั่งมีดังนี้


     หรือการกําหนดชื่อคอลัมน์และค่าของคอลัมน์นั้น

     table_name คือ ชื่อตาราง
     column คือ ชื่อฟิลด์ หรือคอลัมน์ที่ต้องการระบุ
     value คือ ข้อมูลที่ต้องระบุในแต่ละฟิลด์ หรือคอลัมน์

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

          Id : 1

          FirstName :  Kritsana

          LastName : Naewvises

          Address : 260 Chaiyaphum Technical College

          City : Chaiyaphum

     สามารถใช้คำสั่งภาษาเอสคิวแอลในการเพิ่มข้อมูลในตาราง member ได้ดังนี้

รูปที่ 6.37 การทดสอบคำสั่งเอสคิวแอลในการเพิ่มข้อมูลในตาราง member โดยไม่ระบุฟิลด์

     จากตัวอย่าง เมื่อเพิ่มข้อมูลลงในตารางสำเร็จแล้ว เพื่อทดสอบว่าข้อมูลได้ถูกเพิ่มจริง ให้ใช้คำสั่ง SELECT * FROM 'member' เพื่อดึงข้อมูลทั้งหมดจากตาราง member ขึ้นมาแสดงจะเห็นว่าข้อมูลได้ถูกเพิ่มลงในตาราง member จริง

รูปที่ 6.38 แสดงข้อมูลในตาราง member

6.8.7 การแสดงข้อมูลด้วยคําสั่ง SELECT

     คําสั่ง SELECT เป็นคําสั่งสําหรับการเลือกข้อมูลจากฐานข้อมูลขึ้นมาแสดงผล ซึ่งมีรูปแบบการเขียนคําสั่งดังนี้


     หรือหากต้องการเลือกข้อมูลทั้งหมดจากตารางจะใช้คําสั่ง

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

     โดยให้แสดงข้อมูลทั้งหมดในตาราง member จะใช้คําสั่ง SELECT * FROM 'member'

รูปที่ 6.39 การทดสอบคำสั่งเอสคิวแอลในการแสดงข้อมูลทั้งหมดในตาราง member

     หรือต้องการแสดงข้อมูลแบบระบุคอลัมน์ โดยแสดงข้อมูลในคอลัมน์ id กับ FirstName จะใช้คำสั่ง SELECT ID,FirstName FROM 'member'; ผลลัพธ์ที่ได้จะปรากฏดังนี้

รูปที่ 6.40 การทดสอบคำสั่งเอสคิวแอลในการแสดงข้อมูล คอลัมน์ id, FirstName ในตาราง member

6.8.8 การกําหนดเงื่อนไขในการแสดงข้อมูลด้วยคําสั่ง WHERE

     การกําหนดเงื่อนไขในการเลือกข้อมูลจะใช้คําสั่ง WHERE รวมกับคําสั่ง SELECT เพื่อกรองข้อมูลตามเงื่อนไขที่ต้องการ รูปแบบการเขียนคําสั่งดังนี้

     คําสั่ง WHERE ใช้สําหรับการเปรียบเทียบในลักษณะเท่ากัน ไม่เท่ากัน มากกว่า น้อยกว่า หรือ ระหว่าง ซึ่งการเปรียบเทียบสามารถกําหนดค่าได้ที่ตัวดําเนินการ (Operator) ซึ่งมีดังตารางที่ 6.5


ตารางที่ 6.5 ตัวดําเนินการในคําสั่ง WHERE

ตัวดำเนินการความหมาย
=เท่ากับ
<>  หรือ  !=ไม่เท่ากับ
>มากกว่า
<น้อยกว่า
>=มากกว่าหรือเท่ากับ
<=น้อยกว่าหรือเท่ากับ
BETWEENระหว่าง
LIKEเหมือนกันกับ
INกำหนดว่ามีข้อมูลในคอลัมน์
ANDและ
ORหรือ
!ปฏิเสธ
6.8.8.1 ตัวดําเนินการสําหรับคําสั่ง WHERE ที่ใช้งานบ่อย มีดังนี้

     1. ตัวดําเนินการ LIKE เป็นการระบุรูปแบบการค้นหาสําหรับกรณีที่รู้ข้อมูลบาง ส่วน เช่น ต้องการค้นหาชื่อพนักงานที่ขึ้นต้นด้วย “ส” หรือ ค้นหานักศึกษาตามรหัสสองตัวท้าย เป็นต้น ซึ่งสามารถกําหนดรูปแบบการค้นหาได้ดังนี้
          1.1 การระบุ % ใช้แทนอักขระตัวใดก็ได้ กี่ตัวก็ได้ สามารถระบุด้านใดด้านหนึ่ง หรือทั้งสองด้าน เช่น ถ้าใช้คําสั่ง SELECT * FROM Customers WHERE CustomerName LIKE ‘s%’; หมายถึง การค้นหาข้อมูลที่ชื่อขึ้นต้นด้วยตัว “s” หรือ หากใช้คําสั่ง WHERE CustomerName LIKE ‘%s’; หมายถึง การค้นหาข้อมูลที่ชื่อลงท้ายด้วยตัว “s” หรือ หากใช้คําสั่ง CustomerName LIKE ‘%s%’; หมายถึง การค้นหาข้อมูลที่ชื่อมีตัว “s” เป็นต้น ซึ่งสามารถกําหนดรูปแบบการค้นหาตามฟิลด์หรือ คอลัมน์ที่ต้องการได้
          1.2 การระบุ _ (Underscore) ใช้แทนอักขระหนึ่งตัว ด้านใดด้านหนึ่งก็ได้ เช่น หากใช้ คําสั่ง SELECT * FROM Customers WHERE CustomerName LIKE ‘an_’; หมายถึง การค้นหา ข้อมูลที่มีข้อความว่า an ตามด้วยตัวอักษรใดก็ได้ เช่น and, ant, หรือ ans เป็นต้น หากใช้คําสั่ง WHERE CustomerName LIKE ‘_an’; เป็นการค้นหาคําว่า an ที่มีตัวอักษรตัวใดอยู่ด้านหน้าหนึ่งตัว เช่น man, nan, หรือ fan เป็นต้น

     2. ตัวดําเนินการเปรียบเทียบ (Comparison Operators) เป็นตัวดําเนินการสําหรับ การเปรียบเทียบค่าที่อยู่ในตาราง เช่น ถ้าใช้คําสั่ง SELECT * FROM Employee WHERE salary = ‘10000’; เป็นการค้นหาข้อมูลพนักงานที่มีเงินเดือน 1000 หรือถ้าใช้คําสั่ง WHERE salary >= ‘10000’; เป็นการค้นหาข้อมูลพนักงานที่มีเงินเดือนมากกว่าหรือเท่ากับ 10000 หรือถ้าใช้คําสั่ง WHERE salary < ‘10000’; เป็นการค้นหาข้อมูลพนักงานที่มีเงินเดือนน้อยกว่า 10000 เป็นต้น

     3. ตัวดําเนินการ AND หรือ OR เป็นการกําหนดรูปแบบการค้นหาแบบหลาย เงื่อนไขการค้นหา เช่น ต้องการดูพนักงานที่มีเงินเดือนมากกว่า 10000 และเป็นเพศชาย สามารถใช้คําสั่งดังนี้ SELECT * FROM Employee WHERE (salary > ‘10000’) AND (sex = 1); หรือต้องการค้นหาชื่อผู้ใช้และรหัสผ่านตรงตามที่ส่งมาจากฟอร์มหรือไม่ สามารถใช้คําสั่ง SELECT * FROM User WHERE (UserName = ‘$username’) AND (PassWord = ‘$password’); เป็นต้น

     4. ตัวดําเนินการ BETWEEN AND และ NOT BETWEEN AND ใช้สําหรับ เปรียบเทียบ ข้อมูลหรือกรองข้อมูลว่าข้อมูลที่ต้องการอยู่ในช่วงหรือไม่อยู่ในช่วงที่กําหนดหรือไม่ เช่น ค้นหาพนักงานที่มีเงินเดือนระหว่าง 20000 – 40000 สามารถใช้คําสั่ง SELECT * FROM Employee WHERE salary BETWEEN ‘20000’ AND ‘40000’; เป็นต้น ส่วน NOTE BETWEEN เป็นการค้นหาข้อมูลที่ไม่อยู่ในช่วงที่กําหนด มีรูปแบบการใช้งานเหมือนกันกับตัวอย่าง

6.8.9 การป้องกันการเลือกซ้ำด้วยคําสั่ง DISTINCE

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


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

6.8.10 การเรียงลําดับข้อมูลด้วยคําสั่ง ORDER BY

     เป็นการเรียงลําดับข้อมูลเพื่อให้แสดงผลตามลําดับที่ต้องการ เช่น เรียงลําดับตาม ชื่อ ตามวัน เดือนปีเกิด ตามจังหวัด หรือ เรียงลําดับตามเงินเดือน เป็นต้น ขึ้นอยู่กับข้อมูลที่เลือกขึ้นมาแสดงผล การเรียงลําดับจะใช้คําสั่ง ORDER BY ร่วมกับคําสั่ง SELECT รูปแบบการเขียนคําสั่งดังนี้ 

รูปแบบการเรียงลําดับจะแบ่งออกเป็น 2 รูปแบบ คือ

          1. ASC (Ascending) เป็นค่าปกติ (Default) เรียงลําดับจากน้อยไปหามาก 

          2. DESC (Descending) เป็นการเรียงลําดับจากค่ามากไปหาน้อย


     ตัวอย่างการใช้งานคําสั่งสําหรับแสดงผลข้อมูลลูกค้าเรียงลําดับตามจังหวัดแบบมากไปหาน้อย


     ตัวอย่างการเรียงลําดับเงินเดือนพนักงานจากมากไปหาน้อย


     ตัวอย่างการเลือกข้อมูลพนักงานโดยเรียงลําดับตามจังหวัดและเรียงลําดับตามชื่อด้วย 

6.8.11 การกำหนดช่วงข้อมูลด้วยคําสั่ง LIMIT

     เป็นการจํากัดข้อมูลเพื่อให้แสดงผลเฉพาะแถวที่ต้องการ เช่น ต้องการแสดงผลเพียงแค่ 1 แถว หรือ แสดงผลแถวที่ 1-10 เป็นต้น รูปแบบการใช้งานจะใช้งานร่วมกันกับคําสั่ง SELECT และการกําหนดค่าอื่น ๆ ทั้ง WHERE และ ORDER วิธีการกําหนดค่าทําได้โดยการกําหนดตัวเลขแถวเริ่มต้น และ/หรือ จํานวนแถวที่ต้องการนับจากจํานวนแถวที่เริ่มต้น ดังตัวอย่าง 


     ต้องการเลือกข้อมูลพนักงานโดยเริ่มต้นจากคนที่ 10 แสดงผลจํานวน 20 เรคคอร์ด


     ต้องการแสดงข้อมูลลูกค้า 5 ข้อมูลล่าสุด 

6.8.12 การแก้ไขข้อมูลด้วยคําสั่ง UPDATE

     คําสั่ง UPDATE เป็นคําสั่งสําหรับการแก้ไขหรือปรับเปลี่ยนข้อมูลในฐานข้อมูล ซึ่งสามารถกําหนดให้เปลี่ยนข้อมูลเฉพาะบางฟิลด์ข้อมูล หรือเปลี่ยนข้อมูลทุกฟิลด์ข้อมูลในตาราง แต่จะต้องมีคีย์ หลักสําหรับการอ้างอิงการแก้ไขข้อมูลเพื่อป้องกันการแก้ไขข้อมูลที่เรคคอร์ดอื่น ซึ่งจะใช้งานร่วมกันกับ คําสั่ง WHERE รูปแบบวิธีการเขียนคําสั่งดังนี้

     table_name คือ ชื่อตาราง
     column คือ ชื่อฟิลด์
     value คือ ค่าที่ต้องการแก้ไข
     conditions คือ เงื่อนไข

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

     ในตัวอย่างนี้ต้องการแก้ไขข้อมูล จาก ('1','Kritsana','Naewvises','260 Chaiyaphum Technical College','Chaiyaphum'); เป็น ('1',Suwannee,'Punvirat','240 Chaiyaphum Technical College','Chaiyaphum');

รูปที่ 6.41 การทดสอบคำสั่งเอสคิวแอลในการแก้ไขข้อมูลในตาราง

     จากตัวอย่าง เมื่อแก้ไขข้อมูลในตารางสำเร็จแล้ว เพื่อทดสอบว่าข้อมูลได้ถูกเพิ่มจริง ให้ ใช้คำสั่ง SELECT * FROM 'member' เพื่อดึงข้อมูลทั้งหมดจากตาราง member ขึ้นมาแสดงจะเห็นว่าข้อมูลได้ถูกแก้ไข จริง

รูปที่ 6.42 แสดงผลลัพธ์การแก้ไขข้อมูลในตารางได้สำเร็จ

6.8.13 การลบข้อมูลด้วยคําสั่ง DELETE

     คําสั่ง DELETE เป็นคําสั่งสําหรับการลบข้อมูลในฐานข้อมูล ซึ่งจะใช้ร่วมกันกับคําสั่ง WHERE เพื่อระบุเรคคอร์ดเป้าหมายที่ต้องการลบ มีรูปแบบการเขียนคําสั่งดังนี้

     table_name คือ ชื่อตาราง
     conditions คือ เงื่อนไข

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

     ในตัวอย่างนี้ต้องการลบข้อมูลสมาชิก ชื่อ Suwannee จะใช้คำสั่งดังนี้

รูปที่ 6.43 การทดสอบคำสั่งเอสคิวแอลในการลบข้อมูลในตาราง

     เมื่อใช้คำสั่งเพื่อลบขอบเขตข้อมูลสมาชิก ชื่อ Suwannee จะแสดงข้อความตามตัวอย่างเพื่อถามว่าต้องการจะลบข้อมูลชื่อ Suwannee จริงหรือไม่

รูปที่ 6.44 แสดงข้อความการยืนยันการลบข้อมูลชื่อ Suwannee

     จากตัวอย่าง เมื่อลบข้อมูลในตารางสำเร็จแล้ว เพื่อทดสอบว่าข้อมูลได้ถูกลบจริง ให้ใช้คำสั่ง SELECT * FROM 'member' เพื่อดึงข้อมูลทั้งหมดจากตาราง member ขึ้นมาแสดงจะเห็นว่าข้อมูลได้ถูกลบจริง

รูปที่ 6.45 แสดงผลลัพธ์การลบข้อมูลชื่อ Suwannee จากตาราง member