SQL Structure Query Language

posted on 11 Jun 2009 00:03 by techinnoreview  in MITT

 http://www.thai-programmer.com/?DPage=90300909

ภาษา SQL

        SQL ได้เข้ามามีบทบาทในงาน Application ฐานข้อมูล การเรียนรู้ SQL จึงมีความจำเป็น สำหรับผุ้ที่ต้องการพัฒนา Application ฐานข้อมูลนั้นขึ้นมาใช้งาน Delphi สนับสนุนการใช้งาน SQL ในการจักการกับข้อมูลในฐานข้อมูล โดยผ่านทาง Component

        Query เป้นวิธีการเรียกค้นกลุ่มของข้อมูล ที่ต้องการจากตารางออกมาแสดง โดยจะอยู่ในรุปแบบของคำถาม เช่น มีคนที่เป้นผู้ชายกี่คน หรือ มีคนที่อายุมาหหว่า 50 ปีหรือไม่ มีกี่คน เป็นต้น นอกจากจะเรียกค้นข้อมูลแล้ว เรายังสามารถใช้คำสังในการจัดการกับกลุ่มของข้อมูลเหล่านั้นด้วย เช่น การเรียงลำดับข้อมูล การคำนวนต่างๆ เป็นต้น

        SQL ย่อมาจาก Structure Query Language เป็นภาาามาตรฐานที่ใช้ในการเขียน Query เพื่อใช้ในการเรียกค้นข้อมูล โดยรูปประโยคของภาษา SQL นั้นจะอยู่ในรูปแบบ ที่เราสามารถเข้าใจได้ง่าย เนื่องจากมีความไกล้เคียงกับภาษาอังกฤษ ที่เราใช้ในชีวิตประจำวันของเรา

        คำสั่งต่างๆ ในภาษา SQL เป็นคำสั่งมาตรฐาน ดังนั้นเราจึงสามารถ นำไปใช้ได้กับหลายๆ ระบบ ไม่ว่าจะเป็น Delphi, C++, Visual Basic หรือเป็นฐานข้อมูลของ Otacle ซึ่งแต่ละระบบ อาจมีการกำหนดรูปแบบการใช้คำสั่งแตกต่างกันออกไป แต่ส่วนใหญ่จะมีรุปแบบที่เกมือนๆ กัน สำหรับใน Delphi นั้น ภาษา SQL เป็นส่วนสำคัญในการทำให้ Application ที่เราสร้างขึ้น มีความสามารถตามที่เราต้องการ และมีประสิทธิภาพมากขึ้นด้วย แต่ทั้งนี้ ขึ้นอยู่กับการ ใช้คำสั่งต่างๆ ในการเขียน Query ด้วย

Top

