Oracle学习2

本文详细介绍了Oracle数据库的事务处理,包括事务的概念、提交、回退和在Java程序中的应用。此外,还深入讲解了Oracle的函数,如字符、数学、日期和转换函数的使用方法。内容涵盖字符函数如lower()、upper(),数学函数如round()、trunc(),日期函数如sysdate、add_months(),以及转换函数to_char()、to_date()。通过对这些概念和函数的探讨,有助于提升对Oracle数据库操作的理解和实践。
摘要由CSDN通过智能技术生成

oracle的事务

//小技巧
1 当使用value子句时,一次只能插入一行数据,当使用子查询插入数据时,一条insert语句可以插入大量的数据
当处理行迁移或者装载外部表的数据到数据库时,可以使用子查询来插入数据
举例:insert into test values(myid,myname,mydept) select empno,ename,deptno from emp;

2 使用update语句更新数据时,既可以使用表达式或者数值直接修改数据,也可以使用子查询修改数据
举例:希望员工Scott的岗位、工资、补助与smith员工一样
update emp set (job,sal,comm)=(select job,sal,comm from emp where ename=’smith’) where ename=’scott’;

1 什么是事务
事务是用于保证数据的一致性,它由一组相关的dml(增、删、改)语句组成,要么该组dml语句全部成功,要么全部失败
当执行事务操作时,oracle会加上锁
2 提交事务(exit退出,自动提交)
当使用commit语句后,会确认事务的变化、结束事务、删除保存点,释放锁
3 回退事务(一定要保证没有commit)
保存点是事务中的一点,用于取消部分事务,当结束事务时,会自动删除该事务所定义的所有保存点,当执行rollback时,通过指定保存点可以回退到指定的点
save point a1;
进行一系列操作,如删除
delete from emp where ename=”;
save point a2;
又进行一系列操作
取消部分事务rollback to a1; //取消全部事务:rollback
4 在Java程序中如何使用事务
转账:从一个账户减去10元,在另一个账户加上10元

//1.加载驱动
Class.forName(“oracle.jdbc.driver.OracleDriver”);
//2.得到链接
Connection ct=DriverManager.getConnection(“jdbc:oracle:thin:@127.0.0.1:1521:myoral(IP地址+端口号+数据库实例)”,”scott”,”m123”);
//3
Statement sm==ct.createStatement();
//从Scott中减去100,在给smith加100
sm.executeUpdate(“update emp set sal=sal-100 where ename=’scott’”);
int i=7/0; 这样的话执行完第一句后,就执行不了加钱的操作了,会抛异常了,但前面减钱的操作却自己执行了
sm.executeUpdate(“update emp set sal=sal+100 where ename=’smith’”);
//关闭打开的资源
sm.close();
ct.close();

解决方案:加入事务处理

//1.加载驱动
Class.forName(“oracle.jdbc.driver.OracleDriver”);
//2.得到链接
Connection ct=DriverManager.getConnection(“jdbc:oracle:thin:@127.0.0.1:1521:myoral(IP地址+端口号+数据库实例)”,”scott”,”m123”);
//加入事务处理
ct.setAutoCommit(false); 这样的话不会执行一句话提交一句话,由自己控制提交时间,假如抛出异常,那么重新在抛异常的函数那添加回滚命令

//3
Statement sm==ct.createStatement();
//从Scott中减去100,在给smith加100
sm.executeUpdate(“update emp set sal=sal-100 where ename=’scott’”);
int i=7/0; 这样的话执行完第一句后,就执行不了加钱的操作了,会抛异常了,但前面减钱的操作却自己执行了
sm.executeUpdate(“update emp set sal=sal+100 where ename=’smith’”);
//提交事务
ct.commit();
//关闭打开的资源
sm.close();
ct.close();

5 只读事务
只读事务只 允许执行查询的操作,不能执行其他dml操作的事务
设置只读事务:set transaction read only

oracle的函数

1 字符函数
lower(chaer):将字符串转化为小写的格式
upper(char):将字符串转换为大写的格式
length(char):返回字符串的长度
substr(char,m,n):取字符串的子串 从m开始取,取n个字符
replace(char1,search_string,replace_string)
instr(char1,char2,[,n[,m]])取子串在字符串的位置

如:将所有员工的名字按小写的方式显示
sql>select lower(ename) from emp;
如:显示正好为5个字符的员工的姓名
sql>select ename from emp where length(ename)=5
如:显示所有员工的前三个字符
sql>select substr(ename,1,3) from emp;
如:以首字母大写的方式显示所有员工的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值