zoukankan      html  css  js  c++  java
  • 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;    


                      

                  

  • 相关阅读:
    kubernetes构架及组件介绍
    二进制部署k8s
    Git
    Redis sentinel
    redis主从复制
    k8s安装
    基于Jenkins实现可腹部回滚的cicd平台
    Redis基础命令和持久化
    构建自动发现的Docker服务架构
    Redis
  • 原文地址:https://www.cnblogs.com/ranfang/p/3490982.html
Copyright © 2011-2022 走看看