แสดงบทความที่มีป้ายกำกับ SQL Command แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ SQL Command แสดงบทความทั้งหมด

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

การใช้ SUB Query ใน SQL Command

Sub query คือ การดึงข้อมูลออกเป็นตารางเสมือน ตามเงื่อนไขที่ต้องการเพื่อจุดประสงค์ที่ต้องการ
ซึ่งต้องใช้ ( ) ในการ scope

ตัวอย่างการใช้งาน SUB Query

SELECT a.*
FROM (
  SELECT emp_id,emp_name
  FROM employee
  WHERE emp_id  >= '100111'
) as a

จากตัวอย่างหมายความว่า  เลือกข้อมูลทั้งหมดจากตารางที่มี Alias "a" ซึ่งเป็น Sub query จากการ
Select ข้อมูลจากตาราง employee ที่มี emp_id >= '100111'

การใช้คำสั่ง IN ใน SQL command

คำสั่ง IN ใน Sql หมายถึงการกรองข้อมูลด้วย column  โดยที่ค่าที่ต้องการกรองมีได้มากกว่า 1 ค่า ซึ่งแตกต่างจากการใช้เครื่องหมายเท่ากับ ("=")  และค่าที่ใช้กรองจะต้องอยู่ภายในวงเล็บ

ตัวอย่าง
SELECT *
FROM employee
WHERE emp_id IN ('100234','100235','100236')
ความหมายของ Query นี้คือ การเลือกพนักงานที่มีรหัสตามที่ระบุนั่นเอง ซึ่งผลลัพธ์จะได้ 3 Records

คำสั่ง JOIN ใน SQL

Join ก็คือ "ร่วมกัน" , "เชื่อมต่อ" ดังนั้นก็คือการเชื่อมโยงตารางเข้าด้วยกันนั่นเอง และการ join table
มีหลายรูปแบบซึ่งใช้งานแตกต่างกันออกไป

รูปแบบของการ JOIN ที่ใช้กันบ่อย ๆ มีดังนี้
INNER JOIN  คือ ค่าของ column ที่ใช้ในการ join จะต้องมีค่าตรงกันเท่านั้น แถวของข้อมูลที่ตรงตามเงื่อนไขนี้เท่านั้นที่จะแสดงผลออกมาจากการ Query

LEFT JOIN  คือ แถวจากตารางหลัก(ทางซ้าย)จะออกมาเสมอ แม้ว่าจะไม่มีข้อมูลที่ตรงกันในตารางที่เชื่อมโยงไป

RIGHT JOIN จริง ๆ แล้วเหมือนกับ LEFT JOIN เพียงแต่สลับตำแหน่งของตารางที่ใช้ในการเชื่อมโยงข้อมูลเท่านั้น
(ไม่แนะนำให้ใช้ ใช้ LEFT JOIN แทนดีกว่า จะได้ไม่สับสน)


ตัวอย่าง

/* INNER JOIN */
SELECT e.emp_id,e.emp_name,d.dept_name
FROM employee as e
INNER JOIN department as d ON e.dept_id = d.dept_idORDER BY d.dept_id,e.emp_id

ความหมายคือ  เลือกพนักงานทุกคนที่มีรหัสแผนกตรงกับในตารางแผนก
หากพนักงานคนใดยังไม่รหัสแผนกคือ dept_id  ข้อมูลพนักงานรายนั้นจะไม่แสดงใน Query นี้


/* LEFT JOIN */
SELECT e.emp_id,e.emp_name,d.dept_name
FROM employee as e
LEFT JOIN department as d ON e.dept_id = d.dept_id

ความหมายคือ เลือกพนักงานทุกคนที่มีรหัสแผนกตรง หรือ ไม่ตรงกับในตารางแผนกออกมาทั้งหมด
ถึงแม้ว่าพนักงานบางรายจะยังไม่มีรหัสแผนก ข้อมูลพนักงานรายนั้นก็จะยังแสดงออกมาด้วย
เพียงแต่ว่าค่าใน column "dept_name" จะเป็นค่า NULL เท่านั้นเอง

การใช้ Alias แทนชื่อคอลัมน์เดิมในคำสั่ง SQL

ลักษณะเช่นเดียวกับการใช้ Alias แทนชื่อตาราง เพียงแต่เปลี่ยนมาใช้แทนในส่วน column name
ตัวอย่าง

SELECT e.emp_id as   employee_id, e.emp_name as employee_name
FROM  employee as e

จากตัวอย่างคือ การตั้งชื่อ column ใหม่จาก SQL Query จากเดิม emp_id เป็น employee_id
และจาก emp_name เป็น employee_name