SQL Explorer

        SQL Explorer หรือ Database Explorer เป็นเครื่องมืออีกตัวหนึ่ง ที่อยู่ในกลุ่มของ Delphi ใช้แสดงรายละเอียดต่างๆ ของฐานข้อมูล ไม่ว่าจะเป็น รายละเอียดของฐานข้อมูล Alias หรือ Table เป็นต้น นอกจากนั้นแล้ว เรายังสามารถจัดการกับ ข้อมูลในฐานข้อมูลต่างๆ ได้ด้วย รวมทั้งการใช้คำสัง SQL เพื่อเรียกดูข้อมูลจาก ฐานข้อมูล ตามต้องการ ในการเปิด SQL Explorer ขึ้นมาใช้งาน ทำได้โดยเลือกเมนู Database > Explorer หรือเลือกเมนูของ Windows ที่ Start > Programs > Borland Delphi 7 > SQL Explorer จะปรากฏหน้า Windows ของ SQL Explorer ดังรูป

        จากรูป ทางด้านซ้ายมือประกอบไปด้วย Page 2 Page คือ Database และ Dictionary สำหรับ Page Database จะแสดง Alias ทั้งหมดของฐานข้อมูล ที่มีทั้งหมดใน Computer ของเรา โดยอยู่ในรูปแบบของ Tree และ Page Dictionary ใช้ในการนพฐานข้อมูล ตาราง และคุณสมบัติต่างๆ เข้ามาเก็บไว้ใน Data Dictionary

        สำหรับการจัดการกับข้อมุลในตารางด้วยคำสั่งภาษา SQL เพื่อดึงข้อมูลต่างๆ ออกมาแสดง ทำได้โดยเลือก Page Enter SQL จากนั้นป้อนคำสั่งลงไปดังรูป

        เมื่อป้อนเสร้จแล้วกดปุ่มรูป ฟ้าผ่า ด้านขวามือ ผลลัพธ์ก็จะแสดงออกมาในส่วนล่างของ Page ถ้าเราต้องการแสดงข้อมูลรูปภาพหรือ Memo ก็สามารถทำได้โดย Click ที่ Field รูปภาพ หรือ Memo แล้วเลือกเมนู View > Blob Explorer หรือ Click ที่ Icon  หรือ Double Click ที่ Field ที่ต้องการแสดง ก้จะปรากฏ Dialog Box สำหรับแสดงรุปภาพหรือ Memo ออกมา ดังรูป

        เพียงเท่านี้ เราก็สามารถดึงข้อมูล และจัดการกับข้อมูลภายในตาราง ที่เราเลือกได้อย่างง่ายดาย ด้วย SQL Explorer นอกจากนั้นแล้ว เรายังสามารถใช้ SQL Explorer ในการทดสอบข้อมูลก่อน ที่จะนำไปใช้ ในการสร้าง Application บน Delphi ได้อีกด้วย

Top

คำสั่ง SELECT

        การเรียกค้น เป้นการค้นหาข้อมูลที่เราต้องการ จากตารางใรฐานข้อมูล ซึ่งเป็นส่วนสำคัญ ในการทำงานด้านฐานข้อมูล ในกรณีที่เรามีข้อมูลอยู่เป็นจำนวนมาก การค้นหาข้อมูล โดยการเข้าถึงข้อมูลทีละ Record ในตารางจะทำให้เสียเวลามาก การเรียกค้นจึงเป้นวิธีการที่เรานำมาใช้เพื่อให้การค้นหาข้อมูล จากฐานข้อมุลเป้นไปอย่างรวดเร็ว รูปแบบประโยคพื้นฐานของภาษา SQL สำหรับการเรียกค้นสามารถทำได้ดังนี้

        SELECT FieldName, FieldName,...

        FROM TableName, TableName,...

        จากรูปแบบข้างบน ถ้าแปลกันอย่างคร่าวๆ คือ เป็นการเลือก Field ต่างๆ จากตารางต่างๆ ที่กำหนด ออกมาแสดง ดังตัวอย่างต่อไปนี เป็นการเรียกค้น แสดง Field ต่างๆ ดังนี้คือ EmpID,Name,Telephone,Sex จาก EmpTable ซึ่งจะต้องทำดังนึ้

        SELECT EmpID,Name,Telephone,Sex

        FROM EmpTable

        ผลการแสดง ก็จะแสดงข้อมูล เพียง EmpID,Name,Telephone,Sex ดังรูป

        ถ้าหากต้องการแสดงข้อมุลทั้งหมดทุก Field จะใช้ * แทน หมายถึงการแสดงทุก Field ดังนี้

        SELECT *

        FROM EmpTable

Top

