Oracle DML触发器执行顺序及SQL SELECT语句详解

需积分: 41 3 下载量 184 浏览量 更新于2024-08-15 收藏 4.31MB PPT 举报
"本资源主要探讨了Oracle数据库中的DML触发器激发顺序以及SQL SELECT语句的相关功能。" 在Oracle数据库中,DML(Data Manipulation Language)触发器是数据库对象,它们在特定的DML操作(如INSERT、UPDATE或DELETE)执行前后被自动调用,以实现额外的业务逻辑或数据验证。触发器的激发顺序如下: 1. **语句之前触发器**:在执行任何DML语句之前,如果存在相应的语句级触发器,会首先执行这些触发器。 2. **行之前触发器**:对于DML语句影响的每一行,如果有行级别的触发器在前面,那么在执行DML语句本身之前,会先执行这些触发器。 3. **DML语句执行**:在执行完所有行之前触发器后,执行实际的DML语句,即插入、更新或删除数据。 4. **行之后触发器**:DML语句执行后,如果有行级别的触发器定义在之后,这些触发器会被依次执行。 5. **语句之后触发器**:最后,如果存在语句级的触发器定义在DML语句之后,它们会在所有行级别触发器执行完毕后被调用。 值得注意的是,当创建快照日志时,Oracle会自动创建一个行后触发器来更新日志文件。如果用户也需要创建行后触发器,应避免与系统自动生成的触发器冲突,同时还要考虑数据库对触发器和快照的其他限制。 接下来,我们转向SQL SELECT语句,它是用于从数据库中提取数据的核心工具,具有以下关键功能: - **选择(Selection)**:允许用户从一个或多个表中选择特定的行,通过指定筛选条件(如WHERE子句)来满足特定需求。 - **投影(Projection)**:允许用户选择要显示的特定列,可以减少输出列的数量,或者结合多个列生成新的表达式。 - **连接(Join)**:通过JOIN操作,用户能够合并来自不同表的数据,以获取跨表的信息。这将在后续课程中进一步讨论。 - **连接操作符(Concatenation Operator)**:`||` 运算符用于连接两个或多个字符型数据,例如列、表达式或常量,生成一个新的字符串。 - **原义字符串(Literals)**:在SELECT语句中,可以直接使用字符、数字或日期字面值,它们会在每行输出中显示。日期和字符值需用单引号包围,而数值则不需要。 例如,以下SQL语句展示了如何使用连接操作符和原义字符串: ```sql SELECT ename || ':' || '1' || 'Month salary=' || sal AS EmployeeDetails FROM emp; ``` 此查询将每个员工的姓名与“1 Month salary=”和他们的薪水连接起来,生成了一个新的列`EmployeeDetails`。 了解并熟练掌握DML触发器的激发顺序和SQL SELECT语句的使用,对于有效管理和操作Oracle数据库至关重要。这不仅可以帮助提取所需的数据,还能确保在数据变更时遵循预设的业务规则。