使用PostgreSQL為表或檢視建立備註的操作
阿新 • • 發佈:2021-01-11
1 為表和列建立備註
drop table if exists test; create table test( objectid serial not null,num integer not null,constraint pk_test_objectid primary key (objectid),constraint ck_test_num check(num < 123 ),); comment on table test is '我是表'; comment on column test.objectid is '我是唯一主鍵'; comment on column test.num is '數量欄位'; comment on constraint pk_test_objectid on test is '我是約束,唯一主鍵'; comment on constraint ck_test_num on test is '我是約束,num欄位必須小於123'; \dS+ test;
2 為檢視和列建立備註
drop view if exists vtest; create or replace view vtest as select 1 as col1,'a' as col2,now() as col3; comment on view vtest is '檢視備註'; comment on column vtest.col1 is '第一列備註,integer型別'; comment on column vtest.col2 is '第二列備註,字元型別'; comment on column vtest.col3 is '第三列備註,日期時間型別';
3 comment語法
COMMENT ON { ACCESS METHOD object_name | AGGREGATE aggregate_name ( aggregate_signature ) | CAST (source_type AS target_type) | COLLATION object_name | COLUMN relation_name.column_name | CONSTRAINT constraint_name ON table_name | CONSTRAINT constraint_name ON DOMAIN domain_name | CONVERSION object_name | DATABASE object_name | DOMAIN object_name | EXTENSION object_name | EVENT TRIGGER object_name | FOREIGN DATA WRAPPER object_name | FOREIGN TABLE object_name | FUNCTION function_name [ ( [ [ argmode ] [ argname ] argtype [,...] ] ) ] | INDEX object_name | LARGE OBJECT large_object_oid | MATERIALIZED VIEW object_name | OPERATOR operator_name (left_type,right_type) | OPERATOR CLASS object_name USING index_method | OPERATOR FAMILY object_name USING index_method | POLICY policy_name ON table_name | [ PROCEDURAL ] LANGUAGE object_name | PUBLICATION object_name | ROLE object_name | RULE rule_name ON table_name | SCHEMA object_name | SEQUENCE object_name | SERVER object_name | STATISTICS object_name | SUBSCRIPTION object_name | TABLE object_name | TABLESPACE object_name | TEXT SEARCH CONFIGURATION object_name | TEXT SEARCH DICTIONARY object_name | TEXT SEARCH PARSER object_name | TEXT SEARCH TEMPLATE object_name | TRANSFORM FOR type_name LANGUAGE lang_name | TRIGGER trigger_name ON table_name | TYPE object_name | VIEW object_name } IS 'text' where aggregate_signature is: * | [ argmode ] [ argname ] argtype [,... ] | [ [ argmode ] [ argname ] argtype [,... ] ] ORDER BY [ argmode ] [ argname ] argtype [,... ]
注意:SQL 標準中沒有COMMENT命令。
補充:postgre 查詢註釋_PostgreSQL查詢表以及欄位的備註
查詢所有表名稱以及欄位含義
select c.relname 表名,cast(obj_description(relfilenode,'pg_class') as varchar) 名稱,a.attname 欄位,d.description 欄位備註,concat_ws('',t.typname,SUBSTRING(format_type(a.atttypid,a.atttypmod) from '.∗')) as 列型別 from pg_class c,pg_attribute a,pg_type t,pg_description d where a.attnum>0 and a.attrelid=c.oid and a.atttypid=t.oid and d.objoid=a.attrelid and d.objsubid=a.attnum and c.relname in (select tablename from pg_tables where schemaname='public' and position('_2' in tablename)=0) order by c.relname,a.attnum
檢視所有表名
select tablename from pg_tables where schemaname='public' and position('_2' in tablename)=0; select * from pg_tables;
查看錶名和備註
select relname as tabname,'pg_class') as varchar) as comment from pg_class c where relname in (select tablename from pg_tables where schemaname='public' and position('_2' in tablename)=0); select * from pg_class;
檢視特定表名備註
select relname as tabname,'pg_class') as varchar) as comment from pg_class c where relname ='表名';
檢視特定表名欄位
select a.attnum,a.attname,a.atttypmod) from '.∗')) as type,d.description from pg_class c,pg_description d where c.relname='表名' and a.attnum>0 and a.attrelid=c.oid and a.atttypid=t.oid and d.objoid=a.attrelid and d.objsubid=a.attnum;
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。如有錯誤或未考慮完全的地方,望不吝賜教。