使用PostgreSQL为表或视图创建备注的操作

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,cast(obj_description(relfilenode,'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,
cast(obj_description(relfilenode,'pg_class') as varchar) as comment from pg_class c
where relname ='表名';

查看特定表名字段

select a.attnum,a.attname,concat_ws('',t.typname,SUBSTRING(format_type(a.atttypid,a.atttypmod) from '.∗')) as type,d.description from pg_class c,pg_attribute a,pg_type t,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;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • 对Postgresql中的json和array使用介绍

    结合近期接触到的知识点,做了一个归纳.会持续更新 json 官网文档 http://www.postgres.cn/docs/12/datatype-json.html json的两种格式 总结:json输入快,处理慢.是精准拷贝,所以能准确存储遗留对象的原格式,如对象键顺序.jsonb输入慢,处理快.会被重新解析成json数据,不保存原对象的键顺序,并且去重相同的键值,以最后一个为准.通常,除非有特别特殊的需要(例如遗留的对象键顺序假设),大多数应用应该 更愿意把 JSON 数据存储为json

  • PostgreSQL 实现查询表字段信息SQL脚本

    查询格式: SELECT c.relname 表名称, A.attname AS 字段名称, col_description(A.attrelid,A.attnum) AS 注释, format_type ( A.atttypid, A.atttypmod ) AS 类型, CASE WHEN A.attnotnull='f' THEN '否' ELSE '是' END AS 是否必填, a.attnum 序号 FROM pg_class AS c, pg_attribute AS a WHER

  • PostgreSQL 定义返回表函数的操作

    本文我们学习如何在PostgreSQL 开发返回表函数. 示例数据表 我们使用的示例数据库表为film,如下图所示: 示例1 第一个函数发挥所有满足条件film表记录,这里使用ilike操作,和like类似,但不区分大小写: CREATE OR REPLACE FUNCTION get_film (p_pattern VARCHAR) RETURNS TABLE ( film_title VARCHAR, film_release_year INT ) AS $$ BEGIN RETURN QU

  • 启动PostgreSQL服务器 并用pgAdmin连接操作

    如果需要启动PostgreSQL数据库,可进入PostgreSQL的安装目录,在cmd窗口下执行:pg_ctl.exe start -D ..\data . 即可重新启动服务 . 执行结果如下图: 补充:PostgreSQL - pgAdmin4远程连接数据库 前言 PostgreSQL在安装的时候自带的pgAdmin这个可视化工具,自从将PostgreSQL9升级到了10版本后,自带的pgAdmin也从3升级到了4版本.pgAdmin4的变化非常巨大,刚接触时一脸懵逼,这里记录下怎么用pgAd

  • 如何获取PostgreSQL数据库中的JSON值

    在PostgreSQL数据库中有一列为JSON,要获取JSON中得数据可以用下面sql: select orderno as OrderNo ,amount as Amount ,ordertime as OrderTime , recordtype as RecordType from jsonb_to_recordset(( --特定方法 select array_to_json(array_agg(data)) --转换成一个数组 from wallet_details where id

  • postgresql数据库安装部署搭建主从节点的详细过程(业务库)

    操作系统 64位CentOS 7 数据库搭建 一 业务数据库搭建 1. 安装 yum源(服务器可访问互联网时用) yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm 2. 安装客户端 yum install postgresql11 –y 3. 安装服务端 yum install postgresql11-serve

  • PostgreSQL批量update与oracle差异详解

    上篇文章给大家介绍了PostgreSQL实现批量插入.更新与合并操作的方法 感兴趣的朋友可以点击查看,今天给大家分享PostgreSQL批量update与oracle差异,具体内容如下所示: 当我们在数据库中有这样的需求时: 需要以某列的当前值为判断对象,将其更新成其它值. 例如下面一张表: ID INFO ---------- ---------- 2 a 1 b 3 c 4 d 5 e 我们最简单的方式就是通过多个update来完成: update t1 set id= 2 where id

  • 解决postgresql表中的字段名称包含特殊符号的问题

    在创建postgresql表的时候,由于字段中包含了"()"这种特殊字符,导致创建表的时候报错. 解决方法: 给包含特殊字符的字段加上双引号"",再进行创建表即可 例如: create table freighttransport_tab ( id serial, 日期 TEXT, "重量(公斤)" TEXT ) 此时"重量(公斤)"字段包含特殊符号(),创建表时,在sql语句中对该字段添加双引号即可. 补充:PostgreS

  • 使用PostgreSQL为表或视图创建备注的操作

    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 colum

  • PostgreSQL更新表时时间戳不会自动更新的解决方法

    PostgreSQL更新表时时间戳不会自动更新的解决方法,具体如下 操作系统:CentOS7.3.1611_x64 PostgreSQL版本:9.6 问题描述 PostgreSQL执行Insert语句时,自动填入时间的功能可以在创建表时实现,但更新表时时间戳不会自动自动更新. 在mysql中可以在创建表时定义自动更新字段,比如 : create table ab ( id int, changetimestamp timestamp NOT NULL default CURRENT_TIMEST

  • SQLite教程(三):数据表和视图简介

    一.创建数据表: 该命令的语法规则和使用方式与大多数关系型数据库基本相同,因此我们还是以示例的方式来演示SQLite中创建表的各种规则.但是对于一些SQLite特有的规则,我们会给予额外的说明.注:以下所有示例均是在sqlite自带命令行工具中完成的. 1). 最简单的数据表:   复制代码 代码如下: sqlite> CREATE TABLE testtable (first_col integer); 这里需要说明的是,对于自定义数据表表名,如testtable,不能以sqlite_开头,因

  • PostgreSQL 复制表的 5 种方式详解

    目录 CREATE TABLE AS SELECT 语句 CREATE TABLE LIKE 语句 CREATE TABLE AS TABLE 语句 SELECT INTO 语句 CREATE TABLE INHERITS 语句 PostgreSQL 提供了多种不同的复制表的方法,它们的差异在于是否需要复制表结构或者数据. CREATE TABLE AS SELECT 语句 CREATE TABLE AS SELECT 语句可以用于复制表结构和数据,但是不会复制索引. 我们可以使用以下语句基于

  • SQL Server如何设置用户只能访问特定数据库和访问特定表或视图

    目录 前言 1.设置用户只能查看数据库中特定的视图或表 2.设置用户只能看到特定的数据库 总结 前言 在实际业务场景我们可能需要开放单独用户给第三方使用,并且不想让第三方看到与业务不相关的表或视图,我们需要在数据库中设置一切权限来实现此功能: 1.设置用户只能查看数据库中特定的视图或表 1.创建用户名 选择默认数据库 服务器角色默认为public 用户映射选择指定数据库 打开需要开放权限的数据库,这里我们选择test库 新建查询: 对用户qqq分配 View_1视图 只有 只读select权限

  • jquery-mobile表单的创建方法详解

    本文实例讲述了jquery-mobile表单的创建方法.分享给大家供大家参考,具体如下: 一.注意事项 1. <form> 元素必须设置 method 和 action 属性 2. 每个表单元素必须设置唯一的 "id" 属性. 该 id 在站点的页面中必须是唯一的. 这是因为 jQuery Mobile 的单页面导航模型允许许多不同的"页面"同时呈现. 3. 每个表单元素必须有一个标记(label). 请设置 label 的 for 属性来匹配元素的 i

  • oracle表空间的创建及dmp 文件的导入(推荐)

    --用oracle系统权限的账号 登陆 -- 1.创建用户 create user u_name identified by "u_password"; --2.赋予权限 grant dba, resource, connect to u_name; grant create session to u_name; grant create table to u_name; grant create view to u_name; grant create tablespace to u

  • PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例

    本文实例讲述了PHP使用PDO创建MySQL数据库.表及插入多条数据操作.分享给大家供大家参考,具体如下: 创建 MySQL 数据库: <?php $servername = "localhost"; $username = "username"; $password = "password"; try { $conn = new PDO("mysql:host=$servername", $username, $pas

  • 解决django同步数据库的时候app models表没有成功创建的问题

    问题描述: 在django中创建了一个app,而且在app中自定义创建了几个数据表,在同步的时候系统自带的表可以成功,但是models中的没有生效,而且进入对应app下的migrations目录,发现为空,应该如何解决呢! 解决方式: python3 manage.py makemigrations --empty managerbook  # managerbook就是你的app名字,此处要写成自己的app名字 python3 manage.py makemigrations   # 再次正常

  • Laravel5.5 视图 - 创建视图和数据传递示例

    创建视图 视图包含应用的 HTML 代码,并将应用的控制器逻辑和表现逻辑进行分离.视图文件存放在 resources/views 目录中.下面是一个简单的视图示例: <!-- resources/views/greeting.blade.php 视图文件 --> <html> <body> <h1>Hello, {{ $name }}</h1> </body> </html> 可以通过辅助函数 view ,返回这个视图响应

随机推荐