加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 17:28:26 所属栏目:百科 来源:网络整理
导读:PostgreSQL中如何获知一张表的隐藏属性(字段) 1. 创建一张表 test_hide_attr ,通过这张表获知 PostgreSQL 表的隐藏属性。 1 2 test_zqs=# create table test_hide_attr(hideint4); CREATE TABLE 2. 查询 PostgreSQL 的系统表 pg_class ,该表存储数据库对

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则代表属性名称。

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)

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



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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读