■ j**a如何连接和操作oracle数据库。
原理图。**实现:
我们在eclipse中,编写一个j**a程序,完成对emp表的crud操作。
j**a连接oracle有两种方式。
直连。jdbc原理。
做jdbc开发有两个前提。
1. import 有时
2. 把导入到你的j**a项目里。
特别说明:如果使用jdbc直连,需要启动监听服务。
1) 把对数据库的操作,封装成一个工具类sqlhelper
2) 我们通常把对数据库的配置信息,写到一个文件中去,这样**更加灵活。
jdbc-odbc桥连接。
步骤如下:1. 配置数据源。
2. 设置。
j**a程序也要做相应的修改。
connection ct="jdbc:odbc:lhorcl","scott",“1234");
什么时候使用jdbc,jdbc-odbc?
原则:如果j**a程序和db不在同一个机器上,我们一般使用jdbc.如果j**a程序和db在同一个机器上,则两个都可以使用。
to_date的使用。
我们在插入date列的时候,发现,必须以默认格式添加。比如:
insert into emp(empno,hiredate) values(2222,'1981-01-01');
报错。我们可以使用to_date进行日期转换。
to_date(string,’format’)(把字符串转成指定格式的日期)
insert into emp(empno,hiredate) values(2222,to_date('1981-01-01','yyyy-mm-dd'))
使用子查询完成行迁移的需求。
create table temp as select empno,ename from emp where ename like ‘s%’;
使用子查询完成更新。
希望员工scott的岗位、工资、补助与smith员工一样。
update emp set (job,sal,comm)=(select job,sal,comm from emp where ename=’smith) where ename=’scott’;
oracle函数。
oracle数据库的强大,体现在对用户的管理,pl./sql编程,函数丰富。
oracle函数分类。
从大的方面,分为单行函数,比如length
多行函数,比如max,min,**g
1 字符函数。
concat函数。
该函数和||的作用是一样,用来拼接两个字符串。
select concat(ename,’是个人’) from emp;
initcap函数。
select initcap(ename) from emp;
instr函数。
select instr('oracle traning','ra',1,2) instring from dual;
length函数。
select length(sal) from emp;
lower函数和upper函数。
请把雇员的名字分别用大写和小写来表是。
select lower(ename),upper(ename) from emp;
请把雇员的名字,首字符要小写,其他字母要大写。
lower/upper/length/substr
select lower(substr(ename,1,1))|upper(substr(ename,2,length(ename)-1)) from emp;
select concat((substr(ename,1,1)),upper(substr(ename,2,length(ename)-1)))from emp;
lpad和rpad函数。
使用层次查询取得职位最高的雇员及其以下一级雇员的雇员的雇员名和岗位。
select lpad(' 3*(level-1))|ename ename,lpad(' 3*(level-1))|job job from emp where level<=4 start with mgr is null connect by mgr=prior empno;
ltrim和rtrim函数。
select rtrim(‘ lihengaaaaaa’,’a’) from dual;
结果是’..liheng’把右边的a全部删除。
replace('string','s1','s2')
trim函数。
去掉指定字符串或是数字前面的某些字符或数字。
select trim (0 from 0009872348900) "trim example" from dual;
返回的结果:98723489
数学函数。ceil函数用于向上取整(不是四舍五入)
select ceil(3.1415927) from dual;返回4
floor函数用于向下取整。
select floor(2345.67) from dual;返回2345
mod函数取模。
mod(10,3)返回1
round函数(四舍五入)
round(55.6)返回56
round(155.6,-2);返回200
trunc函数用于截断一个整数。
如果trunc函数,没有指定到第几位,则默认截取到整数。
trunc(55.5)返回55
select trunc(155.6,-2) from dual;返回100
日期函数。add_months函数。
add_months(日期值,增加或减少的月份)
请查询最近3个月入职的员工(sysdate)
我们可以把hiredate加上3个月,如果得到的日期大于当前日期,则说明该员工是最近三个月内入职。
select * from emp where add_months(hiredate,3)>=sysdate;
select * from emp where hiredate>=add_months(sysdate,-3);
last_day函数返回最后一天。
select last_day(sysdate) from dual;返回当月的最后一天。
months_between(date2,date1)
给出date2-date1的月份。
next_day函数。
select next_day(sysdate,'星期二') from dual;用于返回离sysdate最近的星期二是几号。
转换函数。to_char(number/date/char)
转换日期。select to_char(sysdate,’yyyy-mm-dd : hh24:mi:ss’) from dual;
显示我们希望的薪水格式。
select ename,to_char(sal,'l99g999d99') from emp ;
比如显示1981入职的员工。
select * from emp where to_char(hiredate,’yyyy’)=1981’;
系统函数。oracle提供了一套系统函数,可以用于查询系统信息。
比如,想查询使用的数据库名字。
select sys_context(‘userenv’,’db_name’) from dual;
oracle事务处理。
基本概念。数据库把一系列对数据库的操作(dml insert/update/delete)看作一个整体,要么全部成功,要么全部失败,这样的现象就是事务现象,事务是具有原子性。
事务的提交。
j**a**。
/事务先设置成不自动提交。
/事务开始。
update emp set
insert
update...
commit();提交。
一会写**。
在j**a程序中如何控制事务的提交和回滚。
**:从smith的sal减去10,加到allen的sal
//从smith的sal-10
string sql="update emp set sal=sal-10 where ename='smith'";
加给allen
string sql2="update emp set sal=sal+10 where ename='allen'";
**出错。int i=8/0;
null);
怎么把多个dml语句看作一个整体(事务),统一提交。
connection ct=null;
try finally
思考题:如何把事务控制直接封装到sqlhelper类?
oracle第4讲
第四讲笔记 维护数据完整性。有三种方法 约束,触发器,应用程序 函数,过程 1 约束。1 not null 非空 举例 create table user1 id number,name varchar2 32 not null sql insert into user1 values 1,null...
oracle笔记 2
1.口令历史。createprofilepassword historylimitpassword life time10password grace time2password reuse time10 password reuse time为指令口令可重用时间即10天后就可以重用。删除profi...
3Oracle笔记
oracle10g笔记。一 ordbms 每个表空间是由一个或多个数据文件组成的,一个数据文件只能与一个表窨相关联。表空间的大小等于构成该表空间的所有数据文件大小之和。段是构成表空间的逻辑存储结构,段由一组区组成。一个区相当一行。段分为 数据段 索引段 回退段和临时段。段相当于一个表。区为段分配空间...