【Oracle笔记4mldn】主要涵盖了Oracle数据库系统的一些核心概念和操作,包括多表查询、分组统计和统计函数、子查询、数据库更新操作以及事务处理。以下是对这些知识点的详细阐述:
1. **多表查询**:在Oracle中,当需要从两个或更多表中获取数据时,需要用到多表查询。这可以通过使用JOIN操作实现,如INNER JOIN、LEFT JOIN、RIGHT JOIN等。查询时可以为每个表指定别名以简化SQL语句。要注意的是,如果没有指定关联条件,多表查询将产生笛卡尔积,即所有可能的组合,通常这不是我们想要的结果。
2. **分组统计和统计函数**:统计函数包括COUNT()、AVG()、SUM()、MAX()和MIN(),用于对数据进行聚合计算。使用GROUP BY语句可以按特定列进行分组,使得统计函数应用在每个分组上。HAVING子句则用于在分组后添加条件,它不同于WHERE子句,因为WHERE子句不能包含统计函数。
3. **子查询**:子查询是在一个SQL查询内部嵌套另一个查询,它可以出现在SELECT、FROM和WHERE子句中。子查询可以用于复杂的查询逻辑,例如与多表查询和分组统计相结合,以实现更高级的数据检索。
4. **数据库更新操作**:
- **复制表**:使用`CREATE TABLE AS (子查询)`可以创建一个新的表,其数据来源于子查询的结果。
- **数据增加**:INSERT INTO语句用于向表中添加新记录,需指定字段和对应的值,字符串值需用单引号括起,日期值可以是固定格式或通过TO_DATE函数转换。
- **数据修改**:UPDATE语句用于修改现有记录,需要WHERE子句来指定更新条件,否则会更新表中的所有记录。
- **数据删除**:DELETE FROM语句配合WHERE子句用于删除符合条件的记录。
5. **事务处理**:在Oracle中,事务是一系列数据库操作的逻辑单元,具有ACID特性(原子性、一致性、隔离性和持久性)。提交(COMMIT)提交事务,回滚(ROLLBACK)撤销事务。一个session所做的更改不会立即体现在数据库中,直到明确提交或回滚。死锁是两个或多个事务因互相等待对方释放资源而无法继续执行的情况。
在作业讲解部分,涉及到的具体SQL查询实例展示了如何运用以上知识点解决实际问题:
7. 查询最低薪金大于1500的工作及其对应的员工数量,首先通过分组找到这些工作,然后再次查询以获取员工数量。
8. 查找在"SALES"部门工作的员工,通过子查询先确定部门编号,再根据该编号查询员工。
9. 列出薪金高于公司平均薪金的员工及其详细信息,这涉及到了子查询和部门表的关联查询。
这些示例展示了如何综合运用Oracle的查询技巧,如分组、子查询和事务控制,以满足不同的数据需求。在实际数据库管理和数据分析工作中,掌握这些技能是至关重要的。