Oracle数据库的高级查询、事物、过程及函数

Oracle高级查询、事物、过程及函数
    SQL函数介绍:
        一:SQL函数分类:(1)单行函数:是指输入一行输出一列的函数.
               (2)多行函数:是指输入多行数据输出一个结果,多行函数也称为分组函数.
        二:单行函数
            (1)数值函数:输入和返回的值都是数值型,并且多数函数精确到38位.
                
               函数方法:

        ABS(N)表示该函数用于返回数字n的绝对值              

 例如:select ABS('-12.3') from dual;
      返回结果:12.3

                    CEIL(N)表示返回大于等于数字n的最小整数.(向上取)                 

   例如:select CEIL('-5.3') from dual;
       返回结果:-5

                    FLOOR(N)表示返回小于等于数字n的最大整数(向下取)                

 例如:select floor('5.3') from dual;
        返回结果:5

                    ROUND(N,[M])该函数用于执行四舍五入运算.     

   例如:select round('12635.714265',3) from dual;
          返回结果:12635.714

                    TRUNC(N,[M])该函数用于截取数字          

  例如:select TRUNC('1245.567',2) from dual;    
         返回结果:1245.56

                    power(n,m)表示取你的次方         

    例如:select power(3,2) from dual;
           返回结果:8

                    sqrt(n)表示n的平方                   

 例如:select sqrt(3) from dual;
        返回结果:9

                    sign(n)表示标示数字n的正负
                     

  例如:select sign(2) from daul;
        返回结果:1,如果n为0则返回0,如果为负数,则返回-1.

    (2)字符函数:输入参数是字符型,返回的是字符型和数值型    
               函数方法:
                   LOWER(CHAR)将字符串转化为小写格式.
                   upper(char)将字符串转化为大写格式.
                   LTRIM(CHAR,[SET]):去掉字符串char左端包含的set中的任何字符.set默认为空格.
                   RTRIM(CHAR,[SET]):去掉字符串char右端包含的set中的任何字符.set默认为空格.
                   REPLACE(CHAR,SEARCH_STRING,[replace_string]):将字符串中的字符替换为指定的字符,search_string表示字符串中的字
符,replace_string表示要替换成的字符串.
                   Substr(char,start,startstring):截取字符串,start表示从字符串char中的第几个起,startstring表示截取几个
                   concat(char1,char2):将字符char1与字符串char2链接在一起.
                   Instr(char,char2):该函数表示查询某个字符串中某个字符的索引,char2表示char字符串中的任意一个字符
            (3)转换函数:将数值从一种数据类型转换为另一种数据类型.
               函数方法:
                   TO_number();将符合特定数字格式的字符串转换成数字值.
                   TO_CHAR(data,[n[,fmt[,nls_param]]]):将日期型转变为字符串,其中fmt用于指定日期格式,nls_param用于指定NLS参数.
                   TO_DATE():将符合特定格式的字符串转变为Date类型的值.
                   NVL(exprl,exprl2):将空值null转变为实际值.exprl为空,返回exprl2,exprl不为空,则返回exprl.
                   NVL2(expl,exprl2,exprl3):用于出来空null,exprl不为空,返回exprl2,exprl为空,则返回exprl3.
            (4)多表查询:
                   分为内外链接,子链接,自连接,联合查询.
                   使用集合操作符:
                    union:返回查询检索到的所有不重复的行(补集).
                    union all:返回检索的所有行,包括重复行(并集).
                    intersect:返回两个查询都检索到的行(交集).
                    minus:返回第一个查询检索到的行减去第二个查询检索的行所剩的行(差集).
            (5)事务处理:用于确保数据库数据的一致性,事务就是一个单元的工作,包括一系列的操作,这些操作要么全部提交成功,要么全部失败.事务确保多个数据的操作作为一个事务单元来处理.
                  提交事务:在事物处理中,用户只需使用COMMMIT语句就可以结束事物,当执行COMMIT语句之后,系统确定事务变化,结束事务,删除保存点,释放锁.                

  例如:update scott.emp set sal=200 where ename='MARY'
         commit;
         select sal from scott.emp ename='MARY'

                   回滚事务:当用户中出现错误时,或是运行程序ide终端用户决定不保存对数据库进行的修改时,就需要进行回滚.                     

  例如:update scott.emp set sal=3000 where ename='MARY'
        ROLLBACK;
        SELECT sal from scotte.emp where ename='MARY'

                    设置保存点:设置保存点是使用SQL命名SAVEPOInt来完成的,也可以使用dbsm_transaction的过程savepoint来设置保存点.
                                    保存点是很有用的事务处理特性,它们可以让用户将单独的大规模事务处理分割成为较小的部分,将它们作为单独的语句进行回滚,事务处理中,其他以前的语句不会受影响.
                   取消事务:为了取消部分事务,用户可以退回到保存点,回退到保存点即可以使用rollback命名.也可以使用包dbms_transaction的过程
rollback_savepoint.            
                  事务的ACID特性:
                        (1)原子性:表示事务处理要么全部进行,要么全部撤销.
                        (2)一致性:表示事务处理要将数据库从一种状态转变为另一种状态.
                        (3)隔离性:表示在事务提交之前,事物处理的效果不能有系统中的其他事务处理看到.
                        (4)持久性:表示一旦提交了事务,它就永远生效(在系统中产生的所有变化将是永久的).

             函数

 --创建函数语法
      create [or replace] function function_name(argument1 [model] datatype1,argument1 [model] datatype1,...)
      return datatype
      is[as]
      PL/SQL BLOCK;
  --创建函数
      create or replace funciton get_user
      return varchar2
      is
      v_user varchar(100);
      begin
      select ename into  v_user from scott.emp where empno='7369';
      return v_user;
      end;
  --使用变量接受函数返回值
     declare
     username varchar(100);
     begin
     username:=get_user;
                    dbms_output.put_line(username);
                    end;
            --可以使用SQL语句直接调用函数,带out和in out参数的函数不能在SQL中被调用
             select get_user from dual;

 

        存储过程

 --创建存储过程
   create [or replace] procedure procedure_name(argument1 [model] datatype1,argument1 [model] datatype1,...)--指定参数数据类型时,不能指定其长度
   is[as]
   PL/SQL BLOCK;
 --调用存储过程
   declare
   begin
   存储过程名/存储过程名(argument);
   end;    


                  

              

 

posted @ 2013-12-25 16:48  十年尘梦  阅读(400)  评论(0编辑  收藏  举报