玩转Oracle(4)

 

//使用自定义函数定义日期格式
to_date('1982-11-11','yyyy-mm-dd')
to_date('1982/11/11','yyyy/mm/dd')

//希望员工scott的岗位,工资,补助与smith员工一样
update emp set (job,sal,comm)=(select job,sal,comm from emp where ename='SMITH') where ename='SCOTT';


||-------  java使用oracle   -------||

//jdbc-odbc
//1.加载驱动 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//2.得到连接 conn = DriverManager.getConnection("jdbc:odbc:oracle_source","scott","tiger");

//jdbc直连
//1.加载驱动 Class.forName("oracle.jdbc.driver.OracleDriver");
//2.得到连接 conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","scott","tiger");


||-------  oracle的事物处理  -------||

dml语句 //增删改
当执行事务操作时(dml语句),oracle会在被作用的表上加锁,防止其它用户改表的结构,这里对我们用户来讲是非常重要的

//回滚命令
savepoint a; //存储回滚点
rollback to a; //回滚到存储点
rollback //取消全部事物
commit;  //当执行了commit就不能回滚了
exit;  //退出则自动提交事务

//java使用事务 
conn.setAutoCommit(false); //设置不自动提交
conn.commit();   //手动提交
conn.rollback();  //如果出现异常回滚事物

//只读事物:只允许查询的操作,而不允许其他dml的操作
set transaction read only;


||-------  oracle的sql函数  -------||

//
//字符函数
//

lower(char)  //小写
upper(char)  //大写
length(char)  //长度
substr(char,m,n) //取字符串的子串
replace(char1,search_string,replace_string) //替换函数
instr(char1,char2,[,n[,m]]) //取子串在字符串的位置

//将所有员工的名字按小写的方式显示
select empno,lower(ename) from emp;

//将所有员工的名字按大写的方式显示
select empno,upper(ename) from emp;

//显示正好为5个字符的员工姓名
select * from emp where length(ename) = 5;

//显示所有员工名字前3个字符
select substr(ename,1,3) from emp;

//以首字母大写的方式显示所有员工姓名
select (upper(substr(ename,0,1))) || (lower(substr(ename,2,length(ename)))) as ename from emp;

//将员工名字中所有的A字符替换成tiger
select replace(ename,'A','tiger') from emp;

//显示A在员工名字中的位置
select ename,instr(ename,'A') from emp;

//
//数学函数
//

cos,cosh,exp,ln,log,sin,sinh,sqrt,tan,tanh,acos,asin,atan,round
round(n,[m]) //四舍五入 round(sal,2)=2456.36
trunc(n,[m]) //截取数字 trunc(sal,1)=2456.3 截取小数点1位,不考虑四舍五入,默认截取到整数位 
floor(n) //返回小于或等于n的最大整数 向下取整
ceil(n)  //返回大于或是等于n的最大整数 向上取整
mod(m,n) //取模 

//在做oracle测试的时候可以使用dual表(测试表)
select mod(10,6) from dual;

//显示在一个月为30天的情况,所有员工的日薪金,忽略余数
select floor(sal/30) from emp;

//
//日期函数
//

oracle的默认日期格式是dd-mon-yy 12-7月-78
sysdate  //返回系统时间
add_months(d,n) //add_months(日期,月)
last_day(d) //返回指定日期所在月份的最后一天

//查找已经入职8个月多的员工
select * from emp where sysdate>add_months(hiredate,8);

//显示满10年服务年限的员工的姓名和受雇日期
select * from emp where sysdate>=add_months(hiredate,12*10);

//对于每个员工,显示其加入公司的天数
select trunc(sysdate-hiredate) from emp;

//找出各月倒数第3天受雇的所有员工
select * from emp where hiredate = last_day(hiredate)-2 ;

//
//转换函数
//

to_char  //将date转换成字符类型
to_date  //将字符串转换成date
sys_context //7个参数
 1.terminal  //当前会话客户所对应的终端标识符
 2.language  //语言
 3.db_name  //当前数据库名称
 4.nls_date_format //当前会话客户所对应的日期格式
 5.session_user  //当前会话客户所对应数据库的用户名
 6.current_schema //当前会话客户所对应的默认方案名
 7.host   //返回数据库所在主机的名称

 SQL> select sys_context('userenv','db_name') from dual;
 

//日期是否可以显示 时/分/秒

yy //两位数字的年份 2004->04
yyyy //四位数字的年份 2004年
mm //两位数字的月份 8月->08
dd //2位数字的天  30号->30
hh24 //8点->20
hh12 //8点->08
mi //分钟
ss //秒

insert into emp values (sysdate,23,23,10); //添加系统时间,以时分秒存入
select ename,to_char(hiredate,'yyyy/mm/dd hh24:mi:ss') from emp;

//薪水是否可以显示指定的货币符号

9 //显示数字,并忽略前面0
0 //显示数字,如位数不足,则用0补齐
. //在指定位置显示小数点
, //在指定位置显示逗号
$ //在数字前加美元
L //在数字前加本地货币符号
C //在数字前加国际货币符号
G //在指定位置显示组分隔符
D //在指定位置显示小数点符号(.)

select to_char(sal,'L99999.99') from emp; ¥3222.00

//显示1980年入职的所有员工
select * from emp where to_char(hiredate,'yyyy')=1980;

//显示所有12月份入职的员工
select * from emp where to_char(hiredate,'mm')=12;

//使用sys_context函数的7种用法
SYS_CONTEXT('USERENV','DB_NAME
--------------------------------------------------------------------------------
orcl
 
SQL> select sys_context('userenv','session_user') from dual;
 
SYS_CONTEXT('USERENV','SESSION
--------------------------------------------------------------------------------
SCOTT
 
SQL> select sys_context('userenv','language') from dual;
 
SYS_CONTEXT('USERENV','LANGUAG
--------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
 
SQL> select sys_context('userenv','host') from dual;
 
SYS_CONTEXT('USERENV','HOST')
--------------------------------------------------------------------------------
WORKGROUP/VALEN-PC
 
SQL> select sys_context('userenv','nls_date_format') from dual;
 
SYS_CONTEXT('USERENV','NLS_DAT
--------------------------------------------------------------------------------
DD-MON-RR
 
SQL> select sys_context('userenv','terminal') from dual;
 
SYS_CONTEXT('USERENV','TERMINA
--------------------------------------------------------------------------------
VALEN-PC
 
SQL> select sys_context('userenv','current_schema') from dual;
 
SYS_CONTEXT('USERENV','CURRENT
--------------------------------------------------------------------------------
SCOTT

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值