ป้ายกำกับ: Information_schema

Oracle: การ list tableOracle: การ list table

ในฐานะนักพัฒนาหรือ 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 ชื่อ public
  • table_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 ครับ