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