September 26, 2024: PostgreSQL 17 Released!
Supported Versions: Current (17) / 16 / 15 / 14 / 13 / 12
Development Versions: devel
Unsupported versions: 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
This documentation is for an unsupported version of PostgreSQL.
You may want to view the same page for the current version, or one of the other supported versions listed above instead.

Chapter 47. System Catalogs

Table of Contents
47.1. Overview
47.2. pg_aggregate
47.3. pg_am
47.4. pg_amop
47.5. pg_amproc
47.6. pg_attrdef
47.7. pg_attribute
47.8. pg_authid
47.9. pg_auth_members
47.10. pg_cast
47.11. pg_class
47.12. pg_collation
47.13. pg_constraint
47.14. pg_conversion
47.15. pg_database
47.16. pg_db_role_setting
47.17. pg_default_acl
47.18. pg_depend
47.19. pg_description
47.20. pg_enum
47.21. pg_event_trigger
47.22. pg_extension
47.23. pg_foreign_data_wrapper
47.24. pg_foreign_server
47.25. pg_foreign_table
47.26. pg_index
47.27. pg_inherits
47.28. pg_language
47.29. pg_largeobject
47.30. pg_largeobject_metadata
47.31. pg_namespace
47.32. pg_opclass
47.33. pg_operator
47.34. pg_opfamily
47.35. pg_pltemplate
47.36. pg_proc
47.37. pg_range
47.38. pg_rewrite
47.39. pg_seclabel
47.40. pg_shdepend
47.41. pg_shdescription
47.42. pg_shseclabel
47.43. pg_statistic
47.44. pg_tablespace
47.45. pg_trigger
47.46. pg_ts_config
47.47. pg_ts_config_map
47.48. pg_ts_dict
47.49. pg_ts_parser
47.50. pg_ts_template
47.51. pg_type
47.52. pg_user_mapping
47.53. System Views
47.54. pg_available_extensions
47.55. pg_available_extension_versions
47.56. pg_cursors
47.57. pg_group
47.58. pg_indexes
47.59. pg_locks
47.60. pg_matviews
47.61. pg_prepared_statements
47.62. pg_prepared_xacts
47.63. pg_roles
47.64. pg_rules
47.65. pg_seclabels
47.66. pg_settings
47.67. pg_shadow
47.68. pg_stats
47.69. pg_tables
47.70. pg_timezone_abbrevs
47.71. pg_timezone_names
47.72. pg_user
47.73. pg_user_mappings
47.74. pg_views

The system catalogs are the place where a relational database management system stores schema metadata, such as information about tables and columns, and internal bookkeeping information. PostgreSQL's system catalogs are regular tables. You can drop and recreate the tables, add columns, insert and update values, and severely mess up your system that way. Normally, one should not change the system catalogs by hand, there are always SQL commands to do that. (For example, CREATE DATABASE inserts a row into the pg_database catalog — and actually creates the database on disk.) There are some exceptions for particularly esoteric operations, such as adding index access methods.