![]() |
|
![]() |
|
![]() |
การเรียกดูข้อมูลในรูปแบบต่างๆ1. การเรียกดูข้อมูลโดยใช้ฟั่งก์ชันในการรวมการเรียกดูข้อมูลโดยใช้ฟังก์ชันในการรวมมีรูปแบบดังนี้ SELECT <column 1, column 2, > FROM <table name> [WHERE<condition>] [GROUP BY < grouping column> ] [HAVING<condition>]; SELECT คำสั่งที่ต้องมีทุกครั้งที่ต้องการเรียกค้นข้อมูล column 1, column 2, คอลัมน์ที่ต้องการเรียกค้น FROM การกำหนดว่าให้เรียกดูข้อมูล ได้จากตารางใดบ้าง table name ชื่อตารางที่ต้องการเรียกค้นข้อมูล WHERE<condition> ส่วนของคำสั่งที่บอกเงื่อนไขที่จะใช้ในการค้นหาข้อมูล GROUP BY < grouping column> ส่วนของคำสั่งที่บอกเงื่อนไขการจัดกลุ่ม HAVING<condition> ใช้ควบคู่กันกับ GROUP BY เสมอ เพื่อต้องการให้ได้ข้อมูลที่จัดกลุ่มตาม GROUP BY การเรียกดูข้อมูลโดยใช้อนุประโยค GROUP BY อนุประโยค GROUP BY เป็นคำสั่งในการกำหนดค่าต่าง ๆ ในคอลัมน์ใดคอลัมน์หนึ่งโดยเฉพาะในรูปของอีกคอลัมน์หนึ่ง ซึ่งใช้จัดเรียงข้อมูลที่มีความสัมพันธ์กันตามเงื่อนไข ข้อมูลที่ต้องการจัดกลุ่มนั้นและ ต้องสามารถรวมกลุ่มกันได้ด้วย คำสั่ง GROUP BY เป็นคำสั่งที่ใช้ในการจัดแถวข้อมูลตามคอลัมน์ที่ระบุหลัง GROUP BY โดยข้อมูลที่เหมือนกันจะจัดให้อยู่ในหมู่เดียวกัน ตัวอย่างตาราง CHECKS
SELECT PAYEE, SUM(AMOUNT) FROM CHECKS; ถ้าไม่ใช่ GROUP BY ในการรวมคอลัมน์ AMOUNT ของแต่ละคน จะเกิด ERROR ดังนี้ ผลลัพธ์
จากตัวอย่างข้างตัน ถ้าต้องการนับว่า PAYEE แต่ละคนมีจำนวนค่าใช้จ่ายกี่ครั้งจะใช้คำสั่งดังนี้ SELECT PAYEE, SUM(AMOUNT), COUNT(PAYEE) FROM CHECKS GROUP BY PAYEE; ผลลัพธ์
ตัวอย่างตาราง ORGCHART
ถ้าต้องการหาค่าเฉลี่ยของ SALARY ของ TEAM งานแต่ละTEAM จะใช้คำสั่งดังนี้ SELECT TEAM, AVG(SALARY) FROM ORGCHART GROUP BY TEAM; ผลลัพธ์
การเรียกดูข้อมูลแบบ HAVING HAVING จะใช้ควบคู่กันกับ GROUP BY เสมอ เพื่อต้องการให้ได้ข้อมูลที่จัดกลุ่มตาม GROUP BYเพียงบางส่วนตามเงื่อนไขที่ระบุไว้ใน HAVING จากตัวอย่างที่ผ่านมาถ้าต้องการดูเงินเดือนเฉลื่ยของทีมงานที่มีค่าน้อยกว่า 38000 จะใช้คำสั่งดังนี้ SELECT TEAM, AVG(SALARY) FROM ORGCHART GROUP BY TEAM HAVING AVG(SALARY) < 38000; ผลลัพธ์
ตัวอย่าง การใช้ GROUP BY และ HAVING ร่วมกับคำสั่ง AND คือดูว่าทีมงานใดมีค่าเฉลี่ยของ SICKLEAVE มากกว่า 25 และ มีค่าเฉลี่ยของ ANNUALLEAVE น้อยกว่า 20 จะใช้คำสั่งดังนี้ SELECT TEAM, AVG(SICKLEAVE), AVG(ANNUALLEAVE) FROM ORGCHART GROUP BY TEAM HAVING AVG(SICKLEAVE) >25 AND AVG(ANNUALLEAVE) <20; ผลลัพธ์
ตัวอย่าง ถ้าต้องการหาค่าเฉลี่ยของ SICKLEAVE และค่าเฉลี่ยของ ANNUALLEAVE ของจำนวนทีมที่มีจำนวน row มากกว่า 1 จะใช้คำสั่งดังนี้ SELECT TEAM, AVG(SICKLEAVE), AVG(ANNUALLEAVE) FROM ORGCHART GROUP BY TEAM HAVING COUNT(TEAM) > 1; ผลลัพธ์
2.การเรียกค้นข้อมูลจากหลายตารางการจัดทำฐานข้อมูลในรูปตารางเกิดจากการที่ข้อมูลได้ออกแบบมาเพื่อลดความซ้ำซ้อน(normalization) ดังนั้นข้อมูลที่มีรายละเอียดของข้อมูลมากอาจะถูกเก็บไว้ในหลายๆตารางแยกออกมาต่างหาก เช่น ตารางข้อมูลที่เป็นตารางหลัก(master table) และ ตารางข้อมูลที่เป็นตารางเชิงรายการ (transaction table) และตารางข้อมูลที่เป็นตารางที่อยู่(address table) เป็นต้น การแยกออกเป็นตารางข้อมูลย่อยๆนี้นอกจากลดความซ้ำซ้อน แล้วยังช่วยในการประหยัดเนื้อที่ และยังเพิ่มประสิทธิภาพของฐานข้อมูล การเรียกค้นข้อมูลจากหลายตารางของภาษา SQL เป็นการกำหนดความสัมพันธ์ระหว่างตารางทั้งหลาย โดยสามารถเอาข้อมูลในตารางกี่ตารางก็ได้ให้มาสัมพันธ์กัน ดังนั้นจึงสามารถเชื่อมต่อข้อมูลที่แตกต่างกันได้โดยการใช้คำสั่ง WHERE คำสั่ง WHERE เป็นคำสั่งในการกำหนดเงื่อนไขในการเรียกดูข้อมูลใช้คู่กับคำสั่ง SELECT และ FROM ตัวอย่างTABLE1
ตัวอย่าง TABLE 2
ถ้าต้องการรวมทั้ง 2 ตารางเข้าด้วยกัน SELECT * FROM TABLE1, TABLES2 ผลลัพธ์
3.การเรียกดูข้อมูลแบบซ้อนกันการเรียกดูข้อมูลแบบซ้อนกัน(subqueies) เป็นการสร้างคำสั่ง SELECT ซ้อนกัน การเรียกดูข้อมูลแบบซ้อนกันมีจุดประสงค์เพื่อลดภาระในการเชื่อมตารางที่ต้องใช้ในหน่วยความจำเป็นจำนวนมาก คำสั่งย่อยนี้สามารถสร้างหลังคำสั่ง WHERE มีรูปแบบดังนี้ SELECT [*] <column 1, column 2, > FROM <table name> [WHERE<column list = <Select Statement>] SELECT คำสั่งที่ต้องมีทุกครั้งที่ต้องการเรียกค้นข้อมูล column 1, column 2, คอลัมน์ที่ต้องการเรียกค้น FROM การกำหนดว่าให้เรียกดูข้อมูล ได้จากตารางใดบ้าง table name ชื่อตารางที่ต้องการเรียกค้นข้อมูล WHERE<condition> ส่วนของคำสั่งที่บอกเงื่อนไขที่จะใช้ในการค้นหาข้อมูล Select Statement ส่วนของคำสั่งที่เรียกค้นข้อมูลตามเงื่อนไข การทำงานของคำสั่งย่อยที่ใช้ในการระบุเงื่อนไขหรือเรียกข้อมูลจะทำจากคำถามย่อยด้านในสุดผลที่ได้จะเป็นค่ากลับมาให้กับค่าที่อยู่หน้าเครื่องหมายเท่ากับ เพื่อเรียกค้นข้อมูล( SELECT )ตามต้องการ ตัวอย่าง ถ้าต้องการหาคำสั่งซื้อของพนักงานขายที่อาศัยอยู่ใน Bangkok SELECT * FROM ORDERSTAB WHERE SALENO IN (SELECT SALENO FROM SALETAB WHERE ADDRESS = Bangkok); ผลของคำสั่งจะได้ตารงดังนึ้ ตารางคำสั่งซึ้อสินค้า
ตารางพนักงานขาย
จากตัวอย่างนี้สามารถใช้คำสั่งที่ง่ายกว่าและได้ผลลัพธ์เหมือนกันคือ SELECT ORDERNO AMT ORDERDATE CUSNO ORDERSTAB. SALENO FROM ORDERSTAB, SALETAB WHERE ORDERSTAB.SALENO SALETAB.SALENO AND SALETAB.ADDRESS = Bangkok; ตัวอย่าง ตาราง PART
ตัวอย่างตาราง ORDERS
SELECT * FROM ORDERS WHERE PARTNUM = (SELECT PARTNUM FROM PART WHERE DESCRIPTION LIKE ROAD%) ผลลัพธ์
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|