PG数据库--表继承

一、表继承

  1. 父表与子表的关系,表访问权限并不会自动继承。
  2. 当在父表上查询数据的时候,想要知道那些出自于主表,哪些出自于继承表。可以利用tableoid,来标识数据来自于那一个表,然后再通过tableoid在pg_class表中找到对用的表 。
  3. postgresql里,一个表可以从零个或者多个其它表中继承属性,而且一个查询既可以引用一个表中的所有行,也可以引用一个表及其所有后代表的行。
  4. 子表会继承父表的所有属性
  5. 当我们向子表中插入数据的时候,父表中也会增加一条数据。
  6. 所有父表的检查约束和非空约束都会自动被子表继承。不过其他类型的约束(唯一,主键,外键约束)不会被继承。继承的一个严重局限性是索引(包括唯一约束)和外键约束只能用于单个表,而不能包括他们的子表。
  7. 如果需要继承主键和约束条件,索引等,则需要在创建的时候加上Including all 
  8. create table md_table_01(like md_table including all) inherits (md_table);
  9. 表继承通常使用 inherits 子句的 create table语句定义。
  10. 一个继承链可以使用带 no inherit 的 alter table 命令从子表上删除。
  11. alter table md_table_01 no inherit md_table;
  12. 任何存在子表的父表都不能被删除,子表中任何从父表继承的字段或约束也不能被删除或修改。
  13. 删除一个表以及其所有后代,最简单的方式是使用cascade选项删除父表。
 drop table md_table cascade;

二、ddl

        1、继承案例

父表:
CREATE TABLE
    ods_v2_yy_01_z82remrsd2
    (
        id CHARACTER VARYING(32) NOT NULL,
        mm_id CHARACTER VARYING(32) NOT NULL,
        md_name CHARACTER VARYING(64) NOT NULL,
        alias_md_name CHARACTER VARYING(128) NOT NULL,
        dw_md_name CHARACTER VARYING(63) NOT NULL,
        md_type CHARACTER VARYING(32) NOT NULL,
        md_attr CHARACTER VARYING(32),
        CONSTRAINT pk_v2_yy_01_z82rgvsefn PRIMARY KEY (id)
    );

子表:
create table ods_v2_yy_01_z82remrsd2_2021(like ods_v2_yy_01_z82remrsd2) inherits(ods_v2_yy_01_z82remrsd2);
create table ods_v2_yy_01_z82remrsd2_2022(like ods_v2_yy_01_z82remrsd2) inherits(ods_v2_yy_01_z82remrsd2);
create table ods_v2_yy_01_z82remrsd2_2023(like ods_v2_yy_01_z82remrsd2) inherits(ods_v2_yy_01_z82remrsd2);

        2.只查询父表的数据,表名前面加only

select * from ods_v2_yy_01_z82remrsd2 where id>10

        3. 查询全部,可以在表名加上*,也可以不加,不过写在表后面 写 乘号可以用于强调搜索额外的表。

select name,altitude from ods_v2_yy_01_z82remrsd2* where id>500;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值