postgresql資料庫物件主要有資料庫、表、檢視、索引、schema、函式、觸發器等。postgresql提供了information_schema schema,其中包括返回資料庫物件的檢視。如使用者有訪問許可權,可以也在pg_catalog schema中查詢表、檢視等物件。
下面通過示例分別展示如何查詢各種資料庫物件。
postgresql 表資訊可以從information_schema.tables 或 pg_catalog.pg_tables 檢視中查詢:
select * from information_schema.tables;
select * from pg_catalog.pg_tables;
獲取使用者當前選擇的schema:
select current_schema();
返回資料庫中所有schema:
select * from information_schema.schemata;
select * from pg_catalog.pg_namespace
查詢當前選擇的資料庫:
select current_database();
返回伺服器上所有資料庫:
select * from pg_catalog.pg_database
查詢資料庫中所有schema中的所有檢視:
select * from information_schema.views
select * from pg_catalog.pg_views;
查詢某個表的列資訊:
select
*from
information_schema.columns
where
table_name = 'employee'
order by
ordinal_position;
查詢資料庫中所有索引資訊;
select * from pg_catalog.pg_indexes;
返回資料庫中所有函式。對於使用者定義函式,routine_definition 列會有函式體:
select * from information_schema.routines where routine_type = 'function';
查詢資料庫中所有觸發器,action_statemen類別包括觸發器body資訊:
select * from information_schema.triggers;
實際應用中,通常需要表占用磁碟空間情況,我們可以利用系統表實現:
select nspname || '.' || relname as "relation",
pg_size_pretty(pg_total_relation_size(c.oid)) as "total_size"
from pg_class c
left join pg_namespace n on (n.oid = c.relnamespace)
where nspname not in ('pg_catalog', 'information_schema')
and c.relkind <> 'i'
and nspname !~ '^pg_toast'
order by pg_total_relation_size(c.oid) desc
limit 5;
示例輸出:
relation
total_size
public.snapshots
823 mb
public.invoice_items
344 mb
public.messages
267 mb
public.topics
40 mb
public.invoices
35 mb
(5 rows)
select
pg_database.datname as "database_name",
pg_size_pretty(pg_database_size (pg_database.datname)) as size_in_mb
from
pg_database
order by
size_in_mb desc;
可以通過統計系統表進行查詢:
select schemaname,relname,n_live_tup
from pg_stat_user_tables
order by n_live_tup desc
limit 12;
順便說下mysql對於查詢,讀者可以對比學習:
select table_name, table_rows
from information_schema.tables
where table_schema = (select database())
order by table_rows desc
limit 12;
檢視資料庫系統表命令:
\dt pg_*
表名字
用途pg_aggregate
聚集函式
pg_am
索引訪問方法
pg_amop
訪問方法操作符
pg_amproc
訪問方法支援過程
pg_attrdef
字段預設值
pg_attribute
表的列(也稱為」屬性」或」字段」)
pg_authid
認證識別符號(角色)
pg_auth_members
認證識別符號成員關係
pg_autovacuum
每個關係乙個的自動清理配置引數
pg_cast
轉換(資料型別轉換)
pg_class
表、索引、序列、檢視(「關係」)
pg_constraint
檢查約束、唯一約束、主鍵約束、外來鍵約束
pg_conversion
編碼轉換資訊
pg_database
本集群內的資料庫
pg_depend
資料庫物件之間的依賴性
pg_description
資料庫物件的描述或注釋
pg_index
附加的索引資訊
pg_inherits
表繼承層次
pg_language
用於寫函式的語言
pg_largeobject
大物件pg_listener
非同步通知
pg_namespace
模式pg_opclass
索引訪問方法操作符類
pg_operator
操作符pg_pltemplate
過程語言使用的模板資料
pg_proc
函式和過程
pg_rewrite
查詢重寫規則
pg_shdepend
在共享物件上的依賴性
pg_shdescription
共享物件上的注釋
pg_statistic
優化器統計
pg_tablespace
這個資料庫集群裡面的表空間
pg_trigger
觸發器pg_type
資料型別
列出所有pg開頭的系統示圖:
\dv pg_*
檢視名
用途pg_cursors
開啟的游標
pg_group
資料庫使用者的組
pg_indexes
索引pg_locks
當前持有的鎖
pg_prepared_statements
預備語句
pg_prepared_xacts
預備事務
pg_roles
資料庫角色
pg_rules
規則pg_settings
引數設定
pg_shadow
資料庫使用者
pg_stats
規劃器統計
pg_tables
表pg_timezone_abbrevs
時區縮寫
pg_timezone_names
時區名pg_user
資料庫使用者
pg_views
檢視本文介紹postgresql系統表及檢視;通過系統表或檢視查詢資料庫物件及常用統計資訊。
postgresql模板資料庫
template0和template1為postgresql資料庫的模板資料庫,新建的資料庫預設使用template1作為模板。template0和template1的區別在於template0無法修改,因此你可以修改template1資料庫以定製新建立的資料庫。template資料庫無法被刪除 d...
postgresql資料庫安裝
安裝並初始化 1 解壓資料庫並放到指定目錄 在opt目錄下 tar xvzf postgresql 10.1 1 linux x64 binaries.tar.gz 解壓出來之後目錄為pgsql 2 mv pgsql usr local pgsql 3 建立pgsql使用者並設定密碼 useradd...
資料庫 postgresql 安裝
當前專案是使用django框架搭建介面層的業務,資料庫端使用了postgresql,這裡只是簡單記錄下自己的安裝流程,因為開發機器使用的mac,所以流程只是針對mac。這裡我使用的homebrew,這個工具就不多說了,沒有用過的可以到這裡 執行下面命令即可 brew install postgres...