Postgresql庫常用系統表

2021-10-24 10:24:42 字數 4527 閱讀 2266

---------------------pg元資料相關start---------------------

--記錄表和幾乎所有具有列或者像表的東西,包括索引主鍵之類的

select * from pg_class;

--資料庫相關資訊

select * from pg_database;

--表相關資訊(檢視)

select * from pg_tables where tablename = 'test_24';

--表字段相關資訊

select * from information_schema.columns where table_name = 'test_user_p';

--表列資訊attrelid=pg_class.oid,列名:attname,非空約束

select * from pg_attribute;

--檢查、主鍵、唯

一、外來鍵和排他約束

select * from pg_constraint;

--表繼承關係(分割槽表) inhparent:父表oid inhrelid:子表oid

select * from pg_inherits;

--名字空間(模式),即schema

select * from pg_namespace;

--資料庫角色資訊(檢視) rolconnlimit最大連線數

select * from pg_roles;

--資料庫授權識別符號(角色)資訊 --可修改角色連線數

select * from pg_authid;

update pg_authid set rolconnlimit=-1 where rolname='test';

--資料庫使用者(檢視) 有許可權訪問限制

select * from pg_shadow;

--資料庫使用者(檢視) 是pg_shadow的公共可讀檢視,消除了口令域

select * from pg_user;

--檢視資訊 提供資料庫中每個檢視的具體資訊

select * from pg_views;

---------------------pg元資料相關end---------------------

---------------------slot相關start---------------------

--檢視slot

select * from pg_replication_slots

--建立物理slot

select * from pg_create_physical_replication_slot('slot_1')

--建立邏輯slot

select * from pg_create_logical_replication_slot('logical_slot_test', 'wal2json');

--刪除slot

select pg_drop_replication_slot('logical_slot_test')

---------------------slot相關end---------------------

---------------------連線數相關start---------------------

--檢視過期連線

select * from pg_stat_activity where state = 'idle'

--刪除連線,括號裡傳pid

select pg_terminate_backend(25837);

--檢視最大連線數

show max_connections;

--修改最大連線數,需要superuser許可權

alter system set max_connections= 1000;

--too many connections for role "test"

select * from pg_stat_activity where usename='test'

---------------------連線數相關end---------------------

---------------------查詢表名、字段、主鍵相關start---------------------

--查詢表名(含主鍵的)

select a.tablename as tablename from pg_tables a

join (select bb.relname as tablename from pg_constraint aa inner join pg_class bb on aa.conrelid = bb.oid where aa.contype='p') t on a.tablename=t.tablename

where a.schemaname='public'

order by a.tablename;

--查詢表列名

select c.column_name as name,case when c.column_name=t.colname then true else false end as iskey from information_schema.columns c

left join (select b.relname,c.attname as colname from pg_constraint a inner join pg_class b on a.conrelid = b.oid

inner join pg_attribute c on c.attrelid = b.oid and c.attnum = a.conkey[1] where a.contype='p') t on c.table_name=t.relname

where c.table_name = 'test_user_p';

--postgresql分割槽表-父表資訊查詢

select nmsp_parent.nspname as parent_schema, parent.relname as parent,nmsp_child.nspname as child_schema,child.relname as child

from pg_inherits

join pg_class parent on pg_inherits.inhparent = parent.oid

join pg_class child on pg_inherits.inhrelid = child.oid

join pg_namespace nmsp_parent on nmsp_parent.oid = parent.relnamespace

join pg_namespace nmsp_child on nmsp_child.oid = child.relnamespace;

--查詢表名並標識是否分割槽表及主鍵字段

select a.tablename,case when c.inhparent is null then false else true end ispartitiontable,t.colname as pkey from pg_tables a

join (select bb.oid,bb.relname as tablename,cc.attname as colname from pg_constraint aa inner join pg_class bb on aa.conrelid = bb.oid inner join pg_attribute cc on cc.attrelid = bb.oid and cc.attnum = aa.conkey[1] where aa.contype='p') t on a.tablename=t.tablename

left join (select distinct inhparent from pg_inherits) c on t.oid=c.inhparent

left join pg_inherits d on t.oid=d.inhrelid

where a.schemaname='public' and d.inhrelid is null

order by a.tablename;

--根據主表名稱查詢分割槽表名

select t.tablename parent,a.tablename child from pg_tables a

join pg_class b on a.tablename=b.relname

join pg_inherits c on b.oid=c.inhrelid

join (select bb.oid,aa.schemaname,aa.tablename from pg_tables aa join pg_class bb on aa.tablename=bb.relname) t on c.inhparent=t.oid

where t.schemaname='public' and t.tablename in ('test_user','test_user_p','parent');

---------------------查詢表名、字段、主鍵相關end---------------------

參考:

aix 系統安裝PostgreSQL資料庫

環境說明 aix unix 7.1 需要用到的軟體 gccreadline 具體可根據自己情況安裝所需軟體 2 解壓 postgresql 9.5.1.tar.gz 3 新增使用者及使用者組 增加組 bash 4.2 mkgroup postgres 增加使用者名稱 bash 4.2 useradd...

postgreSQL常用函式

select coalesce sum duration 0 若sum duration 返回值為空,則為其賦值0 select to date 2013 12 20 yyyy mm dd 字串轉化為date型別 select date 2013 10 28 01 00 interval 50 mi...

常用postgresql命令

1.初始化postgresql資料庫 方法1 usr pgsql 9.4 bin initdb d opt pgsql data 方法2 sudo service postgresql initdb 2.啟動postgresql服務 sudo service postgresql start sta...