22. Oracle中的事务:
事务用于保证数据的一致性,它由一组相关的dml(数据操纵语言)语句组成,该组的dml语句要么全部成功,要么全部失败。Dml语言是说操纵语言,包括增删改操作。当执行事务操作的时候,oracle会在被作用的表进行加锁,防止其他用户对该表进行操作。
使用commit提交事务。当执行commit后,会确认事务的变化,结束事务、删除保存点、释放锁,当使用commit语句结束事务后,其他绘画可以查看事务变化后的新数据。
保存点(savepoint):是事务中的一点,用于取消部分事务,当结束事务时,会自动的删除该事务所定义的所有保存点。当执行回退事务rallback是,通过指定保存点可以回退到指定的点。这里需要注意的是这些保存点要想能够回退,是以没有commit为前提的。使用命令commit提交,使用exit退出的时候也会自动commit。
事务的几个重要操作:
1. 设置保存点:savepoint a;
2. 取消部分事务:rallback to a;
3. 取消全部事务:rollback;
在java中使用事务:
| Try { //连接数据库。。。得到连接。。。 //不使用事务 //Sm.executeUpdate(“update emp set sal=sal-100 where ename =’SCOTT’”); //Int i=10;i=i/0;抛出异常,下一句有可能不执行 //Sm.executeUpdate(“update emp set sal=sal+100 where ename=’SMITH’”); //加入事务处理 Conn.setAutoCommit(false);//设置不能默认提交 //Sm.executeUpdate(“update emp set sal=sal-100 where ename =’SCOTT’”); //Int i=10;i=i/0;抛出异常,下一句有可能不执行 //Sm.executeUpdate(“update emp set sal=sal+100 where ename=’SMITH’”); //加入事务处理 Conn.setAutoCommit(false);//设置不能默认提交 Conn.commit(); Catch(Exception e ) { Conn.rallback();//本身还会发生异常,用try捕获 } } |
只读事务:只允许执行查询的操作,不允许执行其他dml操作的事务。只读事务可以确保用户只能够取得某时间点的数据。
设置只读事务:set transaction read only
23. SQL函数的使用
1.字符函数:
lower(char):将字符串转化为小写
upper(char):将字符串转换为大写
length(char):返回字符串长度
substr(char,m,n):取字符串的字串
replace(char1,serarch_string,replace_string):替换函数
instr(char1,char2,[,n[,m[]):取字串位置函数
eg:将所有员工的名字按照小写显示:select lower(name) from emp;
2.数学函数:
cos,cosh,exp,ln,log,sin,sinh,sqrt,tan…
round(n,[m]):执行四舍五入,保留m位小数
trunk(n,[m]);截取数字,截取n小数点后的m位
mod(m,n):去模
floor(n):返回小于或者等于n的最大整数
ceil(n):返回大于或是等于n的最小整数
abs(n):绝对值
3.日期函数:默认格式为dd-mon-yy,例如12-7月-15,显示为2015-7-12。
Sysdate:当前系统时间。Select sysdate from emp;
Add_months(d,n):加一个月份。Eg:查找入职8个月入职的员工。
Select from emp where sysdate>add_months(hiredate,8);
Last_day(d):返回指定日期的最后一天
4.转换函数:用于将数据类型的转换,oracle提供自动转换。
to_char():转换字符函数
eg1:日期显示时分秒:select ename ,to_char(hiredate,’yyyy-mm-dd hh24:mi:ss’);
eg:显示日民币:select ename ,to_char(hiredate,’yyyy-mm-dd hh24:mi:ss’) to_char(sal,’L9999.99’);L表示当地语言,9999.99代表显示数字格式。
5.系统函数
Sys_context:查询系统参数
24. 数据库管理:
Sys:董事长
System:总经理
主要区别:
1. 存储的数据的重要性不同
Sys:所有oracle的数据字典的基表和视图都是放在sys用户中的,sys拥有dba,sysdba,sysoperar的角色,是用户权限最高的用户。
System:存放系统次一级的内部数据,拥有dba和sysdbajuese或者系统权限。
2. 权限的不同
Sys必须以as sysdba或者as stsoper形式登录,不能以normal形式登录
Systm如果正常登录,其实就是一个普通的dba用户,如果以as sysdba登录,结果实际上就是作为sys用户登录。
Sysoper较之sysdba不不能改变字符集、创建、删除数据库,只能万群恢复数据库等。
sysdba>sysoper>dba(大致如此)。其中dba不能启动关闭数据库。
显示初始化参数:show parameter
备份和恢复:逻辑备份使用export将数据对象的结构和数据备份到文件的过程。使用import进行导入。物理备份为指的是可以在数据库open或者close的状态下进行数据备份,而逻辑备份只能在数据库open的时候进行。
导出:导出表,导出方案,导出数据库,使用exp命令完成,常用的选项有:
Userid:用于指定齿形导出操作的命令名,口令
Tables:用于指定导出操作的表
Owner:用于指定执行导出操作的方案
Full=y:用于指定执行导出操作的数据库
Rows:用于指定导出操作的增量类型
File:用于指定导出文件名
Inctype:用于指定导出操作的增量类型
A导出表:
Exp userid=scott/tiger@MyDB tables=(emp) file=d:\e1.dmp;导出自己的表。
Exp userid=system/manager@myoral tables=(scott.emp) file=d:\e2.emp;导出其他方法的表,需要dba权限
B.导出表结构:
Exp userid=scott/tiger@MyDB tables=(emp) file=d:\e3.dmp rows=n
C.直接导出方式:速度快
Exp userid=scott/tiger@MyDB tables=(emp) file=d:\e3.dmp direct=y;需要数据库的字符集合客户端的字符集完全一致。
D.导出方案:
Exp scott/tiger@myDB owner=scott file