คำสั่ง WHERE

        คำสั่ง SELECT สามารถช่วยให้เราค้นหาข้อมูล ที่ต้องการได้ในระดับหนึ่งเท่านั้น ถ้าต้องการเจาะลึกเข้าไปในรายละเอียด ของแต่ละ Record แล้ว เราจะไม่สามารถเรียกค้นข้อมุลตามที่ต้องการ ได้เลยเช่น ต้องการเรียกค้นเฉพาะเพศชาย เป็นต้น ดังนั้นจึงต้องใช้ WHERE เพื่อค้นหาตามเงื่อนไขข้างต้น รูปแบบดังนี้

        WHERE Condition

        เช่น

        SELECT *

        FROM EmpTable

        WHERE Sex = 'M'

        การกำหนดเงื่อนไขใน Query นั้น เป้นวิธีการเปรียบเทียบค่า ถ้าค่าที่เราเปรียบเทียบนั้น เป็นจริง ก็จะแสดงผลลัพธ์ออกมาตามเงื่อนไข ที่กำหนดไว้ เครื่องหมายที่เราใช้ในการเปรียบเทียบ ค่าใน Query นั้น เป้นเครื่องหมายที่เราคุ้นเคยกันทางคณิตศาสตร์ เช่น =, >, <, <=, >= ส่วนเครื่องหมายไม่เท่ากันใช้ != หรือ <> นอกจากเครื่องหมายทางคณิตศาตร์ ข้างต้นแล้ว เรายังใช้คำสั่งเพื่อใช้ในการเปรียบเทียบค่าหลายค่าด้วย IN ดังนี้

        FieldName IN(ค่าที่1,2,3,...,n)

        เช่น

        SELECT *

        FROM EmpTable

        WHERE EmpID IN('48010001','48010007','48010009')

        BETWEEN...AND เป้นการตรวจสอบว่า อยู่ในช่างของข้อมุลที่กำหนดหรือไม่ มีรูปแบบดังนี้

        BETWEEN ค่าที่1 AND ค่าที่2

        เช่น

        SELECT *

        FROM EmpTable

        WHERE BirthDay BETWEEN '1/1/2514' AND '1/1/2522'

        NOT เป็นการดึงข้อมูลที่นอกเหนือจากสิ่งที่กำหนดไว้ หมายถึงไม่ใช่ค่านี้นั่นเอง มีรูปแบบดังนี้

        NOT Condition

        เช่น

        SELECT *

        FROM EmpTable

        WHERE BirthDay NOT BETWEEN '1/1/2514' AND '1/1/2522'

        LIKE กรณีที่เราต่องการค้นหาข้อมุลที่เป็นอักขระ แต่เราจำข้อมูลลนั้นได้เพียงบางส่วน เราจะใช้ LIKE ในการกำหนดเงื่อนไข รูปแบบดังนี้

        LIKE %ข้อมูล%

        สำหรับเครื่องหมาย % ตัวด้านหน้า หมายความว่า ขึ้นต้นด้วยอะไรก็ได้ ส่วน % ด้านหลัง หมายความว่าลงท้ายด้วยอะไรก็ได้ หากไม่ใส่ % เช่น LIKE 'ABC%' หมายความว่า ขึ้นต้นด้วย ABC ลงท้ายด้วยอะไรก็ได้ หรือ LIKE '%ABC' ขึ้นต้นด้วยอะไรก็ได้ ตามด้วย ABC หรือ LIKE '%ABC%' ขึ้นต้นด้วยอะไรก็ได้ และลงท้ายด้วยอะไรก็ได้ แต่ต้องมี ABC เป็นต้น

        เช่น

        SELECT *

        FROM EmpTable

        WHERE Address LIKE '%Lopburi%'

Top

ตัวเชื่อม AND

        AND เป็นตัวเชื่อมเงื่อนไข เมื่อเราต้องการเงื่อนไขเยอะขึ้นเช่น ต้องการข้อมูลคนที่ ไม่เกิดช่วง 1/1/2514 ถึง 1/1/2522 และเป็นคนที่เป็นผู้หญิงเท่านั้น ดังนี้

        SELECT *

        FROM EmpTable

        WHERE BirthDay NOT BETWEEN '1/1/2514' AND '1/1/2522'

        AND Sex = 'F'

Top

ตัวเชื่อม OR

        OR เป็นตัวเชื่อมเงื่อนไข เมื่อเราต้องการเงื่อนไขเยอะขึ้นเช่น ต้องการข้อมูลคนที่ ไม่เกิดช่วง 1/1/2514 ถึง 1/1/2522 หรือเป็นคนที่เป็นผู้หญิงเท่านั้น ดังนี้

        SELECT *

        FROM EmpTable

        WHERE BirthDay NOT BETWEEN '1/1/2514' AND '1/1/2522'

        OR Sex = 'F'

Top

