您的位置:首页 > 数据库 > Oracle

玩转oracle学习第三天

2015-06-07 21:31 573 查看
  总体大纲:

1.上节回顾

2.java程序如何操作oracle

3.如何在oracle中操作数据

4.oracle的事务处理

    5.sql函数的使用

1.java程序操作oracle数据库

 11.JDBC-ODBC桥连接操作oracle数据库

  java连接oracle数据库
import java.sql.*

    加载驱动

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    //JDBC-ODBC只能本地连接,不能远程连接

    //JDBC可以远程连接,通过制定Ip 和端口进行远程连接

    得到连接

      Connection ct = DriverManager.getConnection("jdbc:odbc:testsp","scott","tiger")   

     Statement sm = ct.createStatement();

     Results ....

1.2 JDBC连接oracle数据库

1).加载驱动

    class.forName("oracle.jdbc.driver.OracleDriver");

    2).得到连接

  Connection ct = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:myoracle1","scott","tiger");   

    3.)关闭打开的资源

    rs.close();

    sm.close()

    ct.close();

分页显示前三条

int pageCount = 0;

    int rowCount = 0;

    int pageSize = 0;

    分页显示显示前三条:

   select * from (select a1.*,rownum rn from (select * from emp) a1 where rownum<=3) where rn >=1;

1.3 数据处理

oracle中操作数据,使用特定函数操作日期类型

    to_date函数的使用来插入日期

   to_date('1988-12-12','yyyy-mm-dd')

    to_date('1988/12/12','yyyy/mm/dd')

    使用子查询插入数据

    create table hesy(myId number(4),myname varchar2(50),myDept number(5));

 insert into hesy (myId,myname,mydept) select empno,ename,deptno from emp where deptno = 10;

    使用子查询更新数据

   使用update语句更新数据时,既可以使用表达式或者数值直接修改数据,也可以使用子查询修改数据

    update emp set job=(select job from emp where ename='SMITH'),sal=(select sal from emp where ename='SMITH'),...;

    或者

   update emp set (job,sal,comm)=(select job,sal,comm from emp where ename='SMITH') where ename='SCOTT';

    什么是事务

    事务用于保证数据的一致性,它由一组相关的dml语句(增删改语句)组成,该组的dml语句要么全部成功,要么全部失败 

    事务和锁

    提交事务:

    savepoint a1;

    savepoint a2;

    rollback to a2;

    rollback to a1;

      设置保存点,并且可以回滚的前提是没有commit,一旦commit提交以后,就不能进行回滚了,即保存点是失效的

      不提交,事务不会有变化的 

      rollback:取消所有事务

     java程序中如何使用事务

     ct.setAutoCommit(false);

     update emp set sal = sal -100 where ename='scott'   

      update emp set sal = sal +100 where ename='SMITH'

    ct.commit();

    catch

          ct.rollback();      

    只读事务:

      只读事务是指只允许执行查询的操作,而不允许执行任何其它dml操作的事务,使用只读

      事务可以  

     设置只读事务

      set transaction read only;

      sql函数的使用 

      (1)字符函数

      oracle最常用的函数,由如下:

      lower(char)

      upper(char)

      length(char)

      substr(char,m,n) 取子串,从m开始,取三个长度

      以首字母大写,其它小写显示所有姓名

      select (upper(substr(ename,1,1))||lower(substr(ename,2,length(ename)-1))) as name from emp;

      replace函数,字符替换,将A替换成我是老虎

      select replace(ename,'A','我是老虎') from emp;

      instr函数,找字符串位置   

      (2)数学函数

      数学函数的输入参数

      round:该函数用于四舍五入

      trunc:截取数字,取整

      mod:取模

      floor:返回小于等于,向下取整

      ceil:返回大于等于

      round(sal,1)四舍五入保存一位小数

      select trunc(comm,1),comm from emp where ename='shunping';//小数点后截取一位,只保留一位小数

      trunc(comm) 取整数

      其它数学函数:

      abs

      acos

      asin

      atan

      cos

      exp

      log(m,n)

      power(m,n):返回m的n次方

      (3)日期函数

      日期函数用于处理date类型的函数

      默认情况下日期格式是dd-mon-yy 即12-7月-78

      sysdate :返回系统时间;

      select sysdate from dual;

      add_months(d,n)增加月份

      select * from emp where sysdate>add_months(hiredate,8);

      last_day(d):返回指定日期所在月份的最后一天

      计算员工入职天数

      select floor(sysdate-hiredate)  "入职天数" from emp;

      找出各月倒数第三天受雇的所有员工

      select hiredate,ename from emp where last_day(hiredate) = hiredate;

      //select hiredate,last_day(hiredate) from emp;

      (4)转换函数

      用于将数据类型从一种类型转换为另外一种,在某些情况下,oracle server允许值得数据类型和实际的不一致,这时

      oracle server会隐含的转化数据类型,例如'10' -> 10  1->'1'

      to_cahr:转换字符串使用,

      select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss') from emp;

      工资前面加上RMB的使用方法:

      select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss'),to_char(sal,'L99999.99') from emp;//L表示本地货币单位 99999.99表示工资格式是5位整数,小数点取 两位的个数

      select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss'),to_char(sal,'$99,999.99') from emp; 

      显示1980年入职的所有员工

      select ename to_char(hiredate,'yyyy') from emp where to_char(hiredate,'yyyy') = 1980;  

      显示12月份入职的员工

      select ename to_cahr(hiredate,'mm') from emp to_cahr(hiredate,'mm') = 12;

       to_date:字符串转换成date类型

      sys_context:系统函数

      terminal:当前会话客户所对应的终端的标识符

      language:语言

      db_name:当前数据库名称

      select sys_content('userenv','db_name') from dual;

      select sys_content('userenv','language') from dual;

      select sys_content('userenv','session_user') from dual;

      select sys_content('userenv','current_schema') from dual;//选择方案

      用户和方案的关系:

      用户:用户一旦创建,oracle就会为用户创建方案,方案名和用户名一致,是一样对应的            

      方案:方案中包含了各种各样的数据对象,表,视图,触发器,表空间,触发器,存储过程

      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle 远程连接