在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?
答案(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中。
请参阅门角适用于所有上一年的论文/解决方案/说明, 课程提纲, 重要日期, 注释等。
如果你发现任何答案/解释不正确, 或者你想分享有关上述主题的更多信息, 请发表评论
评论前必须登录!
注册