近两天总结了下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;
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),我们将立即处理。