题库 题库

【简答题】

试题二(共15分)
    阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】某论坛的部分关系模式如下:
    用户(用户编号,帐号,密码,积分,级别)
    栏目(栏目编号,父栏目编号,名称,版主,描述)
    主题(主题编号,标题,类型,点击率,内容,发布时间,栏目编号,用户编号,附件)
    回复主题(回复主题编号,标题,主题编号,内容,发布时间,用户编号,附件)
    其中:
  (1)用户编号唯一标识一个用户。用户的积分根据其发布的主题信息按积分规则计算。级别的值来自集合{ ‘高级用户’, ‘普通用户’, ‘初级用户’},当用户开始注册时,积分为100,级别为初级用户;当用户积分到达1000时,级别为普通用户;当用户积分到达5000时,级别为高级用户。
  (2)栏目编号唯一标识一个栏目。栏目分两级,包括父栏目和子栏目。每个栏目必须有且仅有一个版主,版主是一个用户。
  (3)主题编号唯一标识一个主题。类型的值来自集合{ ‘精华’, ‘置顶’, ‘普通’}。
  (4)回复主题编号唯一识别一个回复主题。一个回复主题对应一个主题,而一个主题可以有多个回复主题。
【问题1】(3分)
    请将下列SQL语句的空缺部分补充完整。
    (1)假设已经创建好用户关系,现在想增加一个属性“个性签名”,类型为VARCHAR(60),请给出相关的SQL语句。
    _____(a)_____;
    (2)假设已经创建好用户关系,下面是创建栏目关系的SQL语句,请将空缺部分补充完整。
    CREATE TABLE 栏目(
        栏目编号 VARCHAR(8) PRIMARY KEY,
        父栏目编号 VARCHAR(8),
        名称 VARCHAR(40),
        版主 VARCHAR(8) NOT NULL,
        描述 VARCHAR(100),
        _____(b)_____,
        _____(c)_____);
【问题2】(5分)
    请将下列SQL语句的空缺部分补充完整。
    (1)查询标题或内容包含“SQL”的主题标题,按发布时间降序排序。
    SELECT DISTINCT 标题
    FROM 主题
    _____(d)_____
    _____(e)_____;
    (2)查找名称为“数据库技术”的栏目及其子栏目中的精华主题的标题和点击率。
    SELECT 标题,点击率
    FROM 主题
    WHERE类型= ‘精华’
        AND 栏目编号  _____(f)_____ (SELECT栏目编号
                    FROM 栏目
                    WHERE 名称= ‘数据库技术’
                    _____(g)_____
                    SELECT 栏目编号
                    FROM 栏目
                    WHERE _____(h)_____ (SELECT栏目编号
                                    FROM 栏目
                                    WHERE 名称=‘数据库技术’));
【问题3】(4分)
    假设所有关系模式已创建,回复主题关系模式的“主题编号”是外键,参照主题关系模式的“主题编号”。现在要删除编号为“T005”的主题及其相关的回复主题,下面是对应的删除语句,这些语句组成一个事务。
    DELETE 主题 WHERE主题编号 = ‘T005’;
    DELETE 回复主题 WHERE主题编号= ‘T005’;
    (1)请问这些删除语句能否完成功能?若不能,请说明为什么?(100字以内)
    _____(i)_____
    (2)假设现在希望仅通过“DELETE 主题 WHERE主题编号 = ‘T005’;”这一条语句就能完成此删除功能,应如何实现? (100字以内)
    _____(j)_____
【问题4】(3分)
    为了了解每个栏目用户关注的主题,对原创主题创建视图主题_view,属性包括主题编号、标题、用户帐号、栏目名称、回复数、点击率和发布时间。
    CREATE VIEW 主题_view (主题编号,标题,用户帐号,栏目名称,回复数,点击率,发布时间) AS
    SELECT主题.主题编号,标题,帐号,名称,回复数,点击率,发布时间
    FROM 主题,用户,栏目,(  _____(k)_____
                              FROM 回复主题
                              _____(l)_____ ) AS  A
    WHERE 主题.用户编号 = 用户.用户编号 AND 主题.栏目编号 = 栏目.栏目编号 AND  _____(m) _____ ;

参考答案

相关试题