1. 程式人生 > >第3章 SQL 習題 - 3.13、3.14

第3章 SQL 習題 - 3.13、3.14

3.13 寫出對應於圖3-18中模式的SQL DDL。在資料型別上做合理的假設,確保宣告主碼和外碼。

可以參考習題3.4.

3.14 考慮圖3-18中的保險公司資料庫,其中加下劃線的是主碼。對這個關係資料庫構造如下的SQL查詢:

a.找出和"John Smith"的車有關的交通事故數量。

在做習題3.4的時候,我們插入自己的資料,基本上是一人一輛車,我們現在找出和“張三”的車有關的交通事故數量吧。

select count(*) from participated where licence in (
	select licence from person natural join owns
	where name = '張三'
);
 count 
-------
     1
(1 row)

b.對事故報告編號為"AR2197"中的車牌是“AABB2000”的車輛損壞保險費用更新到3000美元。

這裡事故編號是varchar型別的,我們設計的時候用的是int型的,這樣按照我們的資料,把題目修改為更新事故編號為1的車牌為1的費用更新到3000元。

我們先來看看它之前的費用是多少:

select * from participated where (report_number, licence) = (1, 1);
 report_number | licence | driver_id | damage_amount 
---------------+---------+-----------+---------------
             1 |       1 |         1 |          1000
(1 row)

原來費用是1000,現在更新到3000:

update participated set damage_amount = 3000 where (report_number, licence) = (1, 1);

再看看更新後的費用:

 report_number | licence | driver_id | damage_amount 
---------------+---------+-----------+---------------
             1 |       1 |         1 |          3000
(1 row)