Contact
Line : comsiam
Contact
Line : comsiam

Claude ช่วยร่าง SQL อธิบายคำสั่ง และตรวจสอบเงื่อนไขเบื้องต้นได้ แต่ก่อนรันกับฐานข้อมูลจริง ควรตรวจว่าคำสั่งตรงกับโครงสร้างตารางและระบบฐานข้อมูลที่ใช้อยู่หรือไม่ ผู้ใช้ ComSiam ควรเริ่มด้วยการส่ง schema ตัวอย่างที่ไม่มีข้อมูลลับ ระบุเป้าหมาย และขอให้ Claude อธิบายผลกระทบของคำสั่งก่อนนำไปรัน
SQL ของแต่ละระบบอาจมีรูปแบบต่างกัน เช่น MySQL, PostgreSQL และ SQL Server จึงควรระบุระบบและเวอร์ชันเมื่อทราบ โดยเฉพาะคำสั่งที่ใช้ฟังก์ชันเฉพาะหรือแก้ไขข้อมูล
① ระบบฐานข้อมูล — เช่น MySQL หรือ PostgreSQL
② โครงสร้างตาราง — ชื่อตาราง คอลัมน์ ชนิดข้อมูล และความสัมพันธ์ที่เกี่ยวข้อง
③ เป้าหมายของคำสั่ง — เช่น ต้องการค้นหา สรุป เพิ่ม หรือแก้ไขข้อมูล
④ เงื่อนไขและตัวอย่างผลลัพธ์ — ระบุแถวที่ต้องการและคอลัมน์ที่อยากได้
⑤ ข้อจำกัด — เช่น ห้ามแก้ไขข้อมูล หรือให้แสดงเฉพาะคำสั่งอ่านข้อมูล
⑥ ข้อมูลตัวอย่างที่ไม่ใช่ข้อมูลจริง — ใช้ตรวจแนวคิดโดยไม่เปิดเผยข้อมูลส่วนตัว
ไม่ควรส่งรหัสผ่าน ข้อมูลลูกค้า หรือข้อมูลสำคัญของฐานข้อมูลให้ Claude หากต้องยกตัวอย่าง ให้ใช้ schema และข้อมูลสมมติแทน
ช่วยเขียน SQL สำหรับ MySQL [ระบุเวอร์ชันถ้าทราบ]
เป้าหมาย:
นับจำนวนสินค้าแยกตามหมวดหมู่ เฉพาะสินค้าที่เปิดใช้งาน
เรียงหมวดหมู่ที่มีสินค้ามากที่สุดไว้ก่อน
โครงสร้างตาราง:
products
- id: จำนวนเต็ม
- category: ข้อความ
- price: ตัวเลข
- is_active: ค่าระบุสถานะสินค้า
ข้อกำหนด:
- ใช้คำสั่งอ่านข้อมูลเท่านั้น
- แสดงชื่อหมวดหมู่และจำนวนสินค้า
- อธิบายการทำงานของแต่ละส่วน
- ระบุข้อสมมติที่ใช้
- อย่าแต่งชื่อคอลัมน์ที่ไม่มีใน schema
ตัวอย่าง SQL ที่อาจได้:
SELECT
category,
COUNT(*) AS product_count
FROM products
WHERE is_active = 1
GROUP BY category
ORDER BY product_count DESC;
คำสั่งนี้เลือกหมวดหมู่ นับจำนวนแถวในแต่ละหมวด เลือกเฉพาะสินค้าที่เปิดใช้งาน จัดกลุ่มตามหมวดหมู่ และเรียงตามจำนวนจากมากไปน้อย ก่อนใช้จริงให้ตรวจว่าชื่อตารางและชนิดข้อมูลตรงกับฐานข้อมูลของคุณ
① วางคำสั่ง SQL และบอกระบบฐานข้อมูลที่ใช้
② แนบ schema เฉพาะตารางที่เกี่ยวข้อง
③ อธิบายว่าคำสั่งควรคืนผลลัพธ์หรือเปลี่ยนข้อมูลอย่างไร
④ ขอให้ตรวจเงื่อนไข JOIN, WHERE, GROUP BY และการจัดการค่าว่างตามที่เกี่ยวข้อง
⑤ ขอให้แยกข้อผิดพลาดที่ยืนยันได้ออกจากข้อสมมติ
⑥ หากคำสั่งเปลี่ยนข้อมูล ให้ขอให้ Claude อธิบายจำนวนแถวและผลกระทบก่อน
ตัวอย่าง Prompt สำหรับตรวจคำสั่ง:
ช่วยตรวจ SQL นี้สำหรับ PostgreSQL
เป้าหมาย:
[อธิบายผลลัพธ์ที่ต้องการ]
Schema ที่เกี่ยวข้อง:
[วางโครงสร้างตารางที่ไม่มีข้อมูลลับ]
คำสั่ง:
[วาง SQL]
กรุณาตรวจ:
- คำสั่งตรงกับ schema หรือไม่
- เงื่อนไข WHERE และ JOIN ตรงกับเป้าหมายหรือไม่
- มีกรณีที่อาจได้ผลลัพธ์ผิดหรือไม่
- ถ้าคำสั่งแก้ไขข้อมูล ให้บอกผลกระทบและวิธีตรวจสอบก่อนรัน
อย่าแก้ไขหรือรันคำสั่ง ให้แสดงการวิเคราะห์ก่อน
WHERE ในคำสั่ง UPDATE และ DELETEเงื่อนไข WHERE กำหนดว่าแถวใดจะถูกแก้ไขหรือลบ หากคำสั่ง DELETE ไม่มี WHERE อาจลบทุกแถวในตารางได้ เอกสาร PostgreSQL ระบุชัดว่าคำสั่ง DELETE ที่ไม่มีเงื่อนไขจะลบแถวทั้งหมดในตารางนั้น
ก่อนลบหรือแก้ข้อมูล ควรใช้เงื่อนไขเดียวกันกับ SELECT เพื่อตรวจแถวเป้าหมายและจำนวนรายการก่อน หากยังไม่แน่ใจ อย่ารันคำสั่งกับฐานข้อมูลจริง
ถ้าสร้าง SQL ในโปรแกรมจากค่าที่ผู้ใช้กรอก ควรขอให้ Claude ใช้ parameterized query หรือ prepared statement ตามไลบรารีที่เชื่อมต่อฐานข้อมูล ไม่ควรนำค่าจากผู้ใช้มาต่อเป็นข้อความ SQL โดยตรง เพราะอาจเสี่ยงต่อ SQL injection วิธีใช้ placeholder แตกต่างกันตามไดรเวอร์ จึงต้องระบุภาษาที่ใช้และไลบรารีด้วย
Transaction ช่วยจัดกลุ่มการเปลี่ยนแปลง เพื่อให้ยืนยันหรือย้อนกลับได้ในระบบที่รองรับและตั้งค่าเหมาะสม แต่รายละเอียดการทำงานขึ้นอยู่กับฐานข้อมูลและเครื่องมือที่ใช้ เอกสาร PostgreSQL อธิบายการใช้ BEGIN, COMMIT และ ROLLBACK สำหรับควบคุม transaction ควรตรวจเอกสารของระบบจริงก่อนใช้กับงานสำคัญ
หากกำลังตรวจหรือทดลอง query ควรใช้บัญชีที่มีสิทธิ์อ่านข้อมูลเท่าที่จำเป็น และหลีกเลี่ยงการใช้บัญชีผู้ดูแลระบบกับคำสั่งที่ยังไม่ได้ตรวจสอบ
① ตรวจชื่อฐานข้อมูล ตาราง และคอลัมน์ให้ตรงกับ schema
② อ่านคำสั่งและเงื่อนไขทุกส่วนด้วยตนเอง
③ เริ่มจากคำสั่งอ่านข้อมูลหรือข้อมูลทดสอบ
④ ตรวจจำนวนแถวที่ตรงเงื่อนไขก่อนใช้ UPDATE หรือ DELETE
⑤ ทดลองในฐานข้อมูลทดสอบหรือสำเนาข้อมูลก่อน
⑥ สำรองข้อมูลตามกระบวนการของระบบก่อนการเปลี่ยนแปลงสำคัญ
⑦ ตรวจผลหลังรันและบันทึกสิ่งที่เปลี่ยนแปลง
Claude ช่วยร่าง SQL ได้หลายระบบ แต่ไวยากรณ์ ฟังก์ชัน และรายละเอียดอาจต่างกัน ควรระบุระบบฐานข้อมูลและเวอร์ชันเพื่อให้คำตอบตรงกับสภาพแวดล้อม
ควรหลีกเลี่ยงข้อมูลส่วนบุคคล ข้อมูลลูกค้า รหัสผ่าน และข้อมูลลับ ให้ส่งเฉพาะ schema หรือข้อมูลตัวอย่างที่ลบรายละเอียดระบุตัวบุคคลแล้ว
ไม่ควรรันทันที ควรตรวจ schema เงื่อนไข และผลกระทบก่อน โดยเฉพาะคำสั่ง UPDATE, DELETE, DROP หรือคำสั่งที่เปลี่ยนโครงสร้างฐานข้อมูล
แบ่งส่งตามตารางหรือส่วนของคำสั่ง ระบุเป้าหมายและผลลัพธ์ที่คาดหวัง แล้วขอให้ Claude อธิบายแต่ละส่วนและบอกสมมติฐาน อย่าส่งข้อมูลลับหรือรายละเอียดระบบที่ไม่จำเป็น
Claude ช่วยร่างและตรวจ SQL ได้ดีขึ้นเมื่อทราบระบบฐานข้อมูล schema เป้าหมาย และผลลัพธ์ที่ต้องการ ก่อนรันคำสั่งจริงให้ตรวจ WHERE สิทธิ์ และผลกระทบเสมอ คำสั่งที่เปลี่ยนหรือลบข้อมูลควรทดสอบในสภาพแวดล้อมปลอดภัยก่อน ผู้อ่าน ComSiam สามารถใช้ Prompt ในบทความนี้เป็นจุดเริ่มต้น แล้วปรับตามฐานข้อมูลของตนเอง