文章 給了本人很大的啟示
讓我們從兩個示例入手。
例1:查詢表foo的所有字段。
postgres=# create
table foo (id int,name varchar(12));
create
table
傳統方法:
note:這裡面pg_class、pg_attribute均為system relation(系統表),
pg_class儲存著資料庫所有物件(表、檢視、索引、序列、等物件)的記錄。
pg_attribute儲存著所有資料庫裡存在的所有的字段,比如所有表的所有欄位都可以在pg_attribute查詢到。
postgres=# select attname from pg_attribute where attrelid = (select oid from pg_class where relname = 'foo');
attname
----------
id name
ctid
xmin
cmin
xmax
cmax
tableoid
(8 rows)
現在,我們使用oid 的alia :
postgres=# select attname from pg_attribute where attrelid = 'foo'::regclass;
attname
----------
id name
ctid
xmin
cmin
xmax
cmax
tableoid
(8 rows)
可以看出來,'foo'::regclass 相當於語句 (select oid from pg_class where relname = 'foo')
使用 alia(別名)大大簡化了操作。
例2:查詢foo表的一些資訊
postgres=# select oid,relname,reltuples from pg_class where oid='foo'::regclass;
oid | relname | reltuples
-------+---------+-----------
49542 | foo | 0
(1 row)
這裡使用oid作為查詢條件,可以看出來:
'foo'::regclass : 這個表示式將 表名轉換成了該錶的oid
根據官網文件:
可以推導出來,其餘用法類似。
比如,檢視那些表的資料型別為test:
postgres=# select relname from pg_class where reltype = 'test'::regtype;
relname
---------
test
(1 row)
test同時也是一張表,建立的test表的同時,也建立了名為test 的資料型別,這屬於自定義資料型別的知識。
用法大致是這樣,內部原理是怎麼樣的,請追溯原始碼。 docker中postgres的使用
docker中的postgre映象執行後預設有乙個postgres使用者 sudo postgres 切換到postgres使用者 在shell中執行 psql命令進入資料庫終端 建立使用者 create usernamewith password password superuser create...
postgres中的中文分詞zhparser
基本查了下網路,postgres的中文分詞大概有兩種方法 其中的bamboo安裝和使用都比較複雜,所以我選擇的是zhparser scws是簡易中文分詞系統的縮寫,它的原理其實很簡單,基於詞典,將文字中的內容按照詞典進行分詞,提取關鍵字等。github上的位址在這裡。它是xunsearch的核心分詞...
postgres中的中文分詞zhparser
基本查了下網路,postgres的中文分詞大概有兩種方法 其中的bamboo安裝和使用都比較複雜,所以我選擇的是zhparser scws是簡易中文分詞系統的縮寫,它的原理其實很簡單,基於詞典,將文字中的內容按照詞典進行分詞,提取關鍵字等。github上的位址在這裡。它是xunsearch的核心分詞...