มีผลิตภัณฑ์ SQL หลายประเภทที่คุณสามารถถอดแขนเสื้อออกและเริ่มต้นได้โดยไม่ต้องดูแลส่วนที่เหลือ แต่ถ้าคุณต้องการใช้ ASP และ SQL พร้อมกัน คุณอาจเวียนหัวได้
MySQL, SQL Server และ mSQL ล้วนเป็นเครื่องมือ SQL ที่ยอดเยี่ยม แต่น่าเสียดายที่คุณไม่สามารถใช้มันเพื่อสร้างคำสั่ง SQL ที่ใช้งานได้จริงในสภาพแวดล้อม ASP อย่างไรก็ตาม คุณสามารถใช้ความรู้การเข้าถึงและทักษะการเข้าถึงที่เกี่ยวข้องได้ ควบคู่ไปกับคำแนะนำและเคล็ดลับของเรา ฉันเชื่อว่าคุณจะสามารถเพิ่ม SQL ลงในเว็บเพจ ASP ของคุณได้สำเร็จ
1.คำสั่ง SELECTในโลกของ SQL การดำเนินการขั้นพื้นฐานที่สุดคือคำสั่ง SELECT เมื่อใช้ SQL โดยตรงภายใต้เครื่องมือฐานข้อมูล หลายๆ คนจะคุ้นเคยกับการดำเนินการต่อไปนี้:
เลือกอะไร
จากตารางไหน
หลักเกณฑ์อยู่ที่ไหน
การดำเนินการคำสั่งข้างต้นจะสร้างแบบสอบถามที่เก็บผลลัพธ์
ในไฟล์เพจ ASP คุณยังสามารถใช้ไวยากรณ์ทั่วไปข้างต้นได้ แต่สถานการณ์จะแตกต่างออกไปเล็กน้อย เมื่อเขียนโปรแกรมใน ASP เนื้อหาของคำสั่ง SELECT จะต้องถูกกำหนดให้กับตัวแปรเป็นสตริง:
SQL = "เลือกอะไรจากเกณฑ์ตารางไหน"
โอเค เมื่อคุณเข้าใจวิธีที่ SQL "พูด" ภายใต้ ASP แล้ว คุณสามารถทำตามวิธีการเดียวกันได้ ตราบใดที่มันตรงตามความต้องการของคุณ คุณสามารถใช้โหมดการสืบค้น SQL แบบเดิมและการสืบค้นแบบมีเงื่อนไขได้
ตัวอย่างเช่น สมมติว่าคุณมีตารางข้อมูลในฐานข้อมูลชื่อผลิตภัณฑ์ และตอนนี้คุณต้องการดึงข้อมูลระเบียนทั้งหมดในตารางนี้ จากนั้นคุณเขียนโค้ดต่อไปนี้:
SQL ="เลือก * จากผลิตภัณฑ์"
โค้ดด้านบน - ฟังก์ชันของคำสั่ง SQL คือการดึงข้อมูลทั้งหมดในตาราง - หลังจากดำเนินการแล้ว บันทึกทั้งหมดในตารางข้อมูลจะถูกเลือก อย่างไรก็ตาม หากคุณต้องการดึงข้อมูลเฉพาะคอลัมน์จากตาราง เช่น p_name จากนั้นคุณไม่สามารถใช้อักขระตัวแทน * ได้ คุณต้องพิมพ์ชื่อของคอลัมน์ที่ต้องการ รหัสจะเป็นดังนี้:
SQL ="เลือก p_name จากผลิตภัณฑ์"
หลังจากดำเนินการค้นหาข้างต้น เนื้อหาทั้งหมดของคอลัมน์ p_name ในตารางผลิตภัณฑ์จะถูกเลือก
2. ใช้ส่วนคำสั่ง WHERE เพื่อกำหนดเงื่อนไขการสืบค้นบางครั้งการดึงบันทึกฐานข้อมูลทั้งหมดอาจตรงตามความต้องการของคุณ แต่ในกรณีส่วนใหญ่ เรามักจะต้องการเพียงส่วนหนึ่งของบันทึกเท่านั้น เราควรออกแบบแบบสอบถามในกรณีนี้อย่างไร แน่นอนว่าจะต้องใช้ความคิดมากกว่านี้อีกสักหน่อย ไม่ต้องพูดถึงว่าบทความนี้จงใจไม่ต้องการให้คุณใช้ชุดบันทึกเส็งเคร็งนั้น
ตัวอย่างเช่น หากคุณวางแผนที่จะดึงข้อมูลบันทึก p_name เท่านั้น และชื่อของบันทึกเหล่านี้ต้องขึ้นต้นด้วยตัวอักษร w คุณจะใช้ส่วนคำสั่ง WHERE ต่อไปนี้:
SQL ="เลือก p_name จากผลิตภัณฑ์โดยที่ p_name เช่น 'W%'"
คำสำคัญ WHERE ตามด้วยเงื่อนไขที่ใช้ในการกรองข้อมูล ด้วยความช่วยเหลือของเงื่อนไขเหล่านี้ เฉพาะข้อมูลที่ตรงตามเกณฑ์เท่านั้นที่จะถูกสอบถาม ในตัวอย่างข้างต้น ผลลัพธ์ของการสืบค้นจะได้รับเฉพาะระเบียน p_name ที่ชื่อขึ้นต้นด้วย w
ในตัวอย่างข้างต้น ความหมายของสัญลักษณ์เปอร์เซ็นต์ (%) คือการสั่งให้คิวรีส่งคืนรายการบันทึกทั้งหมดที่ขึ้นต้นด้วยตัวอักษร w และตามด้วยข้อมูลใดๆ หรือแม้แต่ไม่มีข้อมูลเลย ดังนั้น เมื่อดำเนินการแบบสอบถามข้างต้น ทิศตะวันตกและวิลโลว์จะถูกเลือกจากตารางผลิตภัณฑ์และจัดเก็บไว้ในแบบสอบถาม
อย่างที่คุณเห็น ด้วยการออกแบบคำสั่ง SELECT อย่างระมัดระวัง คุณสามารถจำกัดจำนวนข้อมูลที่ส่งกลับในชุดระเบียน และความคิดอื่นๆ จะตอบสนองความต้องการของคุณได้เสมอ
นี่เป็นเพียงจุดเริ่มต้นของการเรียนรู้การใช้ SQL อย่างเชี่ยวชาญ เพื่อช่วยให้คุณค่อยๆ เชี่ยวชาญในการใช้คำสั่ง SELECT ที่ซับซ้อน เรามาดูคำศัพท์มาตรฐานที่สำคัญกันดีกว่า: ตัวดำเนินการเปรียบเทียบ สิ่งเหล่านี้มักใช้เมื่อคุณสร้างสตริง SELECT ของคุณเองเพื่อรับข้อมูลเฉพาะ
WHERE พื้นฐานข้อ
เมื่อเริ่มต้นสร้างส่วนคำสั่ง WHERE วิธีที่ง่ายที่สุดคือการใช้สัญลักษณ์การเปรียบเทียบมาตรฐาน ซึ่งได้แก่ <, <=, >, >=, <> และ = แน่นอนว่าคุณจะเข้าใจความหมายและผลลัพธ์เฉพาะของโค้ดต่อไปนี้ได้อย่างรวดเร็ว:
เลือก * จากผลิตภัณฑ์ WHERE p_price >= 199.95
เลือก * จากผลิตภัณฑ์ WHERE p_price <> 19.95
เลือก * จากผลิตภัณฑ์โดยที่ p_version = '4'
หมายเหตุ: คุณจะสังเกตเห็นว่าเลข 4 ในประโยคตัวอย่างสุดท้ายมีเครื่องหมายคำพูดเดี่ยวล้อมรอบ เหตุผลก็คือ '4' ในตัวอย่างนี้เป็นประเภทข้อความไม่ใช่ประเภทตัวเลข เนื่องจากคุณใส่คำสั่ง SELECT ในเครื่องหมายคำพูดเพื่อกำหนดเป็นค่าให้กับตัวแปร คุณจึงสามารถใช้เครื่องหมายคำพูดภายในคำสั่งได้เช่นกัน
ตัวดำเนินการเปรียบเทียบ
ตัวดำเนินการเปรียบเทียบจะระบุช่วงเนื้อหาของข้อมูลที่จะดึงมาจากตาราง คุณสามารถใช้เพื่อสร้างตัวกรองเพื่อจำกัดชุดระเบียนให้แคบลงเฉพาะข้อมูลที่คุณสนใจสำหรับงานที่กำหนดเท่านั้น
3. ชอบ ไม่ชอบ และระหว่างคุณได้เห็นการใช้ LIKE ในตัวอย่างข้างต้นของการลบบันทึกที่ขึ้นต้นด้วย w เพรดิเคต LIKE เป็นสัญลักษณ์ที่มีประโยชน์มาก อย่างไรก็ตาม การใช้มันอาจทำให้คุณมีข้อมูลมากเกินไปในหลาย ๆ กรณี ดังนั้นจึงเป็นการดีที่สุดที่จะใช้สมองของคุณในการคิดให้มากขึ้นเกี่ยวกับข้อมูลที่คุณต้องการรับก่อนที่จะนำไปใช้ สมมติว่าคุณต้องการแยกหมายเลข SKU 5 หลักที่ขึ้นต้นด้วย 1 และลงท้ายด้วย 5 จากนั้นคุณสามารถใช้ขีดล่าง (_) แทนสัญลักษณ์ % ได้:
SQL = "เลือก * จากผลิตภัณฑ์โดยที่ p_sku LIKE '1___5'"
ขีดล่างแสดงถึงอักขระใดๆ ดังนั้น หากคุณป้อน "1 _ _ _ 5" การค้นหาของคุณจะถูกจำกัดไว้ที่ 5 หลักที่ตรงกับรูปแบบเฉพาะ
หากคุณต้องการทำตรงกันข้าม ให้ค้นหารายการ SKU ทั้งหมดที่ไม่ตรงกับรูปแบบ "1_ _ _ 5" จากนั้นคุณเพียงแค่ต้องเพิ่ม NOT ไว้หน้า LIKE ในตัวอย่างคำสั่งในตอนนี้
ระหว่าง
สมมติว่าคุณต้องการดึงข้อมูลภายในช่วงที่กำหนด และคุณทราบจุดเริ่มต้นและจุดสิ้นสุดของช่วงล่วงหน้า คุณก็อาจใช้คำตัดสิน BETWEEN ได้เช่นกัน ตอนนี้ให้เราสมมติว่าคุณต้องการเลือกระเบียนในช่วงระหว่าง 1 ถึง 10 ในตารางที่กำหนด คุณสามารถใช้ BETWEEN ได้ดังนี้:
… ID อยู่ที่ไหนระหว่าง 1 และ 10
หรือคุณสามารถใช้คำตัดสินทางคณิตศาสตร์ที่คุณคุ้นเคยอยู่แล้ว:
…รหัสที่ไหน >= 1 และ รหัส >= 10
4. แถลงการณ์ของสหภาพคำสั่ง SQL ที่เราพูดถึงไปแล้วนั้นค่อนข้างง่าย หากสามารถสอบถามผ่านชุดระเบียนมาตรฐานได้ คำสั่งเหล่านี้ก็สามารถตอบสนองความต้องการที่ซับซ้อนกว่านี้ได้เช่นกัน อย่างไรก็ตาม ทำไมคุณถึงต้องยึดติดกับระดับพื้นฐานเพียงแค่พยายามเท่านั้น? คุณสามารถเพิ่มสัญลักษณ์อื่นๆ เช่น AND, OR และ NOT เพื่อทำหน้าที่ที่มีประสิทธิภาพยิ่งขึ้นให้สมบูรณ์
นำคำสั่ง SQL ต่อไปนี้เป็นตัวอย่าง:
SQL ="SELECT c_firstname, c_lastname, c_email จากลูกค้าโดยที่ c_email IS
ไม่เป็นโมฆะและ c_purchase = '1' หรือ c_purchase = '2' และ c_lastname LIKE
'เอ %'"
จากความรู้ปัจจุบันของคุณเกี่ยวกับ SQL ตัวอย่างข้างต้นนั้นอธิบายได้ไม่ยาก แต่ข้อความข้างต้นไม่ได้ช่วยให้คุณเห็นอย่างชัดเจนว่าข้อความสั่งแบบมีเงื่อนไขถูกรวมเข้าด้วยกันในคำสั่ง SQL เดียวอย่างไร
คำสั่งหลายบรรทัด
เมื่อคำสั่ง SQL เข้าใจยาก คุณอาจต้องการแยกย่อยคำสั่งทั้งหมดออกเป็นโค้ดหลายบรรทัด จากนั้นค่อย ๆ เพิ่มแต่ละองค์ประกอบของคำสั่งสืบค้นตามตัวแปรที่มีอยู่ และจัดเก็บไว้ในตัวแปรเดียวกัน:
SQL = "เลือก c_firstname, c_lastname, c_emailaddress, c_phone"
SQL = SQL & "จากลูกค้า"
SQL = SQL & "โดยที่ c_firstname เช่น 'A%' และ c_emailaddress ไม่เป็นโมฆะ"
SQL = SQL & " เรียงตาม c_lastname, c_firstname"
ในประโยคสุดท้าย ตัวแปร SQL จะมีคำสั่ง SELECT ที่สมบูรณ์ดังต่อไปนี้:
"เลือก c_firstname, c_lastname, c_emailaddress, c_phone จากลูกค้า
โดยที่ c_firstname เช่น 'A%' และ c_emailaddress ไม่มีลำดับ NULL โดย c_lastname
c_ชื่อ"
หลังจากที่แยกย่อยประโยคทั้งหมดดังที่แสดงไว้ข้างต้นแล้ว จะเห็นได้ชัดว่าอ่านง่ายกว่ามาก! เมื่อทำการดีบั๊ก คุณอาจต้องการพิมพ์อักขระเพิ่มอีกสองสามตัวเพื่อให้โปรแกรมอ่านได้ง่ายขึ้น แต่คุณต้องจำไว้ว่าคุณต้องเพิ่มช่องว่างก่อนที่จะปิดเครื่องหมายคำพูดหรือหลังจากเปิดเครื่องหมายคำพูด เพื่อให้แน่ใจว่าคุณจะไม่นำคำหลายคำมารวมกันเมื่อเชื่อมต่อสตริง
5. เริ่มดำเนินการ
หลังจากเรียนรู้โครงสร้างและวัตถุประสงค์ของคำสั่ง SELECT แล้ว ก็ถึงเวลาเรียนรู้วิธีใช้งาน ขึ้นอยู่กับเครื่องมือฐานข้อมูลที่คุณใช้ อาจหมายถึงการกดปุ่มที่ระบุว่า "ไป" บนหน้าเว็บ ASP คำสั่ง SQL สามารถดำเนินการได้ทันทีหรือเรียกว่าเป็นกระบวนงานที่เก็บไว้
เมื่อคุณสร้างคำสั่ง SQL แล้ว คุณยังคงต้องเข้าถึงผลลัพธ์การสืบค้น แน่นอนว่า สิ่งสำคัญที่นี่คือชุดระเบียน ASP เมื่อใช้ชุดระเบียนที่ไม่ใช่ SQL รหัสในการสร้างชุดระเบียนมักจะมีลักษณะดังนี้:
หรี่แสง objRec
ตั้ง objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open "ลูกค้า", objConn, 0, 1, 2
หากคุณคุ้นเคยกับ ASP โค้ดข้างต้นก็จะคุ้นเคยกับคุณ คุณควรรู้ว่า "ลูกค้า" หมายถึงชื่อของตารางข้อมูลในฐานข้อมูลที่คุณเปิด
เปิดชุดระเบียน
เพื่อใช้ประโยชน์จากทักษะ SQL ที่คุ้นเคยมากขึ้น คุณจะต้องปรับชุดระเบียนที่ใช้บ่อยที่สุดบนหน้าเว็บ ASP ทั่วไป:
หรี่แสง objRec
ตั้ง objRec = Server.CreateObject ("ADODB.Recordset")
objRec เปิด SQL, objConn, 0, 1, 2
การแก้ไขเดียวที่นี่คือใน objRec.Open หลังจากนั้นชื่อของตารางข้อมูลที่จะสอบถามจะถูกแทนที่ด้วยตัวแปรที่มีคำสั่ง SQL
ข้อดีประการหนึ่งของวิธีนี้คือคุณสามารถระบุประเภทเคอร์เซอร์ได้ (แสดงเป็น 0, 1, 2 ด้านบน)
ดำเนินการ SQL
คุณสามารถสร้างชุดระเบียนได้โดยดำเนินการคำสั่ง SQL ด้วยบรรทัดโค้ดที่กะทัดรัด นี่คือไวยากรณ์:
ติ่ม objRec
ตั้งค่า objRec = objConn.Execute (SQL)
ในตัวอย่างข้างต้น SQL ที่คุณเห็นคือตัวแปรที่คุณจัดเก็บคำสั่ง SQL SELECT ของคุณเอง บรรทัดโค้ดนี้ "รัน" คำสั่ง SQL (หรือสืบค้นฐานข้อมูล) เลือกข้อมูล และจัดเก็บข้อมูลไว้ในชุดระเบียน ในกรณีนี้คือตัวแปร objRec ข้อเสียเปรียบหลักของวิธีนี้คือคุณไม่สามารถเลือกประเภทของเคอร์เซอร์ที่คุณต้องการใช้ได้ ในทางตรงกันข้าม ชุดระเบียนจะถูกเปิดด้วยเคอร์เซอร์ไปข้างหน้าเสมอ
เนื่องจากเคอร์เซอร์ คุณอาจต้องการทำความคุ้นเคยกับสองวิธีในการสร้างชุดระเบียน การดำเนินการค้นหาจะช่วยประหยัดเวลาในการพิมพ์อักขระได้โดยตรง แต่คุณต้องใช้เคอร์เซอร์เริ่มต้น ซึ่งอาจประสบปัญหาที่มักจะทำงานไม่ถูกต้อง ไม่ว่าคุณจะใช้วิธีใด ความแตกต่างที่ใหญ่ที่สุดระหว่างทั้งสองก็คือว่าโค้ดนั้นกระชับหรือไม่ ไม่ว่าคุณจะได้รับฟิลด์ใด มาตรฐานของคุณคืออะไร หรือวิธีจัดเก็บข้อมูล ชุดระเบียนสไตล์ SQL จะมีขนาดเล็กกว่าชุดระเบียนมาตรฐานที่เปิดบน ASP มาก ไม่ต้องพูดถึงความเรียบง่ายในการใช้งาน ท้ายที่สุด ด้วยการกรองข้อมูล คุณจะไม่ต้องเสียเวลากับการทดสอบแบบมีเงื่อนไขและลูปที่เป็นไปได้
เขียนทดสอบ SQL
นี่เป็นเคล็ดลับ โปรแกรมเมอร์ ASP มืออาชีพหลายคนคุ้นเคยกับการ "เขียน" คำสั่ง SQL ของตนเองเมื่อทดสอบหน้าเว็บ การทำเช่นนี้สามารถช่วยให้คุณแก้ไขข้อบกพร่องโค้ดของคุณได้ เนื่องจากคุณสามารถเห็นสตริงที่ถูกส่งผ่านไปยังเซิร์ฟเวอร์เพื่อดำเนินการ และสิ่งที่คุณต้องทำคือเพิ่ม Response.WriteyourVariable เพื่อแสดงข้อมูลที่เกี่ยวข้องบนหน้าจอ คุณควรรวมข้อมูลนี้เมื่อคุณส่งคำถามที่เกี่ยวข้องกับ SQL ไปยังกลุ่มสนทนา ASP
6. แบบสอบถามการจัดเก็บข้อมูลเมื่อการสืบค้นของคุณค่อนข้างง่าย การสร้างคำสั่ง SQL ตั้งแต่เริ่มต้นทุกครั้งจะไม่ต้องใช้ความพยายามมากนัก อย่างไรก็ตาม สถานการณ์จะแตกต่างออกไปกับการสืบค้นที่ซับซ้อนทุกครั้งจะทำให้เกิดข้อผิดพลาดในการพัฒนามากมาย ดังนั้น เมื่อคุณทำให้ SQL ทำงานได้อย่างราบรื่น คุณควรบันทึกและเรียกใช้เมื่อจำเป็น ด้วยวิธีนี้ แม้แต่การสืบค้นแบบธรรมดา คุณก็ยังสามารถใช้คำสั่งการสืบค้นที่เก็บไว้ได้ตลอดเวลา
สมมติว่าคุณต้องจัดทำรายงานรายสัปดาห์ให้กับทีมของคุณ โดยชี้ให้เห็นปัญหาการสนับสนุนทางธุรกิจในปัจจุบัน จำเป็นต้องเลือกจากฐานข้อมูลของคุณ และจะต้องเลือกบันทึกตามวันที่ และจัดเรียงตามหมวดหมู่ปัญหาการสนับสนุนที่คุณนำมาใช้ ทีม. . เมื่อคุณออกแบบแบบสอบถามนี้แล้ว เหตุใดคุณจึงต้องเขียนใหม่ทุกสัปดาห์ แทนที่จะสร้างแบบสอบถามบนเพจ HTML ของคุณ คุณควรใช้เครื่องมือฐานข้อมูลเพื่อสร้างแบบสอบถามและบันทึก
จากนั้นคุณสามารถใช้แอตทริบิวต์ ActiveCommand เพื่อแทรกแบบสอบถามลงในเพจ ASP ของคุณได้ คุณอาจคิดว่ามันไม่น่าสนใจในครั้งแรกหรือสองครั้ง แต่จริงๆ แล้วมันเป็นโค้ดเพียงไม่กี่บรรทัด:
ตั้ง objSQ = Server.CreateObject ("ADODB.Command")
objSQ.ActiveConnection = "ชื่อฐานข้อมูล"
objSQ.CommandText = "storedQueryName"
objSQ.CommandType = adCmdStoredProc
ตั้งค่า objRec = objSQ.Execute
โปรดทราบว่าการใช้ adCmdStoredProc หมายความว่าคุณได้รวมไฟล์ adovbs.inc ไว้ในเพจแล้ว ไฟล์นี้กำหนดค่าคงที่การเข้าถึงที่คุณสามารถเข้าถึงได้ด้วยชื่อแทนที่จะเป็นตัวเลข เพียงรวมไฟล์ไว้ในเพจ (<!--#INCLUDE -->) จากนั้นคุณสามารถใช้ชื่อเช่น adCmdStoredProc ด้วยวิธีนี้ คุณจะเข้าใจได้ง่ายขึ้นว่าข้อความค้นหาที่เก็บไว้ข้างต้นหมายถึงอะไรเมื่อคุณเห็นข้อความค้นหานั้นในอนาคต