Oracle笔记:子查询、连接查询与分组技巧

需积分: 10 1 下载量 69 浏览量 更新于2024-09-08 收藏 342KB PDF 举报
Oracle笔记 Day03主要涵盖了Oracle数据库中的一些关键概念和技术,包括子查询、连接查询、分组查询以及多表查询的相关操作。以下是这些知识点的详细解释: 1. 子查询:子查询是嵌套在主查询内部的SQL查询,用于获取临时结果。它可以出现在WHERE、HAVING、SELECT或FROM子句中。子查询通常用于比较、过滤或作为基础条件。例如,查询比Scott工资高的员工,需要确保子查询结果唯一;如果子查询结果有多条记录,可能需要使用IN或ALL关键字。在条件查询中,例如"工作与编号7369相同且工资大于7876",子查询用于筛选特定条件。 2. 分组查询:在Oracle中,GROUP BY语句用于对数据进行分组并执行聚合函数(如AVG、SUM等)。NVL函数在此场景下非常重要,用于处理NULL值,如"在emp表中查询员工提成的平均值,如果有空则用0代替"。分组查询时,SELECT列表中的字段要么是分组列,要么是聚合函数,否则会出错。 3. 聚合函数和GROUP BY:在SELECT语句中,只有聚合函数和GROUP BY列可以出现在非聚合字段上,其他字段必须出现在GROUP BY或聚合函数内。这有助于确保正确的数据汇总和分组。 4. 多表连接查询:Oracle支持不同表之间的连接,如等值连接、内连接、左连接、右连接等,用于合并相关数据。连接查询时,需要关注列名的引用,确保使用表名.列名的方式明确指定列的来源。此外,处理同名列的问题,确保关联条件下的数据一致。 5. 笛卡尔积和条件筛选:笛卡尔积是一种特殊的多表查询,它返回两个表中所有可能的组合,但这种查询结果通常非常大,因此需要通过WHERE子句添加条件来减少无效数据。例如,使用any或all关键字检查某个值是否满足特定条件,如查询工资小于或大于某个范围的员工。 6. 表名别名:为了提高查询可读性和简洁性,可以为较长的表名提供别名,如使用单个字母或简短名称来代替全表名。这在复杂的查询中尤其有用。 7. 等值连接与不等值连接:在等值连接中,两个表只连接匹配的行,而在不等值连接中(如大于、小于等),允许不匹配的行也参与连接。 总结来说,Oracle笔记 Day03的核心内容围绕着如何有效地进行子查询、分组查询、连接查询和多表查询,包括处理NULL值、优化查询结构、避免数据冗余以及提升查询效率等方面。熟练掌握这些技巧对于深入理解Oracle数据库的查询操作至关重要。