當前位置:首頁 » 數據倉庫 » pg資料庫怎麼查
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

pg資料庫怎麼查

發布時間: 2023-05-24 16:37:10

⑴ postgresql資料庫怎麼查詢所有的序列名

postgresql中一個序列對象通常用於為行或者表生成唯一的標識符。查看序列:psql

\d
命令輸出一個資料庫對象,包括
Sequence,表,視圖和索引。你還可以使用
\ds
命令只查看當前資料庫的所有序列。例如:pigdb-#
\ds
List
of
relations
Schema
|
Name
|
Type
|
Owner--------+-----------------------+----------+--------
public
|
author_ids
|
sequence
|
ichexw
public
|
shipments_ship_id_seq
|
sequence
|
ichexw(2
rows)

⑵ PG里如何查看錶,索引,表空間,資料庫大小

--查詢一個索引大小 select pg_size_pretty(pg_relation_size('indexname))--查看一張表及此它上的索引總大小 select pg_size_pretty(pg_total_relation_size('tablename')); --查看所有 schema裡面索引大小,大到小的順序排列: select indexrelname,pg_size_pretty( pg_relation_size(relid)) from pg_stat_user_indexes where schemaname = 'schemaname' order by pg_relation_size(relid) desc;--查看所有 schema裡面表的大小,從大到小順序排列: select relname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_tables where schemaname = 'schemaname' order by pg_relation_size(relid) desc; --查看資料庫大小: select pg_database.datname,pg_size_pretty(pg_database_size(pg_database.datname)) AS size from pg_database;--查看錶空間大小

⑶ 怎麼去查找在window上默認安裝的pg資料庫路徑

1、windows下postgresql的安裝
我下載的為xxx9.2.exe一路默認安裝即可。安裝位置為C:\Program Files\PostgreSQL。
安裝完畢後,在dos下執行命令
>net user
列出當前系統用戶名稱。我的用戶名為Administrator。
>psql –U Administrator –d postgres
該命令表示通過資料庫用戶Administrator連接資料庫postgres。
l 若顯示psql不是內部或外部命令,則說明postgresql的bin文件路徑沒添加到windows系統中,右擊「我的電腦」->」屬性」->」高級」->」環境變數」->」Administrator」的用戶變數,選中「PATH」,點擊編輯明銷,將」C:\Program Files\PostgreSQL\9.2\bin」添加進去,注意與前面的路徑用」;」隔開。電腦重啟生效。
l 若顯示角色Administrator不存在,則必須在postgresql資料庫中添加該用戶才能使其可以登錄。
在postgresql中
查詢系統用戶
postgres=#select* from pg_user;
查詢系統中的資料庫
postgres=#select* from pg_database;
說明一下:「template1」是Postgresql在初始化時自動創建的測試資料庫。

創建postgresql資料庫Administrator用戶
方式1

在PostgreSQL中創建用戶postgreSQL用戶Administrator

用SQL Shell(psql)通過用戶postgres登錄PostgreSQL,創建用戶Administrator,
postgres=#create user 「Administrator」;
方式2

通過windows下dos創建postgresql用戶Administrator

將PostgreSQL文件夾bin路徑添加到系統環境中後重啟生效.
通過windows下dos創建postgresql用戶是區分大小寫的。

配置客戶機訪問
為了配置遠程主機和用戶可以連接到PostgreSQL服務,你需要pg_hba.conf文件。文件包含大量注釋記錄用於遠程訪問的選項。在我們的安裝示例中,我們允許區域網中任何主機的任何用戶訪問伺服器上的資料庫。為了達到這個目的,我們添加以下的一行記錄到文件尾:
host all all 192.168.0.0/16 trust
這意味著所有IP地址由192.168開始的計算機可以訪問所有的資料庫。最簡單的使配置生效的方法就是重啟伺服器。
在dos下操作,通過createuser –Uolser –P newuser來創建。
比如我們想創建postgresql資料庫用戶Administrator。
>createuser –U postgre –P Administrator
這樣創激滲游建的資料庫用戶Administrator沒有創建資料庫的權利,可以通過pgAdmin III登錄進行查看。
若使其可以創建資料庫可以參照下面內容進行設置:
>createuser –U postgre –s Administrator
這樣具有創建資料庫能力。

createuser的用法可以通過在dos中輸入createuser –help查看。
MicrosoftWindows XP [版本 5.1.2600]
(C)版喊臘權所有 1985-2001 Microsoft Corp.

C:\Documentsand Settings\Administrator>createuser --help
createuser創建一個新的 PostgreSQL 用戶.

使用方法:
createuser [選項]... [用戶名]

選項:
-c, --connection-limit=N 角色的連接限制(預設: 沒有限制)
-d, --createdb 此角色可以創建新資料庫
-D, --no-createdb 此角色不可以創建新資料庫(默認)
-e, --echo 顯示發送到服務端的命令
-E, --encrypted 口令加密存儲
-i, --inherit 角色能夠繼承它所屬角色的許可權
(這是預設情況)
-I, --no-inherit 角色不繼承許可權
-l, --login 角色能夠登錄(這是預設情況)
-L, --no-login 角色不能登錄
-N, --unencrypted 口令不加密存儲
-P, --pwprompt 給新角色指定口令
-r, --createrole 這個角色可以創建新的角色
-R, --no-createrole 這個角色沒有創建其它角色的許可權(默認)
-s, --superuser 角色將是超級用戶
-S, --no-superuser 角色不能是超級用戶(默認)
-V, --version 輸出版本信息, 然後退出
--interactive 提示缺少角色名及其屬性
而不是使用默認值
--replication 角色能啟動復制
--no-replication 角色不能啟動復制
-?, --help 顯示此幫助, 然後退出

聯接選項:
-h, --host=HOSTNAM 資料庫伺服器所在機器的主機名或套接字目錄
-p, --port=PORT 資料庫伺服器埠號
-U, --username=USERNAME 聯接用戶 (不是要創建的用戶名)
-w, -no-password 永遠不提示輸入口令
-W, --password 強制提示輸入口令

臭蟲報告至<[email protected]>.

C:\Documentsand Settings\Administrator>

方式3

在C:\Program Files\PostgreSQL\9.2\bin文件夾下有可執行文件createuser.exe,我雙擊後,該文件執行一閃就關閉,只好在dos中輸入cmd打開窗口,將該文件拖入窗口中,在輸入「 –U postgres –P Adiminisrator」然後回車,如下圖所示,即可創建資料庫用戶Administrator。但此時該用戶不具有創建database的能力,可以通過pgAdmin III查看。

psql的用法可以通過在dos下輸入psql –help查看,如下圖所示。
MicrosoftWindows XP [版本 5.1.2600]
(C) 版權所有1985-2001 Microsoft Corp.

C:\Documentsand Settings\Administrator>psql --help
psql是PostgreSQL 的互動式客戶端工具。
使用方法:
psql [選項]... [資料庫名稱 [用戶名稱]]
通用選項:
-c,--command=命令 執行單一命令(SQL或內部指令)然後結束
-d, --dbname=資料庫名稱 指定要連接的資料庫 (預設:"Administrator")
-f, --file=文件名 從文件中執行命令然後退出
-l, --list 列出所有可用的資料庫,然後退出
-v, --set=, --variable=名稱=值
為psql變數(名稱)設定值
-V, --version 輸出版本信息, 然後退出
-X, --no-psqlrc 不讀取啟動文檔(~/.psqlrc)
-1 ("one"), --single-transaction
作為一個單一事務來執行命令文件
-?, --help 顯示此幫助, 然後退出

輸入和輸出選項:
-a, --echo-all 顯示所有來自於腳本的輸入
-e, --echo-queries 顯示發送給伺服器的命令
-E, --echo-hidden 顯示內部命令產生的查詢
-L, --log-file=文件名 將會話日誌寫入文件
-n, --no-readline 禁用增強命令行編輯功能(readline)
-o, --output=FILENAME 將查詢結果寫入文件(或 |管道)
-q, --quiet 以沉默模式運行(不顯示消息,只有查詢結果)
-s, --single-step 單步模式 (確認每個查詢)
-S, --single-line 單行模式 (一行就是一條 SQL 命令)

輸出格式選項 :
-A, --no-align 使用非對齊表格輸出模式
-F, --field-separator=字元串
設欄位分隔符(預設:"|")
-H, --html HTML 表格輸出模式
-P, --pset=變數[=參數] 設置將變數列印到參數的選項(查閱 \pset 命令)
-R, --record-separator=字元串
設定記錄分隔符(預設:換行符號)
-t, --tuples-only 只列印記錄i
-T, --table-attr=文本 設定 HTML 表格標記屬性(例如,寬度,邊界)
-x, --expanded 打開擴展表格輸出
-z, --field-separator-zero
設置欄位分隔符為位元組0
-0, --record-separator-zero
設置記錄分隔符為位元組0

聯接選項:
-h, --host=主機名 資料庫伺服器主機或socket目錄(預設:"本地介面")
-p, --port=埠 資料庫伺服器的埠(預設:"5432")
-U, --username=用戶名 指定資料庫用戶名(預設:"Administrator")
-w, --no-password 永遠不提示輸入口令
-W, --password 強制口令提示 (自動)

更多信息,請在psql中輸入"\?"(用於內部指令)或者"\help"(用於SQL命令),
或者參考PostgreSQL文檔中的psql章節.

臭蟲報告至<[email protected]>.

C:\Documentsand Settings\Administrator>

⑷ linux 怎麼查詢postgres資料庫

postgres下一些查詢有時候是不同於其他資料庫的。
查詢版本:psql --version
進入資料庫後,使用下面的方法進行查詢。
(1)顯示SQL語句執行時間
\timing on 退出資料庫失效
(2)顯示postgres中所有的表總數(包含資料庫自帶的)
select count(*) from pg_tables;
安裝好資料庫系統自帶為58個。
(3)顯示用戶生成的資料庫列表
\d
(4)顯示某個表列屬性
\d tablename
(5)刪除表中所有數據
delete from tablename --寫入日誌
Truncate Table tablename --不寫入日誌
TRUNCATE TABLE
刪除表中的所有行,而不記錄單個行刪除操作。
語法
TRUNCATE TABLE name
參數
name
是要截斷的表的名稱或要刪除其全部行的表的名稱。
注釋
TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統和事務日誌資源少。
DELETE 語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。TRUNCATE TABLE 通過釋放存儲表數據所用的數據頁來刪除數據,並且只在事務日誌中記錄頁的釋放。
TRUNCATE TABLE 刪除表中的所有行,但表結構及其列、約束、索引等保持不變。新行標識所用的計數值重置為該列的種子。如果想保留標識計數值,請改用 DELETE。
如果要刪除表定義及其數據,請使用 DROP TABLE 語句。
對於由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TABLE,而應使用不帶 WHERE 子句的 DELETE 語句。由於 TRUNCATE TABLE 不記錄在日誌中,所以它不能激活觸發器。
TRUNCATE TABLE 不能用於參與了索引視圖的表。
示例
下例刪除 authors 表中的所有數據。
TRUNCATE TABLE authors
(6)顯示當前用戶
\c
(7)顯示當前資料庫所有用戶
\
(8)創建用戶
create user xxx with password 'xxxxxx';
(9)更改用戶密碼
alter user xxx with password 'yyyy';
(10)更改用戶連接
\c database username
(11)更改表名
更改表名稱
alter table smallint rename to integer;

(12)更改列名
更改表列名
alter table integer rename column id to id1;

(13)顯示日期
show datestyle;
(14)設置日期格式
set datestyle=MDY;
(15)列印詳細出錯信息
postgres=# \set VERBOSITY verbose
postgres=#
postgres=#
postgres=# create table (id );
ERROR: syntax error at or near "(" at character 14
STATEMENT: create table (id );
ERROR: 42601: syntax error at or near "("
LINE 1: create table (id );
^
LOCATION: scanner_yyerror, scan.l:1044

(16)更改列屬性
postgres=# alter table a1 alter column id2 set DATA TYPE int;
(17)查看幫助信息
\h alter table
(18)列顯示
\x
(19)創建函數
CREATE OR REPLACE FUNCTION f_value_single()
returns void AS $_$
DECLARE
BEGIN
for i in 1..2000000 loop
insert into abc values(1,'a','a');
end loop;
return;
END;
$_$ language plpgsql;

將表名作為入參
create or replace function count(varchar)
returns bigint
as

selectcount(∗)fromquoteident($1);

language 'sql';

(20)關閉資料庫3種模式
SIGTERM
不再允許新的連接,但是允許所有活躍的會話正常完成他們的工作,只有在所有會話都結束任務後才關閉。這是智能關閉。

SIGINT
不再允許新的連接,向所有活躍伺服器發送 SIGTERM(讓它們立刻退出),然後等待所有子進程退出並關閉資料庫。這是快速關閉。

SIGQUIT
令 postgres 向所有子進程發送 SIGQUIT 並且立即退出(所有子進程也會立即退出),而不會妥善地關閉資料庫系統。這是立即關閉。這樣做會導致下次啟動時的恢復(通過重放 WAL 日誌)。我們推薦只在緊急的時候使用這個方法。

SIGKILL
此選項盡量不要使用,這樣會阻止伺服器清理共享內存和信號燈資源,那樣的話你只能在啟動伺服器之前自己手工做這件事。另外,SIGKILL 直接把 postgres 殺掉,而不會等它把信號中繼給它的子進程,因此我們還需要手工殺掉每個獨立子進程。

⑸ pg資料庫 locale 參數在哪裡查

使用show命令查看。
可以使用show命令或者查看pgsettings字典,使用showall可以查看全部的參數值,show查看指定參數。

⑹ pg資料庫的db怎麼查看錶關聯

一、資料庫的多表連接查詢,inner的不同用法

在pg資料庫中建立兩張表:

t_a和t_b如下所示:

t_a:

t_b:

1、inner join(內連接)

inner join就是根據on欄位標示出來的條件,查詢關聯的表中符合條件的數據,並把他前部都顯示出來,形成一個結果集。

執行如下語句:

select * from t_a inner join t_b on t_a.adi=t_b.bid

得到的結果為:

這樣的查詢會顯示出所有的數據,如果我們僅僅需要一部分的數據(例如我們只想查出t_a中所有aid和t_b中的bid相同的數據),那麼查詢語句應該變成:

select t_a.* from t_a inner join t_b on t_a.aid=t_b.bid

那麼得到的數據如下所示,就只顯示了t_a表中的數據。如下:

要排除重復的數據,在select後加distinct即可。

2、left join

left join 就是以表t_a為基礎從右表t_b中查詢出所有符合on條件的結果,在合並到表t_a中對應的部分,再作為一個結果集輸出,在結果集中,會顯示出表t_a中的所有數據。

執行如下查詢語句:

select * from t_a left join t_b on t_a.aid=t_b.bid

得到如下結果:

可以看到,在查詢的結果中,有一行關於表t_b的數據都為null,因為表t_b中沒有符合on條件的數據。但是表t_a表顯示出了全部的數據。那麼在需要篩選的時候,應該著重於篩選表t_b中的數據,如果執行如下的語句:

select t_a.* from t_a left join t_b on t_a.aid=t_b.bid

那麼得到的就是表t_a中的所有數據,那麼這個查詢就顯得沒有意義了。

3、right join

right join 就是以表t_b為基礎從左表t_a中查詢出所有符合on條件的結果,在合並到表t_b中對應的部分,再作為一個結果集輸出,在結果集中,會顯示出表t_b中的所有數據。

執行如下查詢語句:

select * from t_a right join t_b on t_a.aid=t_b.bid

得到的結果為:

可以看到,查詢的結果中,有兩行數據在表t_a的對應部分都是null的,表示表t_a中沒有符合on條件的數據,但是表t_b顯示了全部的數據,那麼需要做條件篩選的時候,我們就應該主要針對表t_a進行篩選。

二、查詢一個父級的所有子級(包括子級的子級)

在pg資料庫中建立一張表t_c如下:

要查出cid為1的所有的子級、包括cid為2、3、5的子級的集合。執行以下sql語句

with recursive tb as(select * from t_c where parent_id='1' union all select t_c.* from t_c,tb where t_c.parent_id=tb.cid )select * from tb

得到如下的結果:

由查詢出的結果集可以看到,我們查詢出了除了父級(cid為1)以外的所有cid為父級的子級以及子級的子級。

我們來解析一下這個sql語句:

顯而易見的,這是一個遞歸的查詢方法。首先是with為查詢語句提供了輔助功能,可以看做是查詢語句中的臨時表,其次recursive是sql中遞歸的關鍵字,只有有了這個關鍵字,pg才知道with這個語句需要做遞歸操作。union all是去重的,t_c.parent_id=tb.cid 表示了t_c的parent_id要等於臨時表tb的cid要在整個with語句的外面查詢建立的臨時表tb,才能得到所有的子級的集合。

⑺ PG里如何查看錶,索引,表空間,資料庫大小

--查詢一個索引大小 select pg_size_pretty(pg_relation_size('indexname))--查看一張表及此它上的索引總大小 select pg_size_pretty(pg_total_relation_size('tablename')); --查看所有 schema裡面索引大小,大到小的順序排列: select indexrelname,pg_size_pretty( pg_relation_size(relid)) from pg_stat_user_indexes where schemaname = 'schemaname' order by pg_relation_size(relid) desc;--查看所有 schema裡面表的大小,從大到小順序排列: select relname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_tables where schemaname = 'schemaname' order by pg_relation_size(relid) desc; --查看資料庫大小: select pg_database.datname,pg_size_pretty(pg_database_size(pg_database.datname)) AS size from pg_database;--查看錶空間大小

⑻ 如何查PostgreSQL 資料庫中所有的表

1、通過命令行查詢
d
資料庫
——
得到所有表的名字
d
表名
——
得到表結構
2、通過SQL語句查詢
"select
*
from
pg_tables"
——
得到當前db中所有表的信息(這里pg_tables是系統視圖)
"select
tablename
from
pg_tables
where
schemaname='public'"
——
得到所有用戶自定義表的名字(這里"tablename"欄位是表的名字,"schemaname"是schema的名字。用戶自定義的表,如果未經特殊處理,默認都是放在名為public的schema下)