个性化阅读
专注于IT技术分析

数据库管理系统常见问题|S2

在GATE 2012考试中提出了以下问题。

1)关于SQL查询, 以下哪些陈述是正确的?

P:

SQL查询可以包含HAVING子句, 即使它没有GROUP BY子句也是如此

Q:

SQL查询只有在具有GROUP BY子句的情况下才能包含HAVING子句

R:

GROUP BY子句中使用的所有属性必须出现在SELECT子句中

S:

并非GROUP BY子句中使用的所有属性都需要在SELECT子句中进行包装

(A)P和R

(B)P和S

(C)Q和R

(D)Q和S

答案(C)

根据标准SQL, 答案应为选项(C), 它是GATE权限给出的答案键。

如果我们谈论不同的SQL实现(例如MySQL), 那么选项(B)也是正确的。但有疑问的是, 他们似乎在谈论标准SQL, 而不是实现。例如下面是

在大多数实现中, P是正确的。 HAVING子句也可以与聚合函数一起使用。如果我们使用不带GROUP BY子句的HAVING子句, 则HAVING条件适用于满足搜索条件的所有行。换句话说, 满足搜索条件的所有行都组成一个组。看到这个更多细节。

S是正确的。若要验证S, 请尝试在SQL中执行以下查询。

CREATE TABLE temp 
  ( 
     id   INT, name VARCHAR(100) 
  ); 

INSERT INTO temp VALUES (1, "abc"); 
INSERT INTO temp VALUES (2, "abc"); 
INSERT INTO temp VALUES (3, "bcd"); 
INSERT INTO temp VALUES (4, "cde"); 

SELECT Count(*) 
FROM   temp 
GROUP  BY name;

输出如下:

count(*)
--------
2
1
1

替代方式–

语句(P)” SQL查询即使没有GROUP BY子句也可以包含HAVING子句”是正确的, 因为在合并阶段之后应用了” Having Caluse”, 如果要过滤聚合结果而” Having”没有, 则必须使用要求使用”分组依据”子句。没有GROUP BY子句的HAVING子句在标准SQL中是有效的(并且可以说)有用的语法。考虑以下示例, 它是有效的标准SQL:

SELECT 'T' AS result
   FROM Book
 HAVING MIN(NumberOfPages) <MAX(NumberOfPages);

语句(S)”并非GROUP BY子句中使用的所有属性都需要出现在SELECT子句中”是正确的, 但是如果必须使用Group By子句, 则对我们可以放入Select子句的内容有限制。

2)给定基本的ER和关系模型, 以下哪项是不正确的?

(A)实体的属性可以具有多个值

(B)实体的属性可以是复合的

(C)在关系表的一行中, 一个属性可以具有多个值

(D)在关系表的一行中, 一个属性可以恰好具有一个值或NULL值

答案(C)

术语”实体”属于ER模型, 术语”关系表”属于关系模型。

A和B都是正确的。 ER模型同时支持多值和复合属性, 请参见

这个

更多细节。

(C)为假, (D)为真。在关系模型中, 关系表中的一项可以完全具有一个值或NULL。

3)假设(

一种

, B)和(

C

, D)是两个关系模式。令r1和r2为对应的关系实例。 B是在r2中引用C的外键。如果r1和r2中的数据满足参照完整性约束, 则以下哪项始终为TRUE?

数据库管理系统|套装21

答案(A)

B是r1中的外键, 它引用r2中的C。 r1和r2满足参照完整性约束。因此, r1的B列中存在的每个值也必须存在于r2的C列中。

4)以下哪项是正确的?

(A)2NF中的每个关系也都在BCNF中

(B)如果R的每个非素数属性在功能上完全取决于R的每个键, 则关系R在3NF中

(C)BCNF中的每个关系也都在3NF中

(D)BCNF和3NF都没有关系

答案(C)

BCNF

是更强大的版本

3NF

。因此, BCNF中的每个关系也将包含在3NF中。

请参阅门角适用于所有上一年的论文/解决方案/说明, 课程提纲, 重要日期, 注释等。

如果你发现任何答案/解释不正确, 或者你想分享有关上述主题的更多信息, 请发表评论

赞(1)
未经允许不得转载:srcmini » 数据库管理系统常见问题|S2

评论 抢沙发

评论前必须登录!