Oracle数据库第三课——PL/SQL中的SQL,在PL/SQL中使用DML语句,掌握事务处理
发布日期:2025-06-18 14:25:37
浏览次数:4
分类:精选文章
本文共 2175 字,大约阅读时间需要 7 分钟。
PL/SQL DML操作及事务处理技巧
PL/SQL(Procedural Language/SQL)是一种扩展的SQL语言,用于对数据库进行操作。其DML(Data Manipulation Language)语句主要包括插入、更新、删除等操作。掌握这些操作及事务处理是PL/SQL编程的重要基础。
DML操作概述
在PL/SQL中,DML操作主要包括:
- INSERT:插入新记录
- UPDATE:更新已有记录
- DELETE:删除记录
- SELECT:查询数据
SELECT INTO语法及其应用
在PL/SQL语句块中,可以使用SELECT INTO语法将查询结果赋值给变量。这种方法适用于初始化变量或从数据库获取单行数据。
SELECT INTO语法格式:
select column_name into variable_name from table_name [where condition]; 注意事项:
- 查询结果必须返回单行数据,否则会报错
- 查询结果可以经过计算后再赋值给变量
示例:查询并赋值员工信息
declare v_name varchar2(10); v_sal number(7);begin select ename, sal*12 into v_name, v_sal from emp where empno=7369; dbms_output.put_line(v_name || '的年薪是:' || v_sal);end; 插入操作(INSERT语句)
INSERT语句用于向数据库表中插入新记录。语法格式为:
insert into table_name (column1, column2, ...) values (value1, value2, ...); 示例:向dept表插入部门信息
declare v_deptno number(2) := 50; v_dname varchar2(14) := 'support'; v_loc varchar2(13) := 'wuhan';begin insert into dept (deptno, dname, loc) values (v_deptno, v_dname, v_loc);end; 更新操作(UPDATE语句)
UPDATE语句用于修改表中的数据。语法格式为:
update table_name set column_name = value [where condition]; 示例:修改部门地址
declare v_loc varchar2(13) := 'hubei';begin update dept set loc = v_loc where deptno = 50;end; 删除操作(DELETE语句)
DELETE语句用于从数据库表中删除记录。语法格式为:
delete from table_name [where condition]; 示例:删除特定部门的记录
delete from dept where deptno=50; 事务处理
事务的概念
事务是一组SQL语句的执行单元,确保所有操作要么全部成功,要么全部失败。Oracle数据库支持事务的ACID特性:
- 原子性(Atomicity):所有操作要么全部完成,要么全部回滚
- 一致性(Consistency):确保数据在事务完成后保持一致状态
- 隔离性(Isolation):多个事务之间隔离,避免数据干扰
- 持久性(Durability):确保修改已提交后永久存留
事务的提交与回滚
在PL/SQL中,事务的提交和回滚通过以下命令实现:
- COMMIT:提交事务,数据持久化
- ROLLBACK:回滚事务,数据恢复到保存点状态
保存点用于在事务过程中设置可恢复的状态。语法格式为:
savepoint savepoint_name; 事务示例:模拟银行转账
创建users表并插入初始数据:
create table users ( id number, card_no varchar2(20), name varchar2(20), balance number(10)); insert into users values (1, '12345678901234567890', '张三', 5000);insert into users values (2, '98765432109876543210', '李四', 1000);commit;
模拟转账操作:
declare v_amount number(10) := 500;begin -- 开启事务 savepoint sp_begin; update users set balance = balance - v_amount where id=1; update users set balance = balance + v_amount where id=2; -- 提交事务 commit;end; 验证转账结果:
select * from users; 回滚事务并恢复保存点:
rollback to sp_begin; 注意事务提交后保存点会自动删除,无法再回滚。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2026年06月09日 04时13分14秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP获取当前页面的完整URL
2023-03-01
php获取数据库中数据生成json,中文乱码问题的解决方案
2023-03-01
php获取文件夹中文件的两种方法
2023-03-01
PHP获取日期的一些方法总结
2023-03-01
R2学习记录
2023-03-01
PHP获取本周的每一天的时间
2023-03-01
php获取用户真实IP和防刷机制
2023-03-01
php获取网页内容的三种方法
2023-03-01
R-CNN算法优化策略
2023-03-01
PHP规范PSR0和PSR4的理解
2023-03-01
php解析ipa包,获取logo
2023-03-01
R&Rstudio安装各种包
2023-03-02
php设置cookie,在js中如何获取
2023-03-02
php设置socket超时时间
2023-03-02
php设计模式 萨莱 pdf,PHP设计模式 建造者模式
2023-03-02
PHP设计模式之----观察者模式
2023-03-02
php设计模式之装饰器模式
2023-03-02
R&Python Data Science系列:数据处理(5)--字符串函数基于R(一)
2023-03-02
PHP设计模式:观察者模式
2023-03-02
php访问mysql(1)
2023-03-02