閱讀下列說明,回答問題 1 至問題 4,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。
【說明】某工程項(xiàng)目公司的信息管理系統(tǒng)的部分關(guān)系模式如下:
職工(職工編號(hào),姓名,性別,居住城市)
項(xiàng)目(項(xiàng)目編號(hào),項(xiàng)目名稱,狀態(tài),城市,負(fù)責(zé)人編號(hào))
職工項(xiàng)目(職工編號(hào),項(xiàng)目編號(hào))
其中:
(1)一個(gè)職工可以同時(shí)參與多個(gè)項(xiàng)目,一個(gè)項(xiàng)目需要多個(gè)職工參與
(2)職工的居住城市與項(xiàng)目所在城市來自同一個(gè)域
(3)每個(gè)項(xiàng)目必須有負(fù)責(zé)人,且負(fù)責(zé)人為職工關(guān)系中的成員
(4)項(xiàng)目狀態(tài)有兩個(gè):0 表示未完成,1 表示已完成
【問題1】
下面是創(chuàng)建職工關(guān)系的 SQL 語句,職工編號(hào)唯一識(shí)別一個(gè)職工,職工姓名不能為空。
請(qǐng)將空缺部分補(bǔ)充完整。
CREATE TABLE 職工(
職工編號(hào) CHAR(6),
姓名 CHAR(8) (a) ,
性別 CHAR(2),
城市 VARCHAR(20),
PRIMARY KEY (b) );
【問題2】
下面是創(chuàng)建項(xiàng)目關(guān)系的 SQL 語句。請(qǐng)實(shí)現(xiàn)相關(guān)的完整性約束。
CREATE TABLE 項(xiàng)目(
項(xiàng)目編號(hào) CHAR(6),
項(xiàng)目名稱 VARCHAR(20),
狀態(tài) CHAR(1) CHECK (c) ,
城市 VARCHAR(20),
負(fù)責(zé)人編號(hào) CHAR(6) (d) ,
FOREIGN KEY (e) REFERENCES (f) );
【問題3】
請(qǐng)完成下列查詢的 SQL 語句。
(1)查詢至少參加兩個(gè)項(xiàng)目的職工編號(hào)和參與的項(xiàng)目數(shù)。
SELECT 職工編號(hào), (g)
FROM 職工項(xiàng)目
GROUP BY (h)
HAVING (i) ;
(2)查詢參與居住城市正在進(jìn)行的工程項(xiàng)目的職工工號(hào)和姓名。
SELECT 職工.職工編號(hào), 姓名
FROM 職工, 職工項(xiàng)目, 項(xiàng)目
WHERE 職工.職工編號(hào) = 職工項(xiàng)目.職工編號(hào) AND 項(xiàng)目.項(xiàng)目編號(hào) = 職工
項(xiàng)目.項(xiàng)目編號(hào) AND (j) AND (k) ;
【問題4】
假設(shè)項(xiàng)目編號(hào)為“P001”的項(xiàng)目負(fù)責(zé)人李強(qiáng)(其用戶名為 U1)有對(duì)參與該項(xiàng)目的職工進(jìn)行查詢的權(quán)限。下面是建立視圖 emp 和進(jìn)行授權(quán)的 SQL 語句,請(qǐng)將空缺部分補(bǔ)充完整。
(1)CREATE VIEW (l)
AS SELECT 職工編號(hào), 姓名, 性別, 城市
FROM 職工
WHERE 職工編號(hào) IN ( SELECT (m)
FROM 職工項(xiàng)目
WHERE (n) )
WITH CHECK OPTION;
(2)GRANT (o) ON emp TO U1;