การใช้ Alias แทนชื่อตารางในคำสั่ง SQL

เปรียบเหมือนการตั้งชื่อเล่นให้กับบุคคล เช่นคนที่ชื่อยาว ๆ ก็มีชื่อเล่นให้เรียกง่าย ๆนั่นเอง

ตัวอย่างการใช้ Alias ในคำสั่ง SQL

SELECT e.emp_id,e.emp_name,e.salary 
FROM employee as e 

คำสั่ง Group By ใน SQL

คำสั่ง Group By ใน SQL คือคำสั่งที่ใช้จัดกลุ่ม column จากการ Select ข้อมูล ซึ่งต้องใช้ร่วมกับ Aggregate function เช่น
-Count , Sum , Max , Min , Avg

ตัวอย่างการใช้ Group by

SELECT dept_no,COUNT(emp_id) as emp_count,SUM(salary) as sum_salary,MAX(salary) as max_salary,MIN(salary) as min_salary,AVG(salary) as avg_salary
FROM emp
GROUP BY dept_no

ความหมายของ Query นี้คือ การ นับจำนวนพนักงาน,ยอม Summary ของเงินเดือน ,เงินสูงสุด , เงินเดือนต่ำสุด และเงินเดือนเฉี่ยของพนักงาน ตามรหัสแผนกนั่นเอง

คำสั่ง SQL , SQL Command

SQL คือ Simple Query Language (ย่อมาจาก) แปลตรง ๆ ก็คือ ภาษาพื้นฐานที่ใช้ในการสืบค้นข้อมูลนั่นเอง
SQL Query ส่วนใหญ่แล้วจะมี Syntax ที่คล้าย ๆ แตกต่างกันเพียงรายละเอียดปลีกย่อยเท่านั้น
การที่จะทำความเข้าใจกับ SQL ไม่ใช่เรื่องยาก เพียงแต่จะต้องมีความเข้าใจพื้นฐานสักเล็กน้อย
เกี่ยวกับฐานข้อมูล ซึ่งก็มีมากมายให้เลือกใช้ครับ ตั้งแต่ของฟรีไปยังที่ต้องจ่ายเงิน(มาก)
ตัวอย่าง Free Database ก็เช่น Mysql , SQL Server Express Edition,
ส่วนที่ต้องเสียเงินก็เช่น SQL Server 2005,2008 , Microsoft Access, ORACLE , DB2

คำสั่ง SQL พื้นฐาน 

SELECT  FROM WHERE ORDER BY

SELECT : คือ "การเลือก" ความหมายก็ตรงตัว
FROM : คือ "จาก"

WHERE : คือ "ที่ตรงตามเงื่อนไข"
ORDER BY : คือ "การเรียงลำดับข้อมูล"  ASC (Ascendant) คือจากน้อยไปหามาก , DESC (Descendant) คือ จากมากไปหาน้อย
หากไม่ใส่ ASC / DESC ค่า Default จะเป็น ASC


ดังนั้น SELECT FROM WHERE  + ORDER BY ก็คือ การเลือกข้อมูลจากแหล่งข้อมูล (ตาราง / Table,View) ที่ต้องการ
โดยสามารถระบุเงื่อนไขลงไปนั่นเอง

ตัวอย่างเช่น
SELECT * FROM employee ORDER BY emp_id ASC
ก็หมายความว่าเลือกทุกคอลัมน์จากตาราง employee โดยเรียงลำดับด้วยฟิลด์ emp_id จากน้อยไปหามาก

การใช้ WHERE ใน SQL
SELECT * FROM employee
WHERE emp_id ='100234'
หมายความว่า เลือกข้อมูลทุกคอลัมน์จากตาราง employee ที่ค่าในคอลัมน์ emp_id เท่ากับ '100234'

SELECT * FROM employee
WHERE emp_id LIKE '100%'
หมายความว่า เลือกข้อมูลทุกคอลัมน์จากตาราง employee ที่ค่าในคอลัมน์ emp ขึ้นต้นด้วย '100'
ค่าที่เหลือจะเป็นอะไรก็ได้

SELECT emp_id,emp_name,tel_no,salary,(salary *1.1) as new_salary
FROM employee
ORDER BY salary DESC
หมายความว่า เลือกข้อมูล ตาม column ที่ระบุ  และมีการคำนวนค่าจาก column เงินเดือนเพิ่มเติม
จากตาราง employee โดยขึ้นเงินเดือน 10% (salary *1.1)