PostgreSQL附带了一个命令 - COMMENT 。如果想要记录数据库中的内容,这个命令很有用。本文将介绍如何使用此命令。
随着数据库的不断发展和数据关系变得越来越复杂,跟踪数据库中添加的所有内容会变得非常困难。要记录数据的组织方式以及可能随时间添加或更改的组件,有必要添加某种文档。
例如,文档可以写在外部文件中,但这会产生一种问题,他们很快就会变为过时的文件。PostgreSQL有一个解决这个问题的方法:COMMENT命令。使用它可以向各种数据库对象添加注释,例如在需要时更新的列,索引,表和函数。
查看数据和添加注释
PostgreSQL的psql交互式shell包含许多强大的命令来查看和操作数据。\d命令会显示所有可见表,视图,物化视图,序列和外部表的列表。还有几种\d命令的组合可用于指定是否要查看索引,映射,约束等。结合+(例如\d+),该命令将为您提供对象的扩展视图,包含一个描述列,这是文档或COMMENT编写的位置。
COMMENT命令是我们将数据描述添加到数据库对象的方法。不要将COMMENT与\ * * \或 SQL中的 -- 相混淆,因为它们是在SQL文件中编写的,在数据"htmlcode">
postgres=# \d+ List of relations Schema | Name | Type | Owner | Size | Description --------+------------------+---------------+----------+------------+--------------- public | commenttest | table | postgres | 8192 bytes |
由于commenttest是一个刚刚创建的新表,因此Description列为空。可以通过以下命令添加注释:
postgres=# COMMENT ON TABLE commenttest IS 'A table of students in different departments'; COMMENT
现在再次运行\d+,可以看到描述列填充了注释。
postgres=# \d+ List of relations Schema | Name | Type | Owner | Size | Description --------+------------------+---------------+----------+------------+--------------- public | commenttest | table | postgres | 8192 bytes | A table of students in different departments
这是向表中添加描述信息的步骤。 接着,我们需要考虑如何向表的列中添加描述。
要查看表中每个列的描述列,可以运行类似以下命令:
postgres=# \d+ commenttest Table "public.commenttest" Column | Type | Collation | Nullable | Default | Storage | Stats target | Description -----------------+---------+-----------+----------+---------+----------+--------------+------------- student_id | integer | | | | plain | | student_name | text | | | | extended | | student_major | text | | | | extended | | department_id | integer | | | | plain | | department_name | text | | | | extended | | nationality | text | | | | extended | |
为每列添加描述与我们在表中添加一个列的方式类似。例如:
postgres=# COMMENT ON COLUMN commenttest.student_id IS 'ID of the student'; COMMENT postgres=# COMMENT ON COLUMN commenttest.student_name IS 'name of the student'; COMMENT postgres=# COMMENT ON COLUMN commenttest.student_major IS 'major of the student'; COMMENT postgres=# COMMENT ON COLUMN commenttest.department_id IS 'ID of the department'; COMMENT postgres=# COMMENT ON COLUMN commenttest.department_name IS 'name of the department'; COMMENT postgres=# COMMENT ON COLUMN commenttest.nationality IS 'nationality of the student'; COMMENT
添加描述后,再次查看表的描述列信息:
postgres=# \d+ commenttest Table "public.commenttest" Column | Type | Collation | Nullable | Default | Storage | Stats target | Description -----------------+---------+-----------+----------+---------+----------+--------------+---------------------------- student_id | integer | | | | plain | | ID of the student student_name | text | | | | extended | | name of the student student_major | text | | | | extended | | major of the student department_id | integer | | | | plain | | ID of the department department_name | text | | | | extended | | name of the department nationality | text | | | | extended | | nationality of the student
可以看到描述列已经添加好相应注释。这样添加过注释之后,名字复杂且难懂的列名就能让最终用户比较容易理解且不会产生歧义。
我们也可以使用类似的方式向索引中添加描述,这样在数据库使用过程中,可以防止由于索引数量的增加而导致的混淆和歧义问题。
而且如果使用pg_dump迁移PostgreSQL数据库,则使用COMMENT进行的任何注释都会存储在转储文件中。
补充:给postgresql数据库的表和列添加注释(comment)
postgresql 数据库国内用的人并不是很多,而一些老项目采用了这个数据库。维护起来特别麻烦,因为国内用的人比较少,相关资料也很少。
另外还有一些函数,postgresql 也没有对应的提供。还有对于表分区,低版本的 postgresql 数据库根本都没有这个功能,不支持。需要自己自动的创建表进行分区。
总之 postgresql 数据库用起来实在是太过麻烦,本文总结了一些给 postgresql 数据库的表和列添加注释的方法,方便已经采用 postgresql 数据库而不得不用的程序员。
首先说给表添加注释:
comment on table xttblog is '业余草';
其中 xttblog 是表名,添加的注释是“业余草”。
给列添加注释的方法如下:
create table xttblog(id int not null, url_id int); comment on column xttblog.id is '主键ID,自增';
注意创建表的时候,不能再列后面加 comment 。添加后执行会报错,因为这是 MySQL,Oracle的用法,不是 Postgresql 的用法。
下面再说说如何查询表中的注释。sql 语句如下:
select description from pg_descriptionjoin pg_class on pg_description.objoid = pg_class.oid where relname = 'xttblog'
其中以 pg_ 开头的表都是 Postgresql 数据库的系统表。系统表中存储着很多与表和配置相关的信息。
PostgreSQL 获取数据表的注释信息和表中字段的注释信息和上面的 SQL 类似。
和表相关的信息都在 pg_description 这个表中,查 pg_description 这个系统表,里面有存表和字段的备注。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]