3.15 考虑图3-19中的银行数据库,其中加下划线的是主码。为这个关系数据库构造出如下SQL查询:
a.找出在"Brooklyn"的所有支行都有账户的所有客户。
这个银行数据库咱们在习题3.8中已经创建了。当时咱们创建的所有支行数据所在地都是北京。这样题目中提到的所在地咱们使用北京。
这样我们先找出在北京的某个支行有账户的所有客户:
select customer_name, branch_name from depositor
natural join account natural join branch
where branch_city = '北京';
结果如下:
customer_name | branch_name
---------------+-------------
客户_1 | 银行支行_1
客户_1 | 银行支行_2
客户_2 | 银行支行_3
客户_3 | 银行支行_3
客户_4 | 银行支行_4
客户_5 | 银行支行_1
客户_6 | 银行支行_1
客户_7 | 银行支行_4
客户_8 | 银行支行_4
(9 rows)
从上面结果看,没有任何客户拥有北京的所有支行的账户,这样为了后面能有查询结果,我们给客户_1在银行支行_3, 4分别再创建两个账户吧:
insert into account values ('账户_10', '银行支行_3');
ins