PostgreSQL如何去重,如何获知一张表的隐藏属性(字段)

前端之家收集整理的这篇文章主要介绍了PostgreSQL如何去重,如何获知一张表的隐藏属性(字段)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Postgresql中如何获知一张表的隐藏属性(字段)

1.创建一张表test_hide_attr,通过这张表获知Postgresql表的隐藏属性

1
2
test_zqs=# create table test_hide_attr(hideint4);
CREATE TABLE

2.查询Postgresql的系统表pg_class,该表存储数据库对象信息,如表、视图、索引等。一个元组存储一个数据库对象信息,并且每一个都会被分配一个oid作为唯一标识,该oid将作为该元组的一个隐藏属性存储。其中relname字段代表数据库对象的名称

1
2
3
4
5
test_zqs=# select oid,relname from pg_class where relname= 'test_hide_attr' ;
oid|relname
-------+----------------
17168|test_hide_attr
(1row)

3.查询系统表pg_attribute,该表用来存储表的属性信息,包括隐藏属性,一个属性对应一个元组。其中,attrelid代表属性所属表的oid,而attname则代表属性名称

@H_403_164@
1
2
3
4
5
6
7
8
9
10
11
test_zqs=# select attrelid,attname from pg_attribute where attrelid=17168;
attrelid|attname
----------+----------
17168|cmax
17168|cmin
17168|ctid
17168|hide
17168|tableoid
17168|xmax
17168|xmin
(7 rows )

4.对表test_hide_attr,实际用户仅创建了hide字段,其余字段均为该表的隐藏字段。

1
2
3
4
5
6
7
8
9
test_zqs=#\dtest_hide_attr
Table "public.test_hide_attr"
Column |Type|Modifiers
--------+---------+-----------
hide| integer |
test_zqs=# select tableoid from test_hide_attr;
tableoid
----------
(0 rows )

5.查看表隐藏属性tableoidpg_class隐藏属性oidpg_attribute属性attrelid三者之间是相同的(对同一张表来说)

1
2
3
4
5
6
7
test_zqs=# insert into test_hide_attr values (1);
INSERT 01
test_zqs=# select cmax,cmin,ctid,hide,tableoid,xmax,xmin from test_hide_attr;
cmax|cmin|ctid|hide|tableoid|xmax|xmin
------+------+-------+------+----------+------+------
0|0|(0,1)|1|17168|0|2260
(1row)

下面,对表的隐藏属性所代表的含义做了些整理,见下文



@H_539_502@delete from emp a
where a.ctid <>
(
select min(b.ctid) from emp b
where a.id = b.id
);

原文链接:https://www.f2er.com/postgresql/195699.html

猜你在找的Postgre SQL相关文章