在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 ( idINT, 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(*) FROMtemp GROUPBY name;
输出如下:
count(*)--------211
【数据库管理系统常见问题|S2】替代方式–
语句(P)” SQL查询即使没有GROUP BY子句也可以包含HAVING子句” 是正确的, 因为在合并阶段之后应用了” Having Caluse” , 如果要过滤聚合结果而” Having” 没有, 则必须使用要求使用” 分组依据” 子句。没有GROUP BY子句的HAVING子句在标准SQL中是有效的(并且可以说)有用的语法。考虑以下示例, 它是有效的标准SQL:
SELECT 'T' AS resultFROM 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中。
请参阅门角适用于所有上一年的论文/解决方案/说明, 课程提纲, 重要日期, 注释等。
如果你发现任何答案/解释不正确, 或者你想分享有关上述主题的更多信息, 请发表评论
推荐阅读
- 数据库管理系统常见问题|S3
- 数据库管理系统介绍|S1
- DBMS中的关系代数介绍
- DBMS中的无损分解问题介绍
- DBMS(数据库管理系统)简介|S1
- DBMS中的三层体系结构介绍|S2
- 数据库ER模型介绍和图解
- SQL中的聚合函数简要介绍
- MySQL数据库管理