图形化界面:datagrip
pgsql版本:12
一个人员表和两个子表:员工表和顾客表,它们通过继承来自父表的属性和功能。
CREATE TABLE person ( id SERIAL PRIMARY KEY, name VARCHAR(100), age INTEGER ); CREATE TABLE employee ( salary DECIMAL(10, 2), department VARCHAR(100) ) INHERITS (person); CREATE TABLE customer ( email VARCHAR(100), address VARCHAR(200) ) INHERITS (person);
添加测试数据
INSERT INTO employee (name, age, salary, department) VALUES ('员工', 30, 5000.00, 'IT'); INSERT INTO customer (name, age, email, address) VALUES ('顾客', 25, '123@123.com', 'xxx,xx地址');
查询人员表
SELECT * FROM person;
查询父表会把所有子表的数据也查出来(父表的字段,不会查出子表独有字段)
=>添加only关键字只查询当前表数据
查询子表
SELECT * FROM employee;
子表会直接继承父表的所有字段(继承的字段存储在子表中)
salary和department是employee子表的独有字段,其他字段均继承自父表
优点总结:
-
代码重用:通过继承,可以在整个继承层次结构中共享和重用代码。在父表上定义的函数、触发器和约束等可以在子表上自动继承和使用,提高了编程的效率和代码的可维护性。
-
数据一致性:继承保证了父表和子表之间的数据一致性。通过继承关系,可以确保子表的数据始终与父表保持同步,减少了数据冗余和错误。
-
查询灵活性:继承允许在整个继承层次结构上进行查询操作,从而提供了更灵活的查询选项。可以在父表上执行查询,同时自动包含子表的数据,或者只在子表上执行特定条件的查询。