PlusMagi's Blog By Pitt Phunsanit Backend,Database SQL Server: ค้นหา column

SQL Server: ค้นหา column

PostgreSQL: คู่มือค้นหา Column Name และโครงสร้างตารางด้วย Information Schema

ในฐานะนักพัฒนาหรือ System Architect การทำงานกับฐานข้อมูลขนาดใหญ่โดยไม่มีเอกสารประกอบ (Schema Documentation) เป็นเรื่องที่เกิดขึ้นได้บ่อยครั้ง เมื่อคุณทราบชื่อตารางแล้ว แต่ไม่แน่ใจว่าตารางนั้นมีคอลัมน์อะไรบ้าง หรือคอลัมน์ใดเก็บข้อมูลประเภทใด การใช้คำสั่ง `SELECT *` เพียงอย่างเดียวอาจไม่เพียงพอและเสี่ยงต่อการดึงข้อมูลที่ไม่จำเป็น

ในสถานการณ์เช่นนี้ เครื่องมือที่ทรงพลังที่สุดของ PostgreSQL คือการเข้าถึงระบบ Metadata ที่เรียกว่า information_schema information_schema เปรียบเสมือนสมุดทะเบียนของฐานข้อมูลที่เก็บข้อมูลเกี่ยวกับโครงสร้างทั้งหมด ไม่ว่าจะเป็นชื่อตาราง ชื่อคอลัมน์ ประเภทข้อมูล และข้อจำกัดต่างๆ

🛠️ หลักการทำงาน: การใช้ information_schema.columns

information_schema เป็นมุมมอง (View) มาตรฐานที่ PostgreSQL สร้างขึ้นเพื่อให้นักพัฒนามองเห็นโครงสร้างของฐานข้อมูลได้อย่างเป็นระบบ โดยเฉพาะ View ที่ชื่อว่า information_schema.columns จะบรรจุรายการคอลัมน์ทั้งหมดที่อยู่ในทุกตารางของ Schema ที่กำหนด

หากคุณต้องการทราบว่าตารางชื่อ users ใน Schema public มีคอลัมน์อะไรบ้างและแต่ละคอลัมน์เก็บข้อมูลประเภทใด คุณไม่จำเป็นต้องเดา แต่ให้ Query ข้อมูลจาก View นี้โดยตรง

💡 ตัวอย่างการค้นหา Column Name เฉพาะตาราง

ตัวอย่างโค้ดด้านล่างนี้แสดงวิธีการดึงชื่อคอลัมน์ (column_name) และประเภทข้อมูล (data_type) ทั้งหมดของตารางชื่อ products ที่อยู่ใน Schema public

SQL

SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_name = 'products'
AND table_schema = 'public'
ORDER BY ordinal_position;

คำอธิบายโค้ด:

  • information_schema.columns: คือแหล่งข้อมูลที่เก็บข้อมูลคอลัมน์ทั้งหมด
  • WHERE table_name = 'products': เป็นการจำกัดขอบเขตให้ค้นหาเฉพาะตารางที่ชื่อว่า products
  • WHERE table_schema = 'public': เป็นการระบุ Schema (โดยทั่วไปคือ public) เพื่อความแม่นยำ
  • ORDER BY ordinal_position: เรียงลำดับคอลัมน์ตามลำดับที่ปรากฏในตารางจริง

🚀 การประยุกต์ใช้ในสถานการณ์จริง (Advanced Use Case)

หากคุณต้องการค้นหาว่ามีตารางใดบ้างที่มีคอลัมน์ชื่อ email อยู่ โดยไม่รู้ชื่อตารางล่วงหน้า คุณสามารถปรับ Query ให้ค้นหาจาก column_name ได้:

SQL

SELECT table_name, table_schema
FROM information_schema.columns
WHERE column_name = 'email'
LIMIT 5;

✅ บทสรุป

การทำความเข้าใจและใช้ information_schema คือทักษะสำคัญที่ Senior Developer ทุกคนควรมี มันช่วยให้คุณสามารถตรวจสอบโครงสร้างฐานข้อมูล (Schema Introspection) ได้อย่างรวดเร็วและแม่นยำ โดยไม่ต้องพึ่งพาการเดาหรือการเข้าถึงเครื่องมือภายนอก การใช้ View นี้ไม่เพียงแต่ช่วยในการ Debugging เท่านั้น แต่ยังช่วยให้คุณสามารถสร้างระบบ Monitoring หรือ Scripting ที่ต้องพึ่งพาโครงสร้างข้อมูลของฐานข้อมูลได้อย่างมีประสิทธิภาพ