Black Moustache

วันพฤหัสบดีที่ 18 ธันวาคม พ.ศ. 2557

SQL

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

ไม่มีความคิดเห็น :

แสดงความคิดเห็น