专业只做数据库实训和认证的品牌机构

微信公众号新浪微博
免费咨询电话:400-0909-964
当前位置: 网站首页 > postgresql > 教程 > PostgreSQL基础教程:psql使用小技巧

PostgreSQL基础教程:psql使用小技巧

文章来源: 更新时间:2020/6/3 11:56:37

在线老师点击咨询:

最新学讯:近期OCP认证正在报名中,因考试人员较多请尽快报名获取最近考试时间,报名费用请联系在线老师,甲骨文官方认证,报名从速!

我要咨询

PostgreSQL模式创建了会存到哪个系统表中?一般的可以通过元命令查看模式等信息,参考命令如下:

通过以下元命令可以列出所有模式

\dn[S+] [PATTERN]

进而翻阅资料定位到系统表pg_namespace,参阅手册关于该系统表的描述如下:

pg_namespace:该系统表存储名字空间(模式)。

名字类型引用描述

nspnamename

名字空间的名称。

nspowneroidpg_authid.oid名字空间的所有者

nspaclaclitem[]

访问权限。

见如下应用示例:

#查看当前数据库public模式的创建者的名称。

postgres=#  SELECT nspname,rolname FROM pg_namespace n, pg_authid a WHERE nspname = 'public' AND nspowner = a.oid;
 nspname | rolname
---------+---------
 public  | postgres
(1 行记录)

这里有个名字空间的概念,对比其它关系数据库比较新颖,通过以上示例可以确定是名字空间即为模式名。

本文的重点在这里:后来联想到元命令的执行可以通过设置,打印出调用执行的sql语句

两种方法如下:

psql -E  参数,可以把psql中各种以\开头的命令执行的实际SQL打印出来。
\set ECHO_HIDDEN on|off     打开|关闭 命令实际执行的SQL,和-E类似。

设置后再次调用元命令\dnS+查看模式信息 ,显示如下:

postgres=#  \set ECHO_HIDDEN on
postgres=# \dnS+
********* 查询 **********
SELECT n.nspname AS "Name",
  pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner",
  pg_catalog.array_to_string(n.nspacl, E'\n') AS "Access privileges",
  pg_catalog.obj_description(n.oid, 'pg_namespace') AS "Description"
FROM pg_catalog.pg_namespace n
ORDER BY 1;
**************************
  
                                             架构模式列表
        名称        | 拥有者 |     存取权限     |                         描述
--------------------+--------+------------------+------------------------------------------------------
 hgdb_catalog       | postgres | postgres=UC/postgres+| postgres Database catalog schema
                    |        | =U/postgres        |
 information_schema | postgres | postgres=UC/postgres+|
                    |        | =U/postgres        |
 Oracle_catalog     | postgres | postgres=UC/postgres+| postgres Database catalog schema(Oracle compatibility)
                    |        | =U/postgres        |
 pg_catalog         | postgres | postgres=UC/postgres+| system catalog schema
                    |        | =U/postgres        |
 pg_temp_1          | postgres |                  |
 pg_toast           | postgres |                  | reserved schema for TOAST tables
 pg_toast_temp_1    | postgres |                  |
 public             | postgres | postgres=UC/postgres+| standard public schema
                    |        | =UC/postgres       |
(8 行记录)

可以看到元命令调用的sql访问的系统表正是pg_catalog.pg_namespace,从而验证了模式创建后存放在了此系统表中。

重要的是,通过此种方法可以获取到其它元命令执行的sql 从而获取更多数据库管理信息。

本文地址:http://www.cuug.com.cn/postgresql/jiaocheng/24740620153.html 转载请注明!


在线预约 抢先报名 获取课程排期

Oracle培训机构

金牌讲师<>

冉乃纲-老师CUUG金牌讲师
冉老师 CUUG金牌讲师 Oracle及RedHat高级讲师、Unix/Linux 资深专家...[详细了解老师]

免费咨询上课流程 客服在线中

陈卫星-老师CUUG金牌讲师
陈老师 CUUG金牌讲师 精通Oracle管理、备份恢复、性能优化 11年Ora...[详细了解老师]

免费咨询上课流程 客服在线中

选学校如何选择适合自己的学校

CUUG -CHINA UNIX USER GROUP,是国际UNIX组织UNIFORUM的中国代表,是国内悠久的专业UNIX培训机构,被誉为中国UNIX 的摇篮。多年来,以提高教学质量为本,强调素质教育,积极引进、消化国外的新技术,有效的结合中国....[详情]

一站式服务(从入学到就业一帮到底)

入学

学习

就业

实操

食宿
地址:北京市海淀区田村山南路35号院17号楼
课程咨询:010-59426307 010-59426319 400-0909-964
企业服务:137 1818 8639(陈经理)
部分信息来源于网络,如有错误请联系指正!
版权所有@北京神脑资讯技术有限公司 (CUUG,中国UNIX用户协会) Copyright 2016 ALL Rights Reserved 京ICP备11008061号-1