PostgreSQL里面的一些命令小结

发表于:2018-3-28 09:25

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Greg Pittman    来源:Linux中国

分享:
  近两天总结了下PostgreSQL的基本操作命令,对PostgreSQL也有了一个基本的认识。
  PostgreSQL的功能还是很丰富的,有序列,支持db link,基本Oracle里有的概念它这里也有,目前来看不支持package。
  风格和Oracle也类似,没有MySQL中快捷方便的show create table 这样的语句。
  从我的使用习惯来说,我基本关注以下的一些方面。
  · 查看数据库的配置
  · 查看用户信息
  · 查看会话连接信息
  · show tables的类似方法
  · 用户的权限查看
  · 建表语句
  · 表空间信息
  · 对象存储信息
  · 查看锁的信息
  · 查看数据库参数
  · 显示数据库的运行状态
  · 查看数据字典的信息
  · 查看索引的信息
  · 查看执行计划
  · 查看存储过程
  · 存储过程的调度执行
  · 事务隔离级别
  1.查看数据库的配置
  可以直接使用\l 选项列出所有的数据库来,字符集,基本的配置都一目了然,有点Oracle 12c中的show pdbs的感觉。
  从进程情况来看,PG是多进程多线程的架构设计。
  如果查看当前数据库,可以使用current_database()。
  postgres=# select current_database();
  current_database
  ------------------
  postgres
  2.查看用户信息
  可以使用\dn来得到schema的相关信息,在PG里面的schema和user还是有一些差别,在其他数据库schema基本就是user了。
postgres-# \dn
List of schemas
Name  |  Owner
--------+----------
public | postgres
  我们创建一个schema,然后使用\dn来查看。
postgres=# create schema jeanron100;
CREATE SCHEMA
postgres=# \dn
List of schemas
Name    |  Owner
------------+----------
jeanron100 | postgres
public     | postgres
  或者使用数据字典pg_authid来查看。
  postgres=# select *from pg_authid;
  关于schema的概念,我们可以创建一个表test,
  postgres=# create table test(id int);
  CREATE TABLE
  可以看到这个是一个public的schema
postgres=# \d
List of relations
Schema | Name | Type  |  Owner
--------+------+-------+----------
public | test | table | postgres
  如果使用\d来查看字段信息,结果如下:
postgres=# \d test
Table "public.test"
Column |  Type   | Modifiers
--------+---------+-----------
id     | integer |
  还可以使用pg_users来查看,比如我创建了一个用户replica,就会有相应的配置。
select *from pg_user;
usename  | usesysid | usecreatedb | usesuper | userepl | usebypassrls |  passwd  | valuntil | useconfig
----------+----------+-------------+----------+---------+--------------+----------+----------
postgres |       10 | t           | t        | t       | t            | ******** |          |
replica  |    16384 | f           | f        | t       | f            | ******** |          |
  查看当前的schema信息,可以使用current_schema()
  3.查看会话连接信息
  如果查看PG中的会话信息,可以使用select * from pg_stat_activity;
  如果新增了一个连接,开启了一个会话,在服务端是会有一个影子进程存在的。可以根据pid找到对应的会话。包括执行的SQL都可以看到,如果有多个会话,就是多条记录
postgres=# select * from pg_stat_activity;
-[ RECORD 1 ]----+--------------------------------
datid            | 13241
datname          | postgres
pid              | 20644
usesysid         | 10
usename          | postgres
application_name | psql
client_addr      |
client_hostname  |
client_port      | -1
backend_start    | 2018-03-25 05:38:16.988057+08
xact_start       | 2018-03-25 05:48:08.113649+08
query_start      | 2018-03-25 05:48:08.113649+08
state_change     | 2018-03-25 05:48:08.113653+08
waiting          | f
state            | active
backend_xid      |
backend_xmin     | 1753
query            | select * from pg_stat_activity;
  4.show tables的类似方法
  PG里面暂时没有找到show tables这种的快捷方式,目前发现有两类方式。
  一种是通过数据字典pg_tables来查看,相当于Oracle里面的all_tables
  或者是使用information_schema里面的tables来查看。
  postgres=# select *from information_schema.tables;
  postgres=# select *from pg_tables;
  PG里面的information_schema比较特别,在数据库中直接\l无法看到,但是确确实实存在,着数据字典风格和MySQL很相似。
  5.用户的权限查看
  查看权限可以使用\dp来完成,或者等价的命令\z来实现。
postgres=# \dp
Access privileges
Schema | Name | Type  | Access privileges | Column privileges | Policies
--------+------+-------+-------------------+-------------------+----------
public | test | table |                   |                   |
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号