Thaimisc.com : PHP กับฐานข้อมูล MySQL (10)
ThaiMisc.Com : Free Webboard | Free GuestBook | Free Poll | Free Ecard Server | Free Java Chat Room | Advertising | Contact Us | Colocation | Web Hosting | เปิดร้านค้าฟรี


Category : Php Developer Print Article Only Print Aticle With Comment
PHP กับฐานข้อมูล MySQL (10)
เขียนโดย เดอะกาฝากไดอารี่ (ball@bbznet.com) , 13-05-2004
เซ็งเลยครับ เมื่อวานซืน ฐานข้อมูลของโฮสต์ที่ผมไปเป็นกาฝากใช้งานอยู่ เกิดเจ๊ง เจ๊งเฉพาะของผมด้วยนะ แถมแค่ตารางเดียวอีกต่างหาก แต่เป็นตารางที่สำคัญมากๆ เพราะมันเก็บข้อมูลไดอารี่หนักกบาลที่บรรจงเขียนมาตลอด... ดีที่มีแบ็กอัพเอาไว้ แต่ล่าสุดมันก็ของเมื่อสามเดือนเศษๆ ที่แล้ว เลยทำให้ไดอารี่ล้ำค่าของผม หายไปร้อยกว่าตอน เหอๆ... นี่เป็นอุทาหรณ์อันดีนะครับ สำหรับผู้ที่ขี้เกียจสำรองข้อมูล ระวังจะเจอแบบผม

ในตอนที่แล้วเราคลิก ลงมือ ไปแล้วใช่ไหมครับ... งั้นท่านผู้อ่านก็น่าจะได้เห็นหน้าจอดังต่อไปนี้แล้ว

สิ่งที่เราได้มาก็คือ คำค้น SQL หรือ SQL Statement ที่ใช้ในการแทรกระเบียนเข้าตารางฐานข้อมูลนั่นเอง... และหากมองให้ดีๆ อีกนิด เราจะเห็นว่าคำว่า เปิดดู นั้นจากเดิมสีดำ ไม่สามารถคลิกได้ คราวนี้สามารถคลิกได้แล้วนะครับ ลองคลิกเข้าไปดูหน่อย เราก็จะเห็นหน้าจอตามรูปข้างล่างนี่ครับ

มันจะเป็นการแสดงข้อมูลที่อยู่ในตาราง employee ทั้งหมดออกมา ซึ่งตอนนี้เราก็มีเพียงรายชื่อของคนคนเดียวเท่านั้น

ตอนนี้เราจะยังไม่สนรายละเอียดของหน้าจอนี้ครับ... แต่ว่าเราจะสนใจ SQL Statement ที่เราได้เมื่อครู่ตะหาก

INSERT INTO employee (name, position, department, salary) VALUES ('Meeboon Boonlonluer', 'Staff', 'Accounting', '8500')

คือ SQL Statement ที่เราได้มาครับ ซึ่งก็คือ SQL Statement ในการแทรกระเบียนเข้าสู่ตารางฐานข้อมูล

รูปแบบของคำสั่งมีดังนี้ครับ

INSERT INTO ชื่อตาราง (ฟิลด์ที่1, ฟิลด์ที่2,... , ฟิลด์ที่n) VALUES ('ค่าที่1', 'ค่าที่2',... , 'ค่าที่n')

เห็นไหมครับ ไม่ยากไม่เย็นอะไรเลยใช่ไหมครับ...

ตอนที่เราเปิดเข้ามาดูระเบียนที่เพิ่งจะถูกแทรกเข้าไป เราก็ได้ SQL Statement มาอีกอัน นั่นก็คือ เอาไว้สำหรับเรียกดูข้อมูล (query หรือ สืบค้น นั่นเอง) ภายในตาราง ซึ่งเราเห็นแบบนี้ครับ

SELECT * FROM employee LIMIT 0, 30

ซึ่งมีความหมายดังนี้ครับ

ดึงข้อมูลของทุกฟิลด์มาแสดง โดยดึงจากตารางชื่อ employee โดยจำกัดแค่ 30 ระเบียนแรก ที่สืบค้นมาได้ และเริ่มจากระเบียนที่ 0

รูปแบบของคำสั่ง SELECT นั้น ในภาษา SQL มีความซับซ้อนมากๆ ครับ ถ้าจะให้ผมสอนตอนนี้ทั้งหมด ก็คงทำไม่ได้ เพราะผมเองก็ยังเข้าใจไม่ถ่องแท้ (ฮา) และอีกถ้าจะสอนให้เท่าที่ผมทราบ มันก็จะยาก และอาจทำให้ท่านผู้อ่านสับสนอีกนั่นแหละ (ลองคิดถึงการสืบค้นจากตารางมากกว่า 2 ตารางพร้อมๆ กัน โดยมีเงื่อนไขต่างๆ มากมาย... แค่คิดก็ปวดหัวแล้ว)

ดังนั้นเรามาดูรูปแบบการใช้งานคำสั่ง SELECT แบบง่ายๆ ก่อนครับ ซึ่งก็มีดังนี้

SELECT * FROM ชื่อตาราง [WHERE เงื่อนไขต่างๆ] [ORDER BY ฟิลด์ [DESC/ASC]] [LIMIT ระเบียนแรกที่ต้องการให้แสดง, จำนวนระเบียนที่ต้องการให้แสดง]

