PostgreSql資料庫物件資訊及應用

2021-10-13 05:26:01 字數 4457 閱讀 2488

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...