ป้ายกำกับ: Information Schema

Oracle: list SchemaOracle: list Schema

ในโลกของการจัดการฐานข้อมูล (Database Management) การทำความเข้าใจโครงสร้างของ Schema เป็นสิ่งสำคัญอย่างยิ่ง เพราะ Schema ทำหน้าที่เป็นคอนเทนเนอร์ (Container) ที่ใช้จัดกลุ่ม Object ต่างๆ เช่น ตาราง (Tables), มุมมอง (Views), และฟังก์ชัน (Functions) เพื่อความเป็นระเบียบและป้องกันการชนกันของชื่อ (Name Collision)

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

Schema คืออะไรใน PostgreSQL?

ใน PostgreSQL, Schema คือพื้นที่ทางตรรกะ (Logical Namespace) ที่ใช้ในการจัดระเบียบ Object ต่างๆ ภายในฐานข้อมูล (Database) โดยทั่วไปแล้ว ฐานข้อมูลแต่ละแห่งจะมี Schema เริ่มต้นอย่างน้อยคือ public และ Schema ที่ถูกสร้างขึ้นโดยผู้ใช้แต่ละคน (User/Role) ก็จะถือเป็น Schema หนึ่งด้วย

วิธี List Schema ทั้งหมดใน PostgreSQL

มีหลายวิธีในการดึงรายชื่อ Schema ออกมา ซึ่งแต่ละวิธีก็เหมาะกับสถานการณ์ที่แตกต่างกัน โดยเราจะแนะนำ 3 วิธีหลักที่ใช้กันบ่อยที่สุด:

1. การใช้คำสั่ง Meta-Command (สำหรับ psql Client)

หากคุณกำลังใช้งาน Command Line Interface (CLI) ของ PostgreSQL คือ psql วิธีที่ง่ายและเร็วที่สุดคือการใช้ Meta-Command §dn (หรือ +d) ซึ่งเป็นคำสั่งเฉพาะของ Client ไม่ใช่ SQL มาตรฐาน:

SQL

SQL

\dn

คำสั่งนี้จะแสดงรายการ Schema ทั้งหมดที่มีอยู่ในฐานข้อมูลที่คุณเชื่อมต่ออยู่

2. การ Query ผ่าน Information Schema (SQL มาตรฐาน)

สำหรับผู้ที่ต้องการเขียนโค้ดเพื่อนำไปใช้ในแอปพลิเคชัน หรือต้องการผลลัพธ์ที่สามารถนำไปประมวลผลต่อได้ ควรใช้การ Query จาก information_schema ซึ่งเป็นมาตรฐาน SQL ที่ใช้ได้กับหลายระบบฐานข้อมูล:

SQL

SQL

SELECT schema_name FROM information_schema.schemata ORDER BY schema_name;

คำสั่งนี้จะดึงชื่อ Schema ทั้งหมดที่ระบบรู้จักออกมาเป็นรายการ

3. การดู Schema ที่ผู้ใช้เป็นเจ้าของ (Owner)

หากคุณต้องการทราบว่า Schema ใดบ้างที่คุณมีสิทธิ์ในการจัดการหรือเป็นเจ้าของ (Owner) คุณสามารถ Query จาก Catalog Table pg_namespace:

SQL

SQL

SELECT nspname FROM pg_namespace WHERE nspowner = current_user;

การใช้ current_user ในเงื่อนไขนี้จะช่วยให้เราจำกัดผลลัพธ์ให้เหลือเฉพาะ Schema ที่ผู้ใช้ปัจจุบันมีสิทธิ์ควบคุมได้อย่างชัดเจน

บทสรุปและข้อควรจำ

การ List Schema ใน PostgreSQL สามารถทำได้หลายวิธี โดยการใช้ §dn ใน psql client เป็นวิธีที่เร็วที่สุดสำหรับการตรวจสอบด้วยตนเอง ส่วนการใช้ information_schema เป็นวิธีที่แนะนำสำหรับการเขียนโค้ดเพื่อการพัฒนาแอปพลิเคชัน เนื่องจากเป็นไปตามมาตรฐาน SQL และมีความยืดหยุ่นในการกรองข้อมูลมากกว่า

การทราบ Schema ไม่ได้หมายถึงการเข้าถึงข้อมูลเสมอไป แต่เป็นการทราบโครงสร้างการจัดระเบียบข้อมูล ซึ่งเป็นก้าวแรกที่สำคัญในการออกแบบและจัดการฐานข้อมูลขนาดใหญ่ให้มีประสิทธิภาพสูงสุด