6.8 ภาษาเอสคิวแอล
ภาษาเอสคิวแอล (Structured Query Language : SQL) เป็นภาษาสําหรับเชื่อมต่อและ จัดการกับฐานข้อมูล ทําให้สามารถเชื่อมต่อกับฐานข้อมูลที่หลากหลาย และเป็นมาตรฐาน ANSI (American National Standards Institute) ซึ่งภาษาเอสคิวแอลสามารถดึงข้อมูลจากฐานข้อมูลมาจัดเก็บ แทรกข้อมูล แก้ไข หรือ ลบข้อมูลได้ รวมไปถึงการจัดการเกี่ยวกับโครงสร้างของฐานข้อมูลด้วย
การจัดการฐานข้อมูลจะต้องอาศัยคําสั่งจากภาษาเอสคิวแอลเพื่อจัดการฐานข้อมูลมายเอสคิวแอล ซึ่งผู้พัฒนาจะต้องศึกษาพื้นฐานการเขียนคําสั่งของภาษาเอสคิวแอลในปัจจุบันมีเครื่องมือช่วยให้ จัดการกับภาษาเอสคิวแอล เช่น การสร้างคําสั่งแบบอัตโนมัติ เป็นต้น แต่ผู้พัฒนาจะไม่สามารถแก้ไข คําสั่งนั้นได้หากไม่ได้ศึกษาพื้นฐานของคําสั่ง
ในการทดสอบคําสั่งเอสคิวแอล มีหลายวิธีซึ่งที่สะดวกกับผู้พัฒนาในรายวิชานี้จะใช้วิธีการ ทดสอบคําสั่งผ่านโปรแกรม phpMyAdmin ซึ่งนักศึกษามีอยู่แล้ว การทดสอบคําสั่งทําได้โดยการเข้าไป ที่หน้าหลักของโปรแกรม เลือกฐานข้อมูล จากนั้นเลือกแท็บ SQL จะปรากฏช่องว่างสําหรับใส่รหัสคําสั่ง เอสคิวแอล ซึ่งหลังจากพิมพ์คําสั่งแล้วต้องการทดสอบให้คลิกที่ปุ่ม Go ดังรูปที่ 6.15
6.8.1 การสร้างและลบฐานข้อมูล
6.8.1.1 การสร้าง
ภาษาเอสคิวแอล จะมีคำสั่งสำหรับสร้างฐานข้อมูลใหม่ โดยมีรูปแบบคำสั่ง ดังนี้
รูปแบบคำสั่ง
ตัวอย่างโปรแกรมที่ 6.1 แสดงการใช้คำสั่งภาษาเอสคิวแอลในการสร้างฐานข้อมูล
ทดสอบการใช้คำสั่ง Create database dbname; โดยทดสอบคําสั่งผ่านโปรแกรม phpMyAdmin การทดสอบคําสั่งทําได้โดยการเข้าไป ที่หน้าหลักของโปรแกรม จากนั้นเลือกแท็บ SQL
จากตัวอย่างจะเห็นว่าเมื่อใช้คำสั่ง Create database ctcDB; สร้างฐานข้อมูลใหม่ขึ้น เมื่อกดปุ่ม Go หากไม่มีข้อผิดพลาดใด ๆ เกิดขึ้น จะมีข้อความแสดงว่า “MySQL returned an empty result set (i.e. zero rows). (Query took 0.0020 seconds.)” เพื่อทดสอบว่าฐานข้อมูล ได้ถูกสร้างขึ้นมาจริง ให้พิมพ์คำสั่ง show database; เพื่อแสดงรายชื่อฐานข้อมูลทั้งหมด ผลลัพธ์ที่ได้ดังนี้
จะเห็นว่ารายชื่อฐานข้อมูลทั้งหมดที่แสดงหลังจากสร้างฐานข้อมูลใหม่ จะปรากฏรายชื่อฐานข้อมูล ctcdb ที่สร้างขึ้นใหม่ด้วย
6.8.1.2 การลบฐานข้อมูล
เมื่อต้องการลบฐานข้อมูลที่มีอยู่ คำสั่งภาษาเอสคิวแอล ก็มีคำสั่งสำหรับลบฐานข้อมูล คือ คำสั่ง Drop database จะเป็นการลบฐานข้อมูลที่ระบุทั้งหมด โดยที่ไม่จำเป็นต้องลบตารางต่างๆ ที่อยู่ในฐานข้อมูลนั้น มีรูปแบบคำสั่ง ดังนี้
ตัวอย่างโปรแกรมที่ 6.2 แสดงการใช้คำสั่งภาษาเอสคิวแอลในการลบฐานข้อมูล
ทดสอบการใช้คำสั่ง Drop database ชื่อฐานข้อมูล โดยทดสอบคําสั่งผ่านโปรแกรม phpMyAdmin การทดสอบคําสั่งทําได้โดยการเข้าไป ที่หน้าหลักของโปรแกรม จากนั้นเลือกแท็บ SQL
จากตัวอย่างจะเห็นว่าเมื่อใช้คำสั่ง Drop database ctcDB; เพื่อลบฐานข้อมูลชื่อ ctcDB ออกไป เพื่อทดสอบว่าฐานข้อมูล ctcDB ได้ถูกลบออกไปจริงให้ใช้คำสั่ง SHOW DATABASES; เพื่อแสดงรายชื่อฐานข้อมูลทั้งหมด จะได้ผลลัพธ์ ดังนี้
จะเห็นว่า รายชื่อฐานข้อมูลทั้งหมดที่แสดง หลังจากลบฐานข้อมูล ctcDB จะไม่ปรากฏรายชื่อฐานข้อมูลชื่อ ctcDB
6.8.2 การสร้างตาราง
ภาษาเอสคิวแอล จะมีคำสั่งสำหรับสร้างตาราง โดยมีรูปแบบคำสั่ง ดังนี้
รูปแบบคำสั่ง
table_name คือ ชื่อตาราง
Column_name คือ ชื่อฟิลด์ หรือชื่อคอลัมน์
datatype คือ ชนิดข้อมูล
ตัวอย่างโปรแกรมที่ 6.3 แสดงการใช้คำสั่งภาษาเอสคิวแอลในการสร้างตาราง
ทดสอบการใช้คำสั่งการสร้างตาราง ตามตัวอย่าง โดยทดสอบคําสั่งผ่านโปรแกรม phpMyAdmin การทดสอบคําสั่งทําได้โดยการเข้าไป ที่หน้าหลักของโปรแกรม จากนั้นเลือกแท็บ SQL
Fields name | Data type | Size | Default | KEY |
PersonID | int | 10 | Not Null | Primary Key |
LastName | varchar | 255 | Not Null | - |
FirstName | varchar | 255 | Not Null | - |
Address | varchar | 255 | Not Null | - |
City | varchar | 255 | Not Null | - |
การสร้างตารางต้องรู้ว่าจะสร้างตารางเก็บไว้ในฐานข้อมูลใด จึงต้องเลือกฐานข้อมูลที่จะสร้างตารางก่อน จากนั้นจึงใช้คำสั่งเอสคิวแอลเพื่อสร้างตาราง Person ได้ดังนี้
หลังจากพิมพ์คำสั่งสร้างตาราง Person เสร็จเรียบร้อยแล้ว ลองทดสอบดูว่าตาราง Person ได้ถูกสร้างอยู่ในฐานข้อมูลชื่อ ctcDB จริง ให้พิมพ์ Show tables; จะเห็นผลลัพธ์ตามตัวอย่าง
6.8.3 การแสดงรายละเอียดของตาราง
เมื่อมีการสร้างตารางในฐานข้อมูลแล้ว หากต้องการดูว่าในตารางที่สร้างนั้นประกอบด้วยฟิลด์ตามที่สร้างหรือไม่ ก็สามารถใช้คำสั่งภาษาเอสคิวแอลแสดงรายละเอียดในตารางได้
รูปแบบคำสั่ง
table_name คือ ชื่อตาราง
ตัวอย่างโปรแกรมที่ 6.4 แสดงการใช้คำสั่งภาษาเอสคิวแอลในการแสดงรายละเอียดของตาราง
ทดสอบการใช้คำสั่งการแสดงรายละเอียดของตาราง โดยทดสอบคําสั่งผ่านโปรแกรม phpMyAdmin การทดสอบคําสั่งทําได้โดยการเข้าไป ที่หน้าหลักของโปรแกรมเลือกฐานข้อมูลที่ต้องการ ตามตัวอย่างให้เลือกฐานข้อมูลชื่อ ctcDB จากนั้นเลือกแท็บ SQL แล้วพิมพ์คำสั่งตามตัวอย่าง
หลังจากพิมพ์คำสั่งแสดงรายละเอียดตาราง Person เสร็จเรียบร้อยแล้ว จะเห็นผลลัพธ์ตามตัวอย่าง
6.8.4 การเปลี่ยนชื่อตาราง
ในการเปลี่ยนชื่อตารางในฐานข้อมูล สามารถใช้คำสั่งภาษาเอสคิวแอลเปลี่ยนชื่อตารางได้
รูปแบบคำสั่ง
old_table_name คือ ชื่อตารางเก่า
new_table_name คือ ชื่อตารางใหม่
ตัวอย่างโปรแกรมที่ 6.5 แสดงการใช้คำสั่งภาษาเอสคิวแอลในการเปลี่ยนชื่อตาราง
ทดสอบการใช้คำสั่งการเปลี่ยนชื่อตาราง โดยทดสอบคําสั่ง Rename table; ในตัวอย่างจะแก้ไขชื่อตารางจาก persons เป็น member โดยพิมพ์ตามคำสั่งตามรูปแบบคำสั่ง
จากตัวอย่างจะเห็นว่า คำสั่ง Rename table จะเปลี่ยนชื่อตารางจาก persons เป็น member ตามที่ต้องการ เพื่อทดสอบว่าชื่อตารางได้เปลี่ยนแล้วจริง ให้ใช้คำสั่ง show tables; โดยต้องเลือกฐานข้อมูลชื่อ ctcdb ก่อน
6.8.5 การเพิ่ม แก้ไข ลบ ขอบเขตข้อมูล (Filed)
ขอบเขตข้อมูล (Field) คือเขตข้อมูล/ชุดข้อมูลที่ใช้แทนความหมายของสื่อโครงสร้าง เช่นชื่อของบุคคล ชื่อของวัสดุสิ่งของ กลุ่มของอักขระที่สัมพันธ์กันตั้งแต่ 1 ตัวขึ้นไปที่นำมารวมกันแล้วแสดงลักษณะหรือความหมายอย่างใดอย่างหนึ่ง
6.8.5.1 การเพิ่มขอบเขตข้อมูลในตาราง
ถ้าต้องการแก้ไขโครงสร้างของตาราง โดยการเพิ่มขอบเขตข้อมูลจะใช้คำสั่ง Alter table ซึ่งมีรูปแบบคำสั่งดังนี้
รูปแบบคำสั่ง
table_name คือ ชื่อตาราง
column_name คือ ชื่อฟิลด์ หรือชื่อคอลัมน์
datatype คือ ชนิดข้อมูล
ตัวอย่างโปรแกรมที่ 6.6 แสดงการใช้คำสั่งภาษาเอสคิวแอลในการเพิ่มขอบเขตข้อมูลในตาราง
ทดสอบการใช้คำสั่งการเพิ่มขอบเขตข้อมูลในตาราง ในตัวอย่างเพิ่มฟิลด์ชื่อ email ในตาราง member
จากตัวอย่างจะเห็นว่า เมื่อทำการเพิ่มขอบเขตข้อมูลใหม่ที่ชื่อ email เรียบร้อย เพื่อทดสอบว่าขอบเขตข้อมูลชื่อ email ได้ถูกเพิ่มเข้าไปในตารางจริง ให้ใช้คำสั่ง show columns from member; จะแสดงผลลัพธ์ที่มีขอบเขตข้อมูลชื่อ email โดยจะปรากฏเป็นลำดับสุดท้ายของตาราง
6.8.5.2 การแก้ไขชื่อฟิลด์
ถ้าต้องการแก้ไขชื่อฟิลด์ หรือแก้ไขข้อมูลในฟิลด์ มีรูปแบบคำสั่งดังนี้
รูปแบบคำสั่ง
table_name คือ ชื่อตาราง
old_name คือ ชื่อฟิลด์ หรือชื่อคอลัมน์เก่า
new_name คือ ชื่อฟิลด์ หรือชื่อคอลัมน์ใหม่
datatype คือ ชนิดข้อมูลของฟิลด์ใหม่
ตัวอย่างโปรแกรมที่ 6.7 แสดงการใช้คำสั่งภาษาเอสคิวแอลในการแก้ไขชื่อฟิลด์
ทดสอบการใช้คำสั่งการแก้ไขชื่อฟิลด์ ในตัวอย่างแก้ไขชื่อฟิลด์ email เป็น phone และต้องกำหนดรายละเอียดของฟิลด์ ตามตัวอย่าง
จากตัวอย่างจะเห็นว่า เมื่อทำการแก้ไขชื่อฟิลด์ email เรียบร้อย เพื่อทดสอบว่าขอบเขตข้อมูลชื่อ email ได้ถูกแก้ไขจริง ให้คำสั่ง show columns from member; เพื่อดูรายละเอียดผลลัพธ์
6.8.5.3 การแก้ไขข้อมูลในฟิลด์
ถ้าต้องการแก้ไขข้อมูลในฟิลด์ที่มีอยู่แล้วในตารางภายหลัง มีรูปแบบคำสั่งดังนี้
รูปแบบคำสั่ง
table_name คือ ชื่อตาราง
column_name คือ ชื่อฟิลด์ หรือชื่อคอลัมน์
column_type คือ ประเภทของฟิลด์ หรือคอลัมน์
ตัวอย่างโปรแกรมที่ 6.8 แสดงการใช้คำสั่งภาษาเอสคิวแอลในการแก้ไขข้อมูลในฟิลด์
ทดสอบการใช้คำสั่งการแก้ไขรายละเอียดของฟิลด์ โดยไม่มีการเปลี่ยนชื่อฟิลด์ แต่จะแก้ไขชนิดข้อมูลในฟิลด์ ในตัวอย่างจะแก้ไขชนิดข้อมูลในฟิลด์ phone กำหนดให้ชนิดข้อมูลเป็น varchar(10) และไม่มีค่า Null
จากตัวอย่างจะเห็นว่า เมื่อทำการแก้ไขรายละเอียดของฟิลด์ เรียบร้อย เพื่อทดสอบว่าชื่อฟิลด์ได้เปลี่ยนจริง ให้ใช้คำสั่ง show columns from member; เพื่อดูรายละเอียดผลลัพธ์
6.8.5.4 การลบขอบเขตข้อมูล
ถ้าต้องการลบขอบเขตข้อมูลออกจากตาราง สามารถทำได้โดยใช้คำสั่งภาษาเอสคิวแอล ตามรูปแบบคำสั่งดังนี้
รูปแบบคำสั่ง
ตัวอย่างโปรแกรมที่ 6.9 แสดงการใช้คำสั่งภาษาเอสคิวแอลในการลบขอบเขตข้อมูล
ทดสอบการใช้คำสั่งการลบขอบเขตข้อมูล ในตัวอย่างจะลบขอบเขตข้อมูลชื่อ phone ออกจากตาราง จะใช้คำสั่งดังนี้
จากตัวอย่างจะเห็นว่าเมื่อใช้คำสั่งเพื่อลบขอบเขตข้อมูลชื่อ phone จะแสดงข้อความตามตัวอย่างเพื่อถามว่าต้องการจะลบขอบเขตข้อมูลชื่อ phone จริงหรือไม่
เมื่อทำการคลิกปุ่ม ตกลง ก็จะทำการลบขอบเขตข้อมูลชื่อ phone ออกสำเร็จ เพื่อทดสอบว่าขอบเขตข้อมูลชื่อ phone ได้ถูกลบออกจริง ให้ใช้คำสั่ง show columns from member; เพื่อดูรายละเอียดผลลัพธ์
จะเห็นว่าไม่ขอบเขตข้อมูลชื่อ 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 ได้ดังนี้
จากตัวอย่าง เมื่อเพิ่มข้อมูลลงในตารางสำเร็จแล้ว เพื่อทดสอบว่าข้อมูลได้ถูกเพิ่มจริง ให้ใช้คำสั่ง SELECT * FROM 'member' เพื่อดึงข้อมูลทั้งหมดจากตาราง member ขึ้นมาแสดงจะเห็นว่าข้อมูลได้ถูกเพิ่มลงในตาราง member จริง
6.8.7 การแสดงข้อมูลด้วยคําสั่ง SELECT
คําสั่ง SELECT เป็นคําสั่งสําหรับการเลือกข้อมูลจากฐานข้อมูลขึ้นมาแสดงผล ซึ่งมีรูปแบบการเขียนคําสั่งดังนี้
หรือหากต้องการเลือกข้อมูลทั้งหมดจากตารางจะใช้คําสั่ง
ตัวอย่างโปรแกรมที่ 6.11 แสดงการใช้คำสั่งภาษาเอสคิวแอลในการแสดงข้อมูล
โดยให้แสดงข้อมูลทั้งหมดในตาราง member จะใช้คําสั่ง SELECT * FROM 'member'
หรือต้องการแสดงข้อมูลแบบระบุคอลัมน์ โดยแสดงข้อมูลในคอลัมน์ id กับ FirstName จะใช้คำสั่ง SELECT ID,FirstName FROM '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');
จากตัวอย่าง เมื่อแก้ไขข้อมูลในตารางสำเร็จแล้ว เพื่อทดสอบว่าข้อมูลได้ถูกเพิ่มจริง ให้ ใช้คำสั่ง SELECT * FROM 'member' เพื่อดึงข้อมูลทั้งหมดจากตาราง member ขึ้นมาแสดงจะเห็นว่าข้อมูลได้ถูกแก้ไข จริง
6.8.13 การลบข้อมูลด้วยคําสั่ง DELETE
คําสั่ง DELETE เป็นคําสั่งสําหรับการลบข้อมูลในฐานข้อมูล ซึ่งจะใช้ร่วมกันกับคําสั่ง WHERE เพื่อระบุเรคคอร์ดเป้าหมายที่ต้องการลบ มีรูปแบบการเขียนคําสั่งดังนี้
table_name คือ ชื่อตาราง
conditions คือ เงื่อนไข
ตัวอย่างโปรแกรมที่ 6.13 แสดงการใช้คำสั่งภาษาเอสคิวแอลในการลบข้อมูลในตาราง
ในตัวอย่างนี้ต้องการลบข้อมูลสมาชิก ชื่อ Suwannee จะใช้คำสั่งดังนี้
เมื่อใช้คำสั่งเพื่อลบขอบเขตข้อมูลสมาชิก ชื่อ Suwannee จะแสดงข้อความตามตัวอย่างเพื่อถามว่าต้องการจะลบข้อมูลชื่อ Suwannee จริงหรือไม่
จากตัวอย่าง เมื่อลบข้อมูลในตารางสำเร็จแล้ว เพื่อทดสอบว่าข้อมูลได้ถูกลบจริง ให้ใช้คำสั่ง SELECT * FROM 'member' เพื่อดึงข้อมูลทั้งหมดจากตาราง member ขึ้นมาแสดงจะเห็นว่าข้อมูลได้ถูกลบจริง