ในฐานะนักพัฒนาหรือ System Architect การรู้ว่ามี Table ใดบ้างใน Database เป็นทักษะพื้นฐานที่สำคัญอย่างยิ่ง แต่บ่อยครั้งที่เราไม่ทราบว่า Table ที่ต้องการค้นหานั้นอยู่ใน Schema (พื้นที่จัดเก็บ) ใด ทำให้การเขียนคำสั่ง SQL เพื่อเรียกดูข้อมูลทำได้ยาก
บทความนี้จะพาคุณไปเรียนรู้วิธีการใช้ PostgreSQL เพื่อ List รายชื่อ Table ทั้งหมดใน Database โดยไม่จำเป็นต้องทราบชื่อ Schema ล่วงหน้า ด้วยการใช้มาตรฐานที่เรียกว่า information_schema ซึ่งเป็นวิธีที่ได้มาตรฐานและเป็นที่ยอมรับในระดับสากล
ทำความเข้าใจกับ Information Schema
information_schema คือชุดของ View (มุมมอง) ที่ PostgreSQL สร้างขึ้นมาโดยอัตโนมัติ เพื่อให้ผู้ใช้สามารถตรวจสอบ Metadata (ข้อมูลเกี่ยวกับข้อมูล) ของ Database ได้อย่างง่ายดาย แทนที่เราจะต้องจำตารางระบบที่ซับซ้อนอย่าง pg_catalog เราสามารถใช้ information_schema ได้เลย
1. ดู Table ทั้งหมดใน Schema ที่ระบุ (Recommended)
หากคุณทราบว่า Table ที่ต้องการอยู่ใน Schema ชื่อใด (เช่น public หรือ app_schema) นี่คือวิธีที่ตรงและมีประสิทธิภาพที่สุด
SQL
SQL
SELECT table_name, table_schema, table_type </code>
<code>FROM information_schema.tables</code>
<code>WHERE table_schema = 'public' </code>
<code>AND table_type = 'BASE TABLE';
คำอธิบาย:
table_schema = 'public': ใช้กรองให้แสดงเฉพาะ Table ที่อยู่ใน Schema ชื่อpublictable_type = 'BASE TABLE': ใช้กรองให้แสดงเฉพาะ Table จริง ๆ (ไม่รวม View หรือ Sequence)
2. ดู Table ทั้งหมดใน Database (Cross-Schema Search)
หากคุณต้องการค้นหา Table ทั้งหมดที่ระบบอนุญาตให้ผู้ใช้ปัจจุบันเห็น ไม่ว่าจะอยู่ใน Schema ใดก็ตาม คุณสามารถลบเงื่อนไข table_schema ออกไปได้ แต่ควรระมัดระวังเนื่องจากผลลัพธ์ที่ได้อาจมีจำนวนมาก
SQL
SQL
SELECT table_name, table_schema, table_type </code>
<code>FROM information_schema.tables</code>
<code>WHERE table_type = 'BASE TABLE' </code>
<code>AND table_schema NOT IN ('pg_catalog', 'information_schema');
💡 เคล็ดลับจาก Senior Architect: การเพิ่มเงื่อนไข AND table_schema NOT IN (...) มีความสำคัญอย่างยิ่ง เพราะจะช่วยกรองตารางระบบ (System Tables) ออกไป ทำให้ผลลัพธ์ที่ได้เป็นเฉพาะ Table ที่ผู้ใช้งานสร้างขึ้นมาเท่านั้น
สรุปและแนวทางการใช้งาน
การใช้ information_schema เป็นวิธีที่ได้มาตรฐานและมีความยืดหยุ่นสูงในการจัดการ Metadata ของ PostgreSQL ไม่ว่าคุณจะใช้คำสั่งนี้เพื่อสร้าง Script อัตโนมัติ, เพื่อทำ Data Audit, หรือเพียงแค่ต้องการตรวจสอบโครงสร้างฐานข้อมูล การใช้ View นี้จะช่วยประหยัดเวลาและลดความผิดพลาดในการเขียนโค้ดได้อย่างมาก
เมื่อคุณเข้าใจหลักการนี้แล้ว คุณก็จะสามารถเขียนระบบที่สามารถค้นหาและจัดการกับ Table ต่างๆ ได้อย่างเป็นระบบและมีประสิทธิภาพสูงสุดในฐานะ System Specialist ครับ