SQL หรือ Structured Query
Language
เป็นภาษาที่ใช้ในการติดต่อกับฐานข้อมูลหรือพูดอีกอย่างก็คือ
เป็นที่ใช้ในการสั่งภาษาที่ใช้ส่งให้ฐานข้อมูลกระทำการใด ๆ ตามคำสั่งที่เราสั่ง ซึ่งในการติดต่อฐานข้อมูลนั้น
ไม่ว่าจะเป็น SQL Server , Microsoft Access , MySQL ,DB2 หรือแม้แต่ Oracle ก็จะต้องใช้คำสั่งภาษา SQL
ในการควบคุมทั้งสิ้น และเราจะมาเรียนรู้ถึงคำสั่งพื้นฐาน ของ SQL
ที่จำเป็นกัน
1.SELECT Statement
ประโยคคำสั่ง SELECT ได้รับการนำไปใช้ในการค้นหาข้อมูลในฐานข้อมูล
และดึงข้อมูลที่เลือกตรงตามเกณฑ์ที่กำหนด ประโยคคาสั่ง SELECT มี 5 clause ให้เลือกใช้แต่มีเฉพาะ
FROM เป็น clause
บังคับ แต่ละ clause มีตัวเลือก พารามิเตอร์เป็นต้นให้เลือก
ตัวอย่าง
----------------------------------------------------------------
SELECT name,
age, salary
FROM employee
WHERE age > 50;
----------------------------------------------------------------
ประโยคคำสั่งนี้จะเลือกค่าทั้งหมดในคอลัมน์
name, age และ salary จาก table “employee ที่age มีค่ามากกว่า 50
NOTE: ต้องมีเครื่องหมาย semicolon(;) ปิดท้ายประโยค
เพื่อชี้ว่าประโยคคำสั่ง SQL จบสมบูรณ์และพร้อมที่จะแปล
ตัวอย่าง
----------------------------------------------------------------
SELECT name,
title, dept
FROM employee
WHERE title
LIKE 'Pro%';
----------------------------------------------------------------
ประโยคคำสั่งข้างบนจะเลือก แถว/ค่า
ในคอลัมน์ name, title และ dept จาก table
“employee” ที่มีtitle เริ่มต้นด้วย ‘Pro’ ซึ่งจะส่งตำแหน่งงานของ Programmer หรือตำแหน่งอื่นที่ขึ้นต้นด้วย Pro ออกมา
2. GROUP BY
GROUP BY clause
ใช้หาผลรวมของคอลัมน์จากแถวในคอลัมน์ที่ระบุและทำงานร่วมกับ
aggregate function ที่ทำงานกับคอลัมน์ 1 คอลัมน์หรือมากกว่าเพื่อหาผลรวมของกลุ่มของแถวข้อมูล
ตัวอย่าง
การจัดกลุ่มภายในคอลัมน์เช่น table ‘item_order’ มีคอลัมน์ quantity ที่เก็บค่า 1, 2, 3 และอื่นๆ โดยต้องการหาค่าราคาสูงสุดของแต่ละค่าใน quantity สามารถเขียนคำสั่งได้ดังนี้
----------------------------------------------------------------
SELECT
quantity, max(price)
FROM
items_ordered
GROUP BY
quantity;
----------------------------------------------------------------
ตัวอย่าง
ถ้าต้องการคำนวณและแสดงข้อมูลเฉพาะค่าเฉลี่ยของพนักงาน
ที่มีเงินเดือนมากกว่า 20,000
----------------------------------------------------------------
SELECT dept,
avg(salary)
FROM employee
GROUP BY dept
HAVING
avg(salary) > 20000;
----------------------------------------------------------------
3. ORDER BY
ORDER BY clause
เป็น clause ตัวเลือกซึ่งยินยอมให้แสดงผลลัพธ์ของคิวรี่ที่เรียงลำดับ
(ทั้งเรียงลำดับจากนอ้อยไปมาก หรือ จากมากไปน้อย) ตามคอลัมน์ที่ระบุให้เรียงลำดับ
ASC = Ascending
order (เรียงลำดับจากนอ้อยไปมาก) - เป็นค่าเริ่มต้น
DESC =
Descending order (เรียงลำดับจากมากไปน้อย)
ตัวอย่าง
----------------------------------------------------------------
SELECT
employee_id, dept, name, age, salary
FROM employee
WHERE dept =
'Sales'
ORDER BY
salary;
----------------------------------------------------------------
ประโยคคำสั่งนี้จะเลือก employee_id, dept, name, age และ salary
จาก table “employee” ที่ค่า dept เท่ากับ ‘Sales’ และแสดงผลลัพธ์ในลำดับจากน้อยไปมากตาม
salary ถ้าต้องการเรียงลำดับแบบหลายคอลัมน์
ต้องแยกคอลัมน์ด้วยเครื่องหมายจุลภาค
4. IN
IN เป็น operator ที่ใช้ทดสอบข้อมูลกับชุดของสมาชิก
โดยทดสอบว่าค่าในคอลัมน์ (ที่ระบุก่อนคีย์เวิร์ด IN) อยู่ในรายการของค่าที่กำหนดให้หลังคีย์เวิร์ด IN
ตัวอย่าง
----------------------------------------------------------------
SELECT employee_id, name, salary
FROM employee
WHERE name IN ('Somchai', 'Sompong', 'Wanchai',
'Pornchai');
----------------------------------------------------------------
ประโยคคำสั่งนี้แสดงข้อมูล employee_id, name และ salary จาก table “employee” เฉพาะชื่อ (name) เป็นชื่อใดชื่อหนึ่งของ'Somchai', 'Sompong', 'Wanchai', 'Pornchai' ผลลัพธ์แสดงแถวข้อมูลจากการส่งออกค่าใดค่าหนึ่งในค่าเหล่านี้
5. BETWEEN
BETWEEN ใช้ทดสอบค่า
(ที่ระบุก่อนคีย์เวิร์ด BETWEEN) อยู่ภายในช่วงของค่า
2 ค่าที่ระบุหลังคีย์เวิร์ด BETWEEN
ตัวอย่าง
----------------------------------------------------------------
SELECT
employee_id, age, name, salary
FROM employee
WHERE age
BETWEEN 30 AND 40;
----------------------------------------------------------------
ประโยคคำสั่งนี้เลือก employee_id, age, name และ salary จาก table“employee” ที่age อยู่ระหว่าง 30
ถึง 40
6. Function
ตัวอย่าง
----------------------------------------------------------------
SELECT
round(salary), name
FROM employee;
----------------------------------------------------------------
ประโยคคำสั่งนี้ปรับค่า salary ให้เป็นจำนวนเต็มที่ใกล้ที่สุด และ name จาก table
“employee”
7. Aggregate
Function
aggregate
function ใช้คำนวณเทียบกับการส่งออกคอลัมน์ของข้อมูลตัวเลขจากประโยคคำสั่ง SELECT ฟังก์ชันกลุ่มนี้ใช้หาผลรวมพื้นฐานของคอลัมน์ที่เจาะจงจากข้อมูลที่เลือกมา
การทำงานของฟังก์ชันต้องใช้GROUP BY clause
เพื่อครอบคลุมการทำงาน แต่ฟังก์ชันสามารถใช้ได้โดยไม่มี GROUP BY clause
ตัวอย่าง
----------------------------------------------------------------
SELECT
AVG(salary)
FROM employee;
----------------------------------------------------------------
ประโยคคำสั่งจะส่งออกผลลัพธ์ที่เก็บค่าเฉลี่ยของทุกข้อมูลที่ส่งออกมาในคอลัมน์
salary จาก table
“employee”
ตัวอย่าง
----------------------------------------------------------------
SELECT
AVG(salary)
FROM employee;
WHERE title =
'Programmer';
----------------------------------------------------------------
ประโยคคำสั่งจะส่งออกผลลัพธ์ที่เก็บค่าเฉลี่ยเงินเดือน
(salary) ของพนักงานที่มีตำแหน่ง (title) เป็น ‘Programmer’
8. JOIN
การค้นหาและเลือกข้อมูลตามหัวข้อที่ผ่านมาเป็นการทำงานกับ table เดียว ในขณะที่การทำงานจริงต้องมีการเลือกข้อมูลจากหลาย table เพื่อแสดงสารสนเทศที่ต้องการได้เนื่องจากหลักการพื้นฐานของ
Relational Database System ให้ออกแบบการจัดเก็บข้อมูลในแต่ละ table สำหรับ entity เดียว
เพื่อขจัดการเก็บข้อมูลที่ซ้ำซ้อนแล้วใช้ความสัมพันธ์ของ table แสดงผลเป็นสารสนเทศที่ต้องการ
ตัวอย่าง
----------------------------------------------------------------
SELECT
customer_info.firstname, customer_info.lastname, purchases.item
FROM
customer_info, purchases
WHERE
customer_info.customer_number = purchases.customer_number;
----------------------------------------------------------------
ประโยคคำสั่งนี้แสดงผลลัพธ์ของคอลัมน์firstname และ lastname จาก table “customer_info” และคอลัมน์ item จาก table “purchases” โดยเชื่อมระหว่าง table ด้วยคอลัมน์customer_number ของ 2 table
Note: แต่ละคอลัมน์นำหน้าด้วย ชื่อ table และจุด ซึ่งไม่มีความจำเป็นในทุก
กรณีแต่จำเป็นถ้าคอลัมน์ที่เรียกมีอยู่ใน 2 table การเขียนด้วยรูปแบบนี้เป็นแบบแผนการเขียนที่ดีในการป้องกันความสับสนในเรื่องที่มาของคอลัมน์แต่ละ table
9. AND operator
AND operator ใช้เชื่อม 2
เงื่อนไข หรือมากกว่าและแสดงผลลัพธ์เฉพาะที่สอดคล้องกับเงื่อนไขที่กำหนดทั้งหมด
AND สามารถใช้เชื่อมเงื่อนไขใน
WHERE clause ตั้งแต่2 เงื่อนไขขึ้นไป โดย
การแสดงแถวข้อมูลตามเงื่อนไขต้องเป็นจริงทุกค่า
ตัวอย่าง
----------------------------------------------------------------
SELECT
employee_id, name, title, salary
FROM employee
WHERE salary
>= 50000.00 AND title = 'Programmer';
----------------------------------------------------------------
ประโยคคำสั่งนี้แสดงข้อมูล employee_id, name, title และ salary
จาก table
“employee” ที่เงินเดือน (salary) มากกว่าหรือเท่ากับ 50,000 และ ตำแหน่ง (title) เท่ากับ Programmer’ ซึ่งข้อมูลสามารถแสดงออกมา เมื่อเงื่อนไขทั้งสอง เป็นจริง ถ้าเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริงจะไม่แสดงออกมา
10. OR operator
OR operator ใช้เชื่อม 2 เงื่อนไข หรือมากกว่าและแสดงผลลัพธ์เมื่อข้อมูลสอดคล้องกับเงื่อนไขใดเงื่อนไขจากเงื่อนไขที่กำหนดทั้งหมด
OR สามารถใช้เชื่อมเงื่อนไขใน
WHERE clause ตั้งแต่2 เงื่อนไขขึ้นไป โดยสามารถแสดงแถวข้อมูลเมื่อข้อมูลมีเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง
หรือทุกเงื่อนไขเป็นจริง
ตัวอย่าง
----------------------------------------------------------------
SELECT
employee_id, name, title, salary
FROM employee
WHERE (title =
'Sales') OR (title = 'Programmer');
----------------------------------------------------------------
ประโยคคำสั่งนี้จะเลือก employee_id, name, title และ salary
จาก table “employee” โดยตำแหน่ง (title) เท่ากับ ‘Sales’ หรือตำแหน่งเท่ากับ
‘Programmer’
Note : การเขียนเงื่อนไขในวงเล็บช่วยให้การอ่านคำสั่งง่ายขึ้น
**ที่มา : SQL