什么是事务:
事务用于保证数据的一致性,它由一组相关的dml(增删改三种语句)语句组成,该组的dml语句要么全部成功,要么全部失败。
如:网上转账就是典型的要用事务来处理,用以保证数据的一致性。
package com.myoral.test;
import java.sql.*;
public class CommitShiWu {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection con=null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:sjjz","wangzihu","wangzihu");
//加入事务处理
con.setAutoCommit(false);
Statement sta=con.createStatement();
sta.executeUpdate("update bookstore t set t.price=price+100 where t.id=163");
int i=4/0;//做出一个异常用来测试数据是否一致提交
sta.executeUpdate("update bookstore t set t.price=price-100 where t.id=164");
con.commit();
sta.close();
con.close();
}catch(Exception e){
try{
//如果发生异常,就回滚
con.rollback();
}catch(Exception ex){
ex.printStackTrace();
}
e.printStackTrace();
}
}
}
显示正好为5个字符的员工的姓名:
Select * from emp where length(ename)=5;
显示所有员工姓名的前三个字符:
Select substr(ename,1,3) from emp;(1代表是从第一位开始取,3代表取几个字符)
以首字母大写的方式显示所有员工的姓名:
第一步:完成首字母大写:
Select upper(substr(ename,1,1)) from emp;
第二步:完成后面字母小写:
Select lower(substr(ename,2,length(ename-1)) from emp;
第三步:合并(合并符合为||):
Select upper(substr(ename,1,1)) || lower(substr(ename,2,length(ename-1)) from emp;
数学函数:
1.round(n,[m])
该函数用于执行四舍五入,如果省掉m,则四舍五入到整数;如果m是整数,则四舍五入到小数点的m位后,如果m是负数,则四舍五入到小数点的m位前
Select round(sal) from emp where ename=’shunping’;
Select round(comm,1),comm from emp where ename=’shunping’;
2.trunc(n,[m])
该函数用于截取数字,如果省掉m,就截去小数部分,如果m是正数就截取到小数点的m位后,如果m是负数,则截取到小数点的前m位
Select trunc(comm,1),comm from emp where ename=’shunping’;
Select trunc(comm,-1),comm from emp where ename=’shunping’;(如果是-1则是截取个位上的数字)
3.mod(m,n)(取模)
Select mod(10,2) from dual;
Select mod(10,3) from dual;
在做oracle测试的时候,可以使用dual表,它是一个虚拟的表
4.floor(n)
返回小于或是等于n的最大整数
Select floor(comm),comm from emp where ename=’shunping’;
5.ceil(n)
返回大于或是等于n的最小整数
Select ceil(comm),comm from emp where ename=’shunping’;
6.案例:
显示在一个月为30天的情况所有员工的日薪金,忽略余数
Select trunk(sal/30),ename from emp;(或者 select floor(sal/30),ename from emp;)
日期函数:
日期函数用于处理date类型的数据。
默认情况下日期格式是dd-mon-yy即12-7月-7
(1)sysdate:该函数返回系统时间
select sysdate from dual;
(2)add_months(d,n)
(3)last_day(d):返回指定日期所在月份的最后一天
找出各月倒数第3天受雇的所有员工
Select hiredate,ename from emp where last_day(hiredate)-2=hiredate;
查找已经入职8个月多的员工
Select * from emp where sysdate>add_months(hiredate,8);(hiredate为字段)
显示满10年服务年限的员工的姓名和受雇日期。
Select * from emp where sysdate>=add_months(hiredate,12*10);(hiredate为字段)
对于每个员工,显示其加入公司的天数
Select trunc(sysdate-hiredate) “入职天数” ,ename from emp;(字段必须是date日期型的)
To_char的使用:
Select ename,to_char(hiredate,’yyyy-mm-dd hh24:mi:ss’),to_char(sal,’L99999.99’) from emp;
显示1980年入职的所有员工:
Select * from emp where to_char(hiredate,’yyyy’)=1980;
显示12月份入职的所欲员工:
Select * from emp where to_char(hiredate,’mm’)=12;