postgreSQL 命令语句学习

发布于:2023-01-04 ⋅ 阅读:(321) ⋅ 点赞:(0)

1.postgreSQL允许向表等对象添加注释

如何查询表的注释,可以使用函数obj_description()

1.col_description(table_oid, column_number)

描述:获取一个表字段的注释

返回类型:text

备注:col_description返回一个表中字段的注释,通过表OID和字段号来声明。

OID:为了在系统中能够找到所需对象,我们需要为每一个对象分配一个唯一的表示号。在关系数据库中我们称之为关键字,而在对象术语中,则叫做对象标识(Object identifier-OID).一般把oid作为数据库中的主键,是对象的唯一标识

2.obj_description(object_oid, catalog_name)
描述:获取一个数据库对象的注释

返回类型:text

备注:带有两个参数的obj_description返回一个数据库对象的注释,该对象是通过其OID和其所属的系统表名称声明。比如,obj_description(123456,'pg_class')将返回OID为123456的表的注释。只带一个参数的obj_description只要求对象OID。

obj_description不能用于表字段,因为字段没有自己的OID。

3.shobj_description(object_oid, catalog_name)
描述:获取一个共享数据库对象的注释

返回类型:text

备注:shobj_description和obj_description差不多,不同之处仅在于前者用于共享对象。一些系统表是通用于GBase 8c中所有数据库的全局表,因此这些表的注释也是全局存储的
relname=relation name        pg_class:面向对象编程中的抽象的概念(?)

CAST():

MySQL中的函数将任何类型的值转换为具有指定类型的值。

CAST(...   as  ...)    ...    as    ...

"||":

字符串连接运算符,不能将null连接到字符串

'pilot'  || null 会return null;

for update

锁定你查出来这些行,别的会话不能修改,只有当前会话提交(回滚)后,或当前会话结束事,别的会话才可以修改,一般会造成线程等待,死锁的发生;

更理想的做法是:

1.通过下例的of关键字仅对医嘱表有关行锁定,既实现了防止重复操作,又避免了不必要的问题。业务场景要求必须对其他涉及表进行锁定的情况除外。

2.为for update添加一个约定执行条件,有效防止不必要的行锁定。

本文含有隐藏内容,请 开通VIP 后查看