第6课 oracle里的高级命令
2013-06-18 17:37
211 查看
1, 事物:
事物是数据库里一个很重要的概念:它用于保证数据的一致性,它由一组相关的dml(数据控制语句:只包括增删改)组成,该组数据要么全部成功,要么全部失败。
举例说明:网上转账,要保证转账双方的总和相等,才不会有麻烦,要么转和收都成功,要么都不成功,次啊能保证,这就叫事物
事物还有一个锁的概念:
举例说明:很多很多应用程序都同时访问一份数据,怎么办,这时候只有这样,想上厕所,进去一个,锁上门,出来后,第二个才上,要排队;
Commit :
当对数据库使用commit后,会确认事物的变化,结束事物,删除保存点,释放锁等;
下面来看一个在java中如何使用事物保证数据的安全:
从一个雇员的薪水减去10,在另外一个雇员加上这10:
1, 使用jdbc连接oracle:同上;
Import java.sql.* ;
Class.forName("oracle.jdbc.driver.OracleDriver");//注意大小写;
Connectionct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:myora","scott","tiger");
Statement sm=ct.createStatement();
2,取消数据库的自动提交功能:sm.setAutoCommit(false);
3,用得到的数据库引用对象来处理数据表:sm.executeUpdate(“updateemp set sal=sal-10 where ename=’SMITH’”); 。。。。1
Sm.executeUpdate(“updateemp set sal=sal+10 where ename =’SCOTT’”); 。。。。2
4,手动提交:sm.commit();
5,关闭资源:sm.close();ct.close();
6,若遇到异常:进行实物回滚:在try…catch{ ct.rollback();};//这里就保证了1,2要么同时进行,要么都不执行,保证了数据库的安全性,尤其在银行数据处理尤为重要;
只读事物:
保证只读取某个时间点的更新的数据,以后更新的数据不会影响查询的数据:(针对多用户操作同一个数据库的情况)
Set transactionread only; // 注意设置为只读事物后,其他用户的增删改等语句不会影响当前用户的产寻到的数据;
比如在18:00要查询今天的销售情况:可以设置只读事物:之后的销售金额,不计在内;
Sql函数:
1, 字符函数:
Lower(char);将字符串转化为小写
Upper():
Length(char):放回字符串的长度;
Substr(char,m,n):取子串,m,起始位(以1为底,n表示取字符数目);
例子:以首字母大写,其他字母小写的方式显示所有员工姓名:注意使用连接符||;
//Select upper(substr(ename,1,1)) from emp;
Repale(char2,原来字符,代替字符):替换字母:
Instr(char1,char2,[,n,[,m]]):取子串在字符串的位置;
2, 数学函数:
常用的有
Abs(n):绝对值;Acos(n),asin(n),atan(n),exp(n),long(n,m),power(n,m);
cos,cosh,exp,ln,log,sin,sinh,sqrt,tan,tanh,acos,asin,atan,round等等
Round(n,[m]):四省五入;没有m的话,省到整数,m>0,四省五入到小数点m位;m<0,四省五入到整数位的m位前,round(55.6 ,-1)=50;n表示数字
Trunc(n,[m]):大体同round,只是他不是四省五入,他直接截取,
Mod(m,n): :取余
Floor(n): 返回小于或者等于n的最大整数;
Ceil(n):返回大于或者等于n的最小整数;
注意:dual表:
在做函数测试时使用这个虚拟表:如select mod(10,3) from dual;
3,日期函数:
Sysdate: 返回系统时间,日期;
Add_months(d,n): d:表示计时起点,n表示加多少个月;
例子:查找8个月入职前的员工:select* from emp where sysdate>add_month(hiredate,8);
Last_day(d)::返回指定日期所在月份的最后一天:
to_date: 改变日期格式为任何格式:
例子:
Insert into emp values(9998,’xiaohong’,’MANAGER’,7782,to_date(‘1988/12/12’,’yyyy/mm/dd’);
4转换函数:
虽然oracle 可以进行隐性转换,但是为了提高可读性,使用类型转换函数是必要的:
其中to_char 是很有用的转换函数:
例子:
select ename, to_char(hiredate,'yyyy-mm-dd hh24:mi:ss'),to_char(sal,'L99,999.99') from emp; 按照规定格式显示日期和薪水;
5,系统函数:
sys_context
a, terminal : 当前用户所对对用的终端的标示符;
b,lanuage: 语言;
c, db_name: 当前数据库实例名
d,nls_date_format : 日期格式;
e,session_user: 数据库用户名
f,current_schema:当前用户的方案名;
g,host,数据库所在主机名
例子:select sys_context('userenv','db_name') from dual;
事物是数据库里一个很重要的概念:它用于保证数据的一致性,它由一组相关的dml(数据控制语句:只包括增删改)组成,该组数据要么全部成功,要么全部失败。
举例说明:网上转账,要保证转账双方的总和相等,才不会有麻烦,要么转和收都成功,要么都不成功,次啊能保证,这就叫事物
事物还有一个锁的概念:
举例说明:很多很多应用程序都同时访问一份数据,怎么办,这时候只有这样,想上厕所,进去一个,锁上门,出来后,第二个才上,要排队;
Commit :
当对数据库使用commit后,会确认事物的变化,结束事物,删除保存点,释放锁等;
下面来看一个在java中如何使用事物保证数据的安全:
从一个雇员的薪水减去10,在另外一个雇员加上这10:
1, 使用jdbc连接oracle:同上;
Import java.sql.* ;
Class.forName("oracle.jdbc.driver.OracleDriver");//注意大小写;
Connectionct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:myora","scott","tiger");
Statement sm=ct.createStatement();
2,取消数据库的自动提交功能:sm.setAutoCommit(false);
3,用得到的数据库引用对象来处理数据表:sm.executeUpdate(“updateemp set sal=sal-10 where ename=’SMITH’”); 。。。。1
Sm.executeUpdate(“updateemp set sal=sal+10 where ename =’SCOTT’”); 。。。。2
4,手动提交:sm.commit();
5,关闭资源:sm.close();ct.close();
6,若遇到异常:进行实物回滚:在try…catch{ ct.rollback();};//这里就保证了1,2要么同时进行,要么都不执行,保证了数据库的安全性,尤其在银行数据处理尤为重要;
只读事物:
保证只读取某个时间点的更新的数据,以后更新的数据不会影响查询的数据:(针对多用户操作同一个数据库的情况)
Set transactionread only; // 注意设置为只读事物后,其他用户的增删改等语句不会影响当前用户的产寻到的数据;
比如在18:00要查询今天的销售情况:可以设置只读事物:之后的销售金额,不计在内;
Sql函数:
1, 字符函数:
Lower(char);将字符串转化为小写
Upper():
Length(char):放回字符串的长度;
Substr(char,m,n):取子串,m,起始位(以1为底,n表示取字符数目);
例子:以首字母大写,其他字母小写的方式显示所有员工姓名:注意使用连接符||;
//Select upper(substr(ename,1,1)) from emp;
Repale(char2,原来字符,代替字符):替换字母:
Instr(char1,char2,[,n,[,m]]):取子串在字符串的位置;
2, 数学函数:
常用的有
Abs(n):绝对值;Acos(n),asin(n),atan(n),exp(n),long(n,m),power(n,m);
cos,cosh,exp,ln,log,sin,sinh,sqrt,tan,tanh,acos,asin,atan,round等等
Round(n,[m]):四省五入;没有m的话,省到整数,m>0,四省五入到小数点m位;m<0,四省五入到整数位的m位前,round(55.6 ,-1)=50;n表示数字
Trunc(n,[m]):大体同round,只是他不是四省五入,他直接截取,
Mod(m,n): :取余
Floor(n): 返回小于或者等于n的最大整数;
Ceil(n):返回大于或者等于n的最小整数;
注意:dual表:
在做函数测试时使用这个虚拟表:如select mod(10,3) from dual;
3,日期函数:
Sysdate: 返回系统时间,日期;
Add_months(d,n): d:表示计时起点,n表示加多少个月;
例子:查找8个月入职前的员工:select* from emp where sysdate>add_month(hiredate,8);
Last_day(d)::返回指定日期所在月份的最后一天:
to_date: 改变日期格式为任何格式:
例子:
Insert into emp values(9998,’xiaohong’,’MANAGER’,7782,to_date(‘1988/12/12’,’yyyy/mm/dd’);
4转换函数:
虽然oracle 可以进行隐性转换,但是为了提高可读性,使用类型转换函数是必要的:
其中to_char 是很有用的转换函数:
例子:
select ename, to_char(hiredate,'yyyy-mm-dd hh24:mi:ss'),to_char(sal,'L99,999.99') from emp; 按照规定格式显示日期和薪水;
5,系统函数:
sys_context
a, terminal : 当前用户所对对用的终端的标示符;
b,lanuage: 语言;
c, db_name: 当前数据库实例名
d,nls_date_format : 日期格式;
e,session_user: 数据库用户名
f,current_schema:当前用户的方案名;
g,host,数据库所在主机名
例子:select sys_context('userenv','db_name') from dual;
相关文章推荐
- 针对Oracle用户的Linux高级命令详解之文件操作篇
- 针对Oracle用户的Linux高级命令详解之资源管理篇
- sed高级命令之n、N
- Oracle创建删除用户、角色、表空间、导入导出、...命令总结
- 两个Oracle创建存储过程的例子——在命令窗口中
- Linux下find高级命令
- Oracle DBA 知识点和操作命令
- Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令
- Oracle 常用命令
- Oracle EBS 高级定价中定价属性的定义过程
- Oracle expdp/impdp导出导入命令及数据库备份
- oracle imp / exp 导入导出命令详解
- oracle命令
- oracle sql命令
- linux下操作oracle常用命令
- Linux iptables命令高级网络
- 因xhost命令和DISPLAY环境变量操作不当导致无法启动Oracle图形化安装界面
- oracle里常用命令详细讲解【2】
- windows下命令启动oracle监听和服务
- Oracle Lsnrctl - 关于oracle监听器的命令和解释