PostgreSQL的视图pg_namespace
基础信息
OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo)
DB版本:16.2
pg软件目录:/home/pg16/soft
pg数据目录:/home/pg16/data
端口:5777
在 PostgreSQL 中,pg_namespace
是一个系统表,用于存储所有命名空间(schema)的相关信息。命名空间在 PostgreSQL 中用于组织数据库对象,如表、视图、函数等,以避免名称冲突。
pg_namespace
表结构
以下是 pg_namespace
表的主要字段及其含义:
- oid:对象标识符,这是
pg_namespace
表中每行的唯一标识符。 - nspname:命名空间的名称。
- nspowner:拥有该命名空间的角色(用户)的 OID。
- nspacl:命名空间的访问控制列表(ACL,Access Control List),用于定义哪些用户或组具有哪些权限。
以下是 pg_namespace
表结构的查询示例:
white=# \d+ pg_namespace;
Table "pg_catalog.pg_namespace"
Column | Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description
----------+-----------+-----------+----------+---------+----------+-------------+--------------+-------------
oid | oid | | not null | | plain | | |
nspname | name | | not null | | plain | | |
nspowner | oid | | not null | | plain | | |
nspacl | aclitem[] | | | | extended | | |
Indexes:
"pg_namespace_oid_index" PRIMARY KEY, btree (oid)
"pg_namespace_nspname_index" UNIQUE CONSTRAINT, btree (nspname)
Access method: heap
white=#
查询示例
列出所有命名空间(schema)
要查看数据库中所有的命名空间,可以使用以下查询:
white=# select * from pg_namespace;
oid | nspname | nspowner | nspacl
-------+--------------------+----------+---------------------------------------------------------------
99 | pg_toast | 10 |
11 | pg_catalog | 10 | {postgres=UC/postgres,=U/postgres}
2200 | public | 6171 | {pg_database_owner=UC/pg_database_owner,=U/pg_database_owner}
13918 | information_schema | 10 | {postgres=UC/postgres,=U/postgres}
16506 | yewu1 | 10 |
16507 | yewu2 | 10 |
16727 | repack | 10 |
17008 | pg_temp_3 | 10 |
17009 | pg_toast_temp_3 | 10 |
(9 rows)
此查询会返回所有命名空间的名称。
在输出中,nspacl
列显示每个命名空间的 ACL。解释权限:
U
:USAGE 权限,允许访问命名空间中的对象,但不允许创建新对象。C
:CREATE 权限,允许在命名空间中创建新对象。
小结
pg_namespace
系统表在 PostgreSQL 中用于管理命名空(schema),它包含所有命名空间的相关信息,如名称、所有者和权限。通过查询 pg_namespace
表,可以检索和管理数据库中命名空间的详细信息。理解和使用这个表,对于数据库的组织和权限管理非常重要。
谨记:心存敬畏,行有所止。
标签:10,PostgreSQL,postgres,oid,namespace,视图,pg,命名 From: https://blog.csdn.net/lee_vincent1/article/details/139425431