閱讀下列說明,回答問題1至問題4,將解答填入答題紙的對應欄內。
【說明】
某論壇的部分關系模式如下:
用戶(用戶編號,帳號,密碼,積分,級別)
欄目(欄目編號,父欄目編號,名稱,版主,描述)
主題(主題編號,標題,類型,點擊率,內容,發(fā)布時間,欄目編號,用戶編號,附件)
回復主題(回復主題編號,標題,主題編號,內容,發(fā)布時間,用戶編號,附件)
其中:
(1)用戶編號唯一標識一個用戶。用戶的積分根據其發(fā)布的主題信息按積分規(guī)則計算。級別的值來自集合{‘高級用戶’, 普通用戶’, ‘初級用戶’},當用戶開始注冊時,積分為100,級別為初級用戶;當用戶積分到達1000時,級別為普通用戶;當用戶積分到達5000時,級別為高級用戶。
(2)欄目編號唯一標識一個欄目。欄目分兩級,包括父欄目和子欄目。每個欄目必須有且僅有一個版主,版主是一個用戶。
(3)主題編號唯一標識一個主題。類型的值來自集合{ ‘精華’, ‘置頂’, ‘普通’}。
(4)回復主題編號唯一識別一個回復主題。一個回復主題對應一個主題,而一個主題可以有多個回復主題。
【問題1】
請將下列SQL語句的空缺部分補充完整。
(1)假設已經創(chuàng)建好用戶關系,現在想增加一個屬性“個性簽名” ,類型為VARCHAR(60),請給出相關的SQL語句。
(a) ;
(2)假設已經創(chuàng)建好用戶關系,下面是創(chuàng)建欄目關系的SQL語句,請將空缺部分補充完整。
CREATE TABLE 欄目(
欄目編號 VARCHAR(8) PRIMARY KEY,
父欄目編號 VARCHAR(8),
名稱 VARCHAR(40),
版主 VARCHAR(8) NOT NULL,
描述 VARCHAR(100),
(b) ,
(c) );
【問題2】
請將下列SQL語句的空缺部分補充完整。
(1)查詢標題或內容包含“SQL”的主題標題,按發(fā)布時間降序排序。
SELECT DISTINCT 標題
FROM 主題
(d)
(e) ;
(2)查找名稱為“數據庫技術”的欄目及其子欄目中的精華主題的標題和點擊率。
SELECT 標題,點擊率
FROM 主題
WHERE 類型= ‘ 精華’
AND 欄目編號 (f) (SELECT 欄目編號
FROM 欄目
WHERE 名稱= ‘數據庫技術’
(q)
SELECT 欄目編號
FROM 欄目
WHERE (h) (SELECT 欄目編號
FROM 欄目
WHERE 名稱=‘ 數據庫技術’ ));
【問題3】
假設所有關系模式已創(chuàng)建,回復主題關系模式的“主題編號”是外鍵,參照主題關系模式的“主題編號” ?,F在要刪除編號為“T005”的主題及其相關的回復主題,下面是對應的刪除語句,這些語句組成一個事務。
DELETE 主題 WHERE 主題編號 = ‘T005 ’;
DELETE 回復主題 WHERE 主題編號= ‘T005’;
(1)請問這些刪除語句能否完成功能?若不能,請說明為什么?(100字以內)
(i)
(2)假設現在希望僅通過“DELETE 主題 WHERE 主題編號 = ‘ T005’ ;”這一條語句就能完成此刪除功能,應如何實現? (100字以內)
(j)
【問題4】
為了了解每個欄目用戶關注的主題,對原創(chuàng)主題創(chuàng)建視圖主題_view,屬性包括主題編號、標題、用戶帳號、欄目名稱、回復數、點擊率和發(fā)布時間。
CREATE VIEW 主題_view (主題編號,標題,用戶帳號,欄目名稱,回復數,點擊率,發(fā)布時間) AS SELECT 主題.主題編號,標題,帳號,名稱,回復數,點擊率,發(fā)布時間
FROM 主題,用戶,欄目, ( (k)
FROM 回復主題
(l) ) AS A
WHERE 主題.用戶編號=用戶.用戶編號 AND 主題.欄目編號=欄目.欄目編號 AND (m) ;