在 Postgres 和 SQL 标准中,我们都有这样的包含层次结构:
- 一台计算机可能有一个或多个集群。
- 数据库服务器是一个集群。
- 一个集群有[目录][8]。(目录 = 数据库)
- 目录有[schemas][9]。(Schema = [namespace][10] of tables,和安全边界)
- 模式有 [表][11]。
- 表有 [行][12]。
- 行有值,由[列][13]定义。
在 postgresql 中,我有一个名为的数据库students,下面有一个名为的表student:
postgres=# \c students
You are now connected to database "students" as user "postgres".
students=# \dt;
public | student | table | postgres
Run Code Online (Sandbox Code Playgroud)
我想知道数据库students是否也是目录?
students和之间的模式在哪里student?
一般来说,我如何列出
我怎样才能显示
谢谢。
很快,我通常会在我的初级队友开始研究 PostgreSQL 时向他们解释。
在 PostgreSQL 中:
现在,回到你的例子:
public | student | table | postgres 对应于 schema | table | kind of table | owner of table
你可以列出:
\lpsql 或 query 中的命令创建目录(数据库)select * from pg_database;\dnpsql 或 query 中的命令select * from information_schema.schemata;select * from pg_tables WHERE schemaname = 'Your schema';您可以显示:
select current_database();select current_schema;请注意,PostgreSQL 有两个系统模式调用 information_schema 和 pg_catalog,这可能会让您感到困惑。
pg_catalog 是一个系统模式。更多信息。
系统目录是关系数据库管理系统存储模式元数据的地方,例如有关表和列的信息以及内部簿记信息。PostgreSQL 的系统目录是常规表。您可以删除和重新创建表、添加列、插入和更新值,并以这种方式严重弄乱您的系统。通常,不应手动更改系统目录,总有 SQL 命令可以做到这一点。(例如, CREATE DATABASE 在 pg_database 目录中插入一行——实际上是在磁盘上创建数据库。)对于特别深奥的操作有一些例外,例如添加索引访问方法。
information_schema 是一个系统模式。更多信息。
信息模式由一组视图组成,这些视图包含有关当前数据库中定义的对象的信息。信息模式在 SQL 标准中定义,因此可以预期是可移植的并保持稳定——与系统目录不同,系统目录特定于 PostgreSQL 并在实现问题后建模。然而,信息模式视图不包含有关 PostgreSQL 特定功能的信息;查询那些您需要查询系统目录或其他 PostgreSQL 特定视图的内容。
我希望这些信息能帮助你清楚。
| 归档时间: |
|
| 查看次数: |
7945 次 |
| 最近记录: |