คำสั่ง COUNT

        ถ้าเรามีข้อมูลอยู่จำนวนมาก และต้องการนับจำนวนข้อมูลทั้งหมดเหล่านั้น หรือนับข้อมุลที่เป็นจริงตามเงื่อนไขที่กำหนด คงจะเป็นการทำงานที่ยากอยู่พอสมควร ถ้าเราต้องนับข้อมูลเหล่านั้นด้วยตัวเอง ดังนั้น SQL จึงมีคำสั่งที่ช่วยให้เราสามารถนับจำนวนข้อมูล ที่ต้องการได้อย่างง่ายดาย คือ COUNT ผลลัพธ์ที่ได้จาการใช้คำสั่งนี้ จะมีเพียงแค่แถวเดียว โดยจะแสดงข้อมูลจำนวนนับเท่านั้น เนื่องจากเป็นการจัดการกับข้อมูลทั้งหมดเพื่อสรุป เป็นผลลัพธ์ออกมา ซึ่งมีรูปแบบดังนี้

        COUNT(*)

        เช่น

        SELECT COUNT(*)

        FROM EmpTable

        WHERE BirthDay NOT BETWEEN '1/1/2514' AND '1/1/2522'

        AND Sex = 'F'

Top

คำสั่ง MIN, MAX, AVG และ SUM

        นอกจากเราจะสามารถนับจำนวน Record ได้แล้ว เรายังสามารถหาค่าสูงสุด หาค่าต่ำสุด หาค่าเฉลี่ย และหาผลรวม ของข้อมูลได้ โดยใช้คำสั่ง MIN, MAX, AVG และ SUM สำหรับ การหาค่าเฉลี่ย และการหาค่าผลรวมนั้น หาได้เฉพาะ Field ชนิดตัวเลขเท่านั้น ส่วนการหาค่าตำสุด และการหาค่าสูงสุด หาได้ทั้ง Field ชนิดตัวเลขและตัวอักษร ซึ่งมีรูปแบบดังนี้

  • MIN(FieldName)
  • MAX(FieldName)
  • AVG(FieldName)
  • SUM(FieldName)

        เช่น

        SELECT MIN(Qty), MAX(Qty), AVG(Qty), SUM(Qty), MIN(DateOrder), MAX(DateOrder)

        FROM OrderTable

        WHERE BookID = 'T034'

Top

คำสั่ง ORDER BY

        การเรียงลำดับข้อมูลจะทำให้ข้อมูล ที่ค้นขึ้นมาดูนั้นเป็นระเบียบ และง่ายต่อการค้นหา ในกรณีที่ผลลัพธ์มีเป็นจำนวนมากอีกด้วย เราจะใช้คำสั่ง ORDER BY เป็นตัวกำหนด ในการจัดเรียงข้อมูล ซึ่งการจัดเรียงใน SQL นั้นมีอยู่ 2 แบบ คือ จากน้อยไปมาก และจากมากไปน้อย การเรียงลำดับข้อมูลทำได้โดย กำหนด Field ที่ต้องการ ให้มีการจัดเรียง ตามหลังคำว่า ORDER BY จากนั้นจะเป็นรูปแบบการเรียงลำดับ โดยจะวางไว้หลัง Field ที่กำหนด ซึ่งมีรูปแบบดังนี้

        ORDER BY FieldName DESC | ASC

        เช่น

        SELECT *

        FROM OrderTable

        WHERE BookID = 'T017'

        ORDER BY Qty ASC

        โดย DESC คือการเรียงจากมากไปหาน้อย ส่วน ASC เป็นการเรียงจากน้อยไปหามาก หากไม่กำหนดรูปแบบการเรียง SQL จะกำหนดรูปแบบการเรียงอัตโนมัติให้เป็น จากน้อยไปหามาก คือ ASC นั่นเอง

Top

คำสั่ง GROUP BY

        GROUP BY เป็นการ แยกข้อมูลออกเป็นกลุ่มๆ และทำการพิจารณาเฉพาะข้อมูลในกลุ่มนั้นๆ เช่นต้องการหาผลรวมของจำนวนยอดขายโดยสรุปเป็นกลุ่มตามรหัสหนังสือเป็นต้น ซึ่งมีรูปแบบดังนี้

        GROUP BY FieldName, FieldName, ...

        เช่น

        SELECT BookID, COUNT(Qty)

        FROM OrderTable

        GROUP BY BookID

Top

คำสั่ง HAVING

        เราสามารถกำหนดเงื่อนไขในการจัดกลุ่ม ได้โดยใช้ HAVING เช่น ต้องการหาผลรวมของจำนวนยอดขายโดยสรุปเป็นกลุ่มตามรหัสพนักงานขาย โดยมียอดขายมากกว่า 500 เป็นต้น เช่น

        SELECT EmpID, COUNT(Qty)

        FROM OrderTable

        GROUP BY EmpID

        HAVING COUNT(Qty) > 500

Top

การ JOIN Table

        นอกจากจะเรียกค้นข้อมูลที่ต้องการจากต่ารางเพียงตารางเดียวแล้ว เรายังสามารถเขียนคำสั่ง SQL เพื่อทำการเรียกค้นข้อมูลขากหลายๆ ตารางได้ เราเรียกว่าการ Join หรือการเชื่อมตารางเข้าด้วยกัน เช่นเราต้องการ เชื่อมตาราง EmpTable กับ OrderTableและ BookStrock เพื่อแสดงชื่อพนักงานขายหนังสีอ และจำนวนหนังสือที่ขาย พร้อมชือหนังสือ เช่น

        SELECT A.Name, C.Name, B.Qty

        FROM EmpTable A,OrderTable B, BookStrock C

        WHERE B.EmpID = A.EmpID

        AND B.BookID = C.BookID

        AND B.Qty > 50

        ORDER BY B.Qty

Top

Sub Query

        เราสามารถกำหนด Query ภายใน Query ได้ เพื่อเป็นการดึงข้อมูล ออกจากตาราง ตั้งแต่ 1 ตารางขึ้นไป ตามที่ต้องการ เราใช้ Query ย่อยๆ นี้ คล้ายๆ กับ การเรียกข้อมูลจากหลายๆ ตารางข้างต้น เช่น

        SELECT BookID,Name

        FROM BookStrock

        WHERE BookID IN ( SELECT BookID

                FROM OrderTable

                WHERE Qty > 50)

        AND Price > 300

Top

คำสั่ง INSERT

        คำสั่ง INSERT มีไว้สำหรับ เพิ่มข้อมูลเข้าไปในตารางใดๆ โดยมีรูปแบบดังนี้

        INSERT INTO TableName [(FieldName1, FieldName2, FieldName3, ...)]

        VALUES (Value1, Value2, Value3, ...)

        เช่น

        INSERT INTO EmpTable (EmpID, Name, Telephone, BirthDay, Address, Sex)

        VALUES ('48010013', 'Sompoth Doundee', '01-100-5247', '3/22/2510', '154 Moo 2 Phoknoi Punnanicom Sakonnakhon' , 'M')

Top

คำสั่ง UPDATE

        คำสั่ง UPDATE เป็นคำสั่งที่ใช้ในการเปลี่ยนแปลงขอ้มูลในตาราง หรือเรียกว่าแก้ไขข้อมูลนั่นเอง มีรูปแบบดังนี้

        UPDATE TableName

        SET FieldName = Value , FieldName = Value, ....

        WHERE Condition

        เช่น

        UPDATE EmpTable

        SET Name = 'Paitoon Sonsomnuek' , Telephone = '01-121-9637'

        WHERE EmpID = '48010013'

Top

คำสั่ง DELETE

        คำสั่ง DELETE ใช้สำหรับลบ Record ที่เราไม่ต้องการออกจากตาราง ซึ่งมีรูปแบบดังนี้

        DELETE FROM TableName

        WHERE Condition

        เช่น

        DELETE FROM EmpTable

        WHERE EmpID = '48010013'

edit @ 11 Jun 2009 00:06:02 by Auttapong Maesincee

Comment



smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry

Tweet

ตรงเลยค่ะการบ้านวิเคราะห์ระบบ มีประโยชน์มากเลยค่ะ ขออนุญาตก็อปนะคะ อิอิ

#1 By MAN-Eater on 2009-09-10 00:53

big smile

#2 By (203.158.192.88) on 2009-09-21 20:01