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 45. System Catalogs

Table of Contents
45.1. Overview
45.2. pg_aggregate
45.3. pg_am
45.4. pg_amop
45.5. pg_amproc
45.6. pg_attrdef
45.7. pg_attribute
45.8. pg_authid
45.9. pg_auth_members
45.10. pg_cast
45.11. pg_class
45.12. pg_constraint
45.13. pg_conversion
45.14. pg_database
45.15. pg_db_role_setting
45.16. pg_default_acl
45.17. pg_depend
45.18. pg_description
45.19. pg_enum
45.20. pg_foreign_data_wrapper
45.21. pg_foreign_server
45.22. pg_index
45.23. pg_inherits
45.24. pg_language
45.25. pg_largeobject
45.26. pg_largeobject_metadata
45.27. pg_namespace
45.28. pg_opclass
45.29. pg_operator
45.30. pg_opfamily
45.31. pg_pltemplate
45.32. pg_proc
45.33. pg_rewrite
45.34. pg_shdepend
45.35. pg_shdescription
45.36. pg_statistic
45.37. pg_tablespace
45.38. pg_trigger
45.39. pg_ts_config
45.40. pg_ts_config_map
45.41. pg_ts_dict
45.42. pg_ts_parser
45.43. pg_ts_template
45.44. pg_type
45.45. pg_user_mapping
45.46. System Views
45.47. pg_cursors
45.48. pg_group
45.49. pg_indexes
45.50. pg_locks
45.51. pg_prepared_statements
45.52. pg_prepared_xacts
45.53. pg_roles
45.54. pg_rules
45.55. pg_settings
45.56. pg_shadow
45.57. pg_stats
45.58. pg_tables
45.59. pg_timezone_abbrevs
45.60. pg_timezone_names
45.61. pg_user
45.62. pg_user_mappings
45.63. 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.