Oracle数据库级联删除与SQL查询详解

需积分: 35 10 下载量 140 浏览量 更新于2024-07-12 收藏 3.47MB PPT 举报
Oracle数据库中的级联删除功能是一种数据完整性约束机制,它确保当父表中的记录被删除或更新时,与其相关的子表记录也会自动进行相应的处理,以保持数据的一致性。在SQL语句中,`ON DELETE CASCADE`和`ON DELETE SET NULL`是两个常用的规则来实现这种级联操作。 首先,让我们理解`CREATE TABLE`语句中的`REFERENCES`关键字和`ON DELETE`子句。当你定义一个外键(如`p_id`字段引用`parent`表的`id`)时,可以设置`ON DELETE`行为。`CASCADE`表示当父表的记录被删除时,子表中相关的记录也将被删除;而`SET NULL`则会将外键字段设置为NULL,表示父表已不存在对应关系。 在实际操作中,例如有两张表`child`和`parent`,它们之间的关系是通过`child.p_id`字段与`parent.id`关联,我们可以通过以下两条SQL创建表: 1. `CREATE TABLE child (id number PRIMARY KEY, p_id number REFERENCES parent(id) ON DELETE CASCADE);` 这意味着当`parent`表中的任何记录被删除时,`child`表中与之相关的所有记录也将自动删除,以防止数据间的孤立状态。 2. `CREATE TABLE child (id number PRIMARY KEY, p_id number REFERENCES parent(id) ON DELETE SET NULL);` 在这种情况下,如果`parent`表的记录被删除,`child`表的外键`p_id`将被设置为NULL,而不是直接删除,这样可以避免数据丢失,但可能会引入数据不完整的问题。 接下来,我们看了一些基础的SQL查询操作,包括`SELECT`语句的基础用法。比如,查询`s_emp`表中所有员工的信息,查询指定列(如部门ID和工资),以及使用算数表达式计算年薪。这展示了如何在查询中使用SQL的基本语法,如选择特定字段、连接多个字段的表达式以及优先级控制(通过括号)。 在更复杂的查询中,如`SELECT last_name, salary, 12 * salary + 100`或`SELECT last_name, salary, 12 * (salary + 100)`,可以看到SQL中运算符的使用,包括乘法和加法,以及如何嵌套表达式以实现更精确的结果计算。 总结起来,本资源涵盖了Oracle SQL语句的级联删除概念、基础的`SELECT`查询操作,以及如何在实际查询中结合算数运算来获取所需的数据。学习者通过这些示例可以掌握如何在数据库设计和查询中实施级联删除策略,并熟练运用SQL语句进行数据提取和处理。