DB2数据库试题解析:GROUP BY与HAVING,唯一索引与主键

需积分: 3 1 下载量 167 浏览量 更新于2024-11-27 收藏 151KB PDF 举报
"DB2 700内部资料包含关于SQL查询和索引创建的重要知识点,主要涉及GROUP BY、HAVING、UNIQUE INDEX以及DISTINCT在数据处理中的应用。" 在DB2数据库管理系统中,SQL语句是进行数据操作的基础。以下是对给定内容中关键知识点的详细解释: 1. **GROUP BY与HAVING子句**: - GROUP BY子句用于将数据根据指定的列进行分组,以便对每个组进行聚合函数(如SUM、COUNT、AVG等)的计算。 - HAVING子句则是在GROUP BY之后过滤分组的结果,它与WHERE子句类似,但WHERE是在数据分组前进行条件筛选,而HAVING是在数据分组后进行条件筛选。 2. **创建唯一索引(UNIQUE INDEX)**: - 创建唯一索引可以确保索引列中的值是唯一的,不允许有重复。选项A的语句`CREATE UNIQUE INDEX ix1 ON t1(c1)`会创建一个基于列c1的唯一索引,防止表T1中c1列有重复值。 - 选项B和D中的DISTINCT关键字在创建索引时并不适用,而在查询语句中用于去除重复行。 - 选项C创建了基于c1和c2两列的唯一索引,这意味着c1和c2组合的值必须是唯一的,而不是单独的c1列。 3. **创建唯一索引的效果**: - 当执行`CREATE UNIQUE INDEX empno_ind ON employee(empno)`时,每一条记录的EMPNO字段必须是唯一的(选项A正确)。这不意味着UPDATE或INSERT语句会被回滚,也不会自动加速所有EMPNO相关的INSERT语句(选项B、C错误)。虽然在某些情况下插入速度可能提高,但这不是唯一索引的直接结果。选项D提到的“聚簇数据”通常是指主键或索引决定了数据在磁盘上的物理顺序,但这在DB2中并非唯一索引的默认行为,除非明确指定。 4. **消除重复行**: - 消除结果集中重复行的操作,应使用DISTINCT关键字。正确的语句是`SELECT DISTINCT * FROM t1`(选项B),它会返回不含重复行的结果集。其他选项(A、C、D、E)的语法都是错误的。 5. **唯一索引与主键的区别**: - 唯一索引和主键都可以确保列中的值是唯一的,但主键还有额外的约束,比如它是非空的,并且可以作为表的标识。主键可以由一个或多个列组成,而唯一索引只关注指定列的唯一性。 这些知识点对于理解和优化DB2数据库的查询性能至关重要。了解如何正确使用GROUP BY、HAVING、唯一索引和DISTINCT可以帮助写出更高效的SQL语句,同时避免数据冗余和冲突。在实际工作中,理解这些概念对于数据库设计、数据完整性维护以及性能优化都非常重要。