阅读下列说明,回答问题1至问题4,将解答填入对应栏内。
【说明】
某论坛的部分关系模式如下:
用户(用户编号,账号,密码,积分,级别)
栏目(栏目编号,父栏目编号,名称,版主,描述)
主题(主题编号,标题,类型,点击率,内容,发布时间,栏目编号,用户编号,附件)
回复主题(回复主题编号,标题,主题编号,内容,发布时间,用户编号,附件)
其中:
(1)用户编号唯一标识一个用户。用户的积分根据其发布的主题信息按积分规则计算。级别的值来自集合{‘高级用户’,‘普通用户’,‘初级用户’},当用户开始注册时,积分为100,级别为初级用户;当用户积分到达1000时,级别为普通用户;当用户积分到达 5000时,级别为高级用户。
(2)栏目编号唯一标识一个栏目。栏目分两级,包括父栏目和子栏目。每个栏目必须有且仅有一个版主,版主是一个用户。
(3)主题编号唯一标识一个主题。类型的值来自集合{‘精华’,‘置顶’,‘普通’}。
(4)回复主题编号唯一识别一个回复主题。一个回复主题对应一个主题,而一个主题可以有多个回复主题。
【问题4】 为了了解每个栏目用户关注的主题,对原创主题创建视图主题view,属性包括主题编号、标题、用户账号、栏目名称、回复数、点击率和发布时间。 CREATE VIEW 主题 view(主题编号,标题,用户账号,栏目名称,回复数,点击率,发布时间)As SELECT主题.主题编号,标题,账号,名称,回复数,点击率,发布时间 FROM主题,用户,栏目,( (k) FROM回复主题 (l) )As A WHERE主题.用户编号=用户.用户编号AND主题.栏目编号=栏目.栏目编号AND (m) |
参考答案:
解析:(k)SELECT主题编号,COUNT(*)回复数或SELECT主题编号,COUNT(*)AS回复数 (1)GROUP BY主题编号 (m)主题.题编号=A.主题编号试题二分析 本题考查SQL语言的知识。[问题1] 本题考查的是SQL的数据定义语言,即SQL的DDL,第(1)题为基本表结构的修改,增加一个新的列用“ALTER...ADD...”语句;第(2)题为参照完整性约束,因为栏目关系中的父栏目编号和版主是外键,应该定义参照完整性约束。[问题2] 本题考查的是SQL的数据操纵语言,即SQL的DML中的SELECT语句。根据要求完成特定的查询要求,第(1)题考查LIKE、ORDER BY关键字的应用方法,第(2)题考查m和UNION关键字的应用方法。 数据查询是数据库的核心操作,SELECT语句是SQL语言中进行查询的语句。该语句提供丰富的功能和灵活的使用方式。SELECT语句的一般格式为: SELECT [ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]... FROM<表名或视图名>[,<表名或视图名>]... [WHERE<条件表达式>] [GROUP BY<列名1>[HAVING<条件表达式>]] [ORDER BY<列名2> IASC|DESC]]; SELECT既可以完成简单的单表查询,也可以完成复杂的连接查询和嵌套查询。考生应对SELECT语句非常熟悉,并能灵活的应用该语句进行各种查询。[问题3] 本题考查的是参照完整性约束,第(1)题给的两个DELETE语句,删除了主题编号为“T005”的主题后,可能会存在该主题的回复主题,违反参照完整性约束。因此SQL语句不能完成想要完成的功能,若这两个语句先后顺序调换过来,则可以完成功能。第 (2)题要求仅用一个DELETE语句就完成该删除要求,数据库提供了一些机制完成这个要求,一个是在定义回复主题关系时指定级联删除,定义主题编号属性的外键约束后加上ON DELETE CASCADE;或者通过触发器机制,在主题关系上定义触发器,当删除主题时,删除其对应的回复主题,通过CREATE TRIGGER...语句完成。[问题4] 本题考查的是数据库的视图,视图也是数据库中非常重要的概念,考生应该熟悉这个内容。另外,本题考查的还主要是SELECT查询语句的应用方法。