详解PostgreSQL中的继承

    科技2022-07-12  136

    Inheritance是PostgreSQL独有的,也是前文中我们提到的“使用面向对象的思想来组织数据库”的具体体现之一。

    一, 表的继承。 这里我们使用官网说明中的例子,原文在这里: inheritance

    CREATE TABLE cities ( name text, population real, elevation int – (in ft) ); CREATE TABLE capitals ( state char(2) ) INHERITS (cities);

    省会其实也是城市,只是比普通的城市多了一个state,表明是哪个省的省会。在上例中capitals表继承了cities表中的所有字段。In PostgreSQL, a table can inherit from zero or more other tables.

    INSERT INTO cities VALUES (‘洛阳’,1500, 50); INSERT INTO cities VALUES (‘开封’,1000, 50); INSERT INTO capitals VALUES (‘郑州’,2000, 50, ‘HN’);

    假设有洛阳,郑州和开封三个城市,其中郑州是省会城市。由上面可见,插入数据时只需要向capitals插入郑州的数据即可。根据面向对象的思想,我们可以认为表中的每一行就是一个实例化后的对象,而郑州只应该被实例化一次。此时查看表中的数据:

    SELECT * FROM cities; “name” “

    Processed: 0.014, SQL: 8