แค่นี้ก็ปวดหัวแล้วใช่ไหมครับ... รูปแบบเต็มๆ นี่ยิ่งกว่านี้อีกนะครับ เหอๆ เพียงแต่ตอนนี้ผมเอามาเล่าสู่กันอ่านแค่นี้ก่อน

ความหมายของรูปแบบข้างต้นก็มีดังนี้ครับ (ขออธิบายเป็นส่วนๆ)

  • SELECT * : มีความหมายว่า เลือกที่จะแสดงข้อมูลทุกฟิลด์ (ตัว * มีความหมายแทนทุกฟิลด์นั่นเอง) แต่หากเราไม่ต้องการสิ้นเปลืองทรัพยากรในการเก็บข้อมูลที่เราไม่ได้อยากเลือกออกมา เราก็แค่กำหนดชื่อฟิลด์ลงไปแทนครับ เช่น SELECT field1, field2 เป็นต้น เท่านี้ก็จะเป็นการสืบค้นเฉพาะข้อมูลที่อยู่ในฟิลด์ชื่อ field1 และ field2 ออกมา
  • FROM ชื่อตาราง : ก็คือ เราจะสืบค้นข้อมูลจากตารางอะไรบ้าง... เราสามารถเลือกสืบค้นจากข้อมูลได้มากกว่า 1 ตารางนะครับ แต่จะไม่กล่าวถึงในตอนนี้ เพราะเดี๋ยวมันจะมั่วไป
  • WHERE เงื่อนไขต่างๆ : อันนี้จะเป็นการกำหนดเงื่อนไขในการสืบค้นครับ เช่น หากผมใส่ว่า WHERE salary < 2000 ก็แสดงว่า ผมต้องการค้นหาระเบียนที่มีเงื่อนไขว่า ข้อมูลในฟิลด์ชื่อ salary มีค่าน้อยกว่า 2000 นั่นเอง เป็นต้น (ไว้ดูตัวอย่างต่อไป ตอนที่เราเพิ่มข้อมูลลงในฐานข้อมูลไปแล้วเยอะๆ)... หากไม่กำหนดเงื่อนไข แสดงว่าเราจะแสดงข้อมูลทั้งหมด
  • ORDER BY ฟิลด์ [DESC/ASC] : อันนี้มีไว้ เพื่อจัดเรียงข้อมูลครับ โดยสามารถเลือกได้ว่าจะเรียงข้อมูลโดยดูจากฟิลด์ไหน เช่น ถ้าบอกว่า ORDER BY salary DESC ก็หมายความว่าเรียงข้อมูล โดยเรียงจากผู้ที่มีข้อมูลในฟิลด์ salary จากค่ามาก ไปหาค่าน้อย แต่ถ้าบอกว่า ORDER BY salary ASC ก็จะหมายความว่า เรียงจากผู้ที่มีข้อมูลในฟิลด์ salary จากค่าน้อย ไปหาค่ามาก (แต่จริงๆ หากไม่บอกว่าเป็น DESC หรือ ASC แล้ว มันก็จะติ๊ต่างว่าเราเลือกเป็น ASC ครับ)... เราสามารถเลือกที่จะเรียงข้อมูลโดยดูจากหลายๆ ฟิลด์รวมๆ กันได้ เช่น ORDER BY id, salary ซึ่งก็จะมีความหมายว่า เรียงตาม id ก่อน แล้วค่อยมาเรียงตาม salary อีกทีนั่นเอง (จะเห็นภาพชัดเจนกว่านี้ตอนได้ลองกับตัวอย่างจริงๆ) หากไม่กำหนด มันก็จะอิงฟิลด์แรกเป็นหลัก หรือไม่ก็ ฟิลด์ใดๆ ที่ถูกกำหนดเป็น primary key (คีย์หลัก) ครับ
  • LIMIT ระเบียนแรกที่ต้องการให้แสดง, จำนวนระเบียนที่ต้องการให้แสดง : อันนี้คงไม่ต้องอธิบายอะไรมาก เพราะมันคือการกำหนดจำนวนระเบียนที่ต้องการแสดงออกมาหลังสืบค้น หากเราใส่เป็น LIMIT 0, 2 ก็หมายความต้องการให้แสดงแค่ 2 ระเบียน โดยเริ่มจากระเบียนที่ 0 ซึ่งเราก็จะได้ระเบียนที่ 0 และ 1 ออกมา... หากเราบอกเป็น LIMIT 4, 3 เราก็จะได้ระเบียนที่ 4, 5 และ 6 ออกมาครับ (เริ่มจากระเบียนที่ 4 แสดงออกมา 3 ระเบียนนั่นเอง)

    สังเกตนิดนึงตรงคำว่า ระเบียนที่ นะครับ มันไม่ได้หมายความว่าจะแสดงโดยดูจาก id หรือฟิลด์ใดๆ เป็นหลัก แต่จะดูว่าเวลาที่ทำการ query ตามเงื่อนไขมาแล้ว ระเบียนใดมาเป็นระเบียบแรกสุด ก็จะถือว่าเป็นระเบียนที่ 0 ไปครับ (ตัวอย่างต่อๆ ไป อาจจะทำให้เข้าใจได้มากกว่านี้)

(ติดตามตอนต่อไป)

<- Back | Next ->

ThaiMisc.Com : Free Webboard | Free GuestBook | Free Poll | Free Ecard Server | Free Java Chat Room | Advertising | Contact Us
Copyright 1999-2006 Thailand Miscellaneous. Allrights reserved. webmaster@thaimisc.com