新聞中心
如何查PostgreSQL 數據庫中所有的表
[postgres@localhost bin]$ ./oid2name -d postgres
為將樂等地區(qū)用戶提供了全套網頁設計制作服務,及將樂網站建設行業(yè)解決方案。主營業(yè)務為成都網站設計、網站建設、將樂網站設計,以傳統方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
From database "postgres":
now:
SELECT pg_catalog.pg_relation_filenode(c.oid) as "Filenode", relname as "Table Name" FROM pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace LEFT JOIN pg_catalog.pg_database d ON d.datname = pg_catalog.current_database(),pg_catalog.pg_tablespace t WHERE relkind IN ('r') AND n.nspname NOT IN ('pg_catalog', 'information_schema') AND n.nspname !~ '^pg_toast' AND t.oid = CASE WHEN reltablespace 0 THEN reltablespace ELSE dattablespace END ORDER BY relname
Filenode Table Name
----------------------
24608 gaotab
24604 testtab
[postgres@localhost bin]$
執(zhí)行結果就是這樣,這里沒有用我給出的 postgres 數據庫名 ,而是用了 pg_catalog.current_database()
我把格式整理一下,并且把數據庫名換成我想要的 ’postgres‘,當然,如果有其他數據庫,換其他的名字就可以了。
SELECT
pg_catalog.pg_relation_filenode(c.oid) as "Filenode",
relname as "Table Name"
FROM
pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
LEFT JOIN pg_catalog.pg_database d ON d.datname = 'postgres',
pg_catalog.pg_tablespace t
WHERE
relkind IN ('r')
AND n.nspname NOT IN ('pg_catalog', 'information_schema')
AND n.nspname !~ '^pg_toast'
AND t.oid = CASE WHEN reltablespace 0 THEN reltablespace ELSE dattablespace END
ORDER BY
relname
其實 t 是沒有必要的,還可以再簡化:
SELECT
pg_catalog.pg_relation_filenode(c.oid) as "Filenode",
relname as "Table Name"
FROM
pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
LEFT JOIN pg_catalog.pg_database d ON d.datname = 'postgres'
WHERE
relkind IN ('r')
AND n.nspname NOT IN ('pg_catalog', 'information_schema')
AND n.nspname !~ '^pg_toast'
ORDER BY
relname
怎樣用postgresql創(chuàng)建表
先在本機安裝PostgreSQL數據庫,然后在開始菜單中找到該程序,雙擊并打開該數據庫。
找到數據庫服務器點擊要加表的數據庫,將鼠標移到"數據表"后,點擊鼠標右鍵 ,出現如下圖的對話框,點擊"新數據表"。
彈出"新數據表"的對話框后,如下圖1,在名稱中輸入表的名字,擁有人按照默認的選擇就好,表空間是指表存放的位置,最好選擇數據庫名稱,注釋中最好要填寫,便于后續(xù)的閱讀,填寫完后效果如下圖2。
在填寫好屬性信息后,點擊上方菜單的"字段",如下圖1標紅的位置。這里是用來為新建的表增加字段使用的。點擊"新增",出現"新字段"的屬性對話框如下圖2,填寫相關的屬性信息如下圖3,點擊"確定"后退出對話框。
字段新增之后,必須在為該表添加約束,為表增加一個屬性便于索引。對話框如下圖1,點擊"新增"彈出對話框,切換到"字段",如下圖2,選擇字段,點擊"新增”就退出主鍵的對話框
到這里為止,表的新建已經完成,點擊"確定"就可以正常退出,如下圖1.。這時在數據表那邊就可以看到新增的表了如下圖2。到這里為止就可以正常的使用該表。
如何查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下)
示例講解PostgreSQL表分區(qū)的三種方式
表分區(qū)是解決一些因單表過大引用的性能問題的方式,比如某張表過大就會造成查詢變慢,可能分區(qū)是一種解決方案。一般建議當單表大小超過內存就可以考慮表分區(qū)了。PostgreSQL的表分區(qū)有三種方式:
本文通過示例講解如何進行這三種方式的分區(qū)。
為方便,我們通過Docker的方式啟動一個PostgreSQL,可參考:《Docker啟動PostgreSQL并推薦幾款連接工具》。我們要選擇較高的版本,否則不支持Hash分區(qū),命令如下:
先創(chuàng)建一張表帶有年齡,然后我們根據年齡分段來進行分區(qū),創(chuàng)建表語句如下:
這個語句已經指定了按age字段來分區(qū)了,接著創(chuàng)建分區(qū)表:
這里創(chuàng)建了四張分區(qū)表,分別對應年齡是0到10歲、11到20歲、21到30歲、30歲以上。
接著我們插入一些數據:
可以看到這里的表名還是 pkslow_person_r ,而不是具體的分區(qū)表,說明對于客戶端是無感知的。
我們查詢也一樣的:
但實際上是有分區(qū)表存在的:
而且分區(qū)表與主表的字段是一致的。
查詢分區(qū)表,就只能查到那個特定分區(qū)的數據了:
類似的,列表分區(qū)是按特定的值來分區(qū),比較某個城市的數據放在一個分區(qū)里。這里不再給出每一步的講解,代碼如下:
當我們查詢第一個分區(qū)的時候,只有廣州的數據:
哈希分區(qū)是指按字段取哈希值后再分區(qū)。具體的語句如下:
可以看到創(chuàng)建分區(qū)表的時候,我們用了取模的方式,所以如果要創(chuàng)建N個分區(qū)表,就要取N取模。
隨便查詢一張分區(qū)表如下:
可以看到同是SZ的哈希值是一樣的,肯定會分在同一個分區(qū),而BJ的哈希值取模后也屬于同一個分區(qū)。
本文講解了PostgreSQL分區(qū)的三種方式。
代碼請查看:
postgresql 查看有哪些表
1、通過命令行查詢\d數據庫——得到所有表的名字\d表名——得到表結構2、通過
SQL語句
查詢"select*frompg_tables"——得到當前db中所有表的信息(這里pg_tables是系統視圖)"selecttablenamefrompg_tableswhereschemaname='public
在postgresql中如何從數據庫中檢索出所有的表名
1、查看當前數據庫中所有的模式。
2、如果想查看模式中所有的對象信息,可以通過\d 模式名.* 加上通配符的方式來進行查看。
3、在查看模式中的對象時一般使用的方式都是模式名.對象名的方式。
4、在postgresql中有一個類型于linux系統中$PATH的環(huán)境變量search_path,默認情況下它的值是當前數據庫值和公共模式值。
5、如果想其它模式也添加在搜索路徑中可通過如下命令來進行設置。
6、設置完成后如果我們再訪問tec模式下的對象,就不需要再使用模式名.對象名的方式了,直接使用對象名即可進行操作。
本文題目:postgresql的表的簡單介紹
當前路徑:http://www.dlmjj.cn/article/dsccpee.html