设为首页 收藏本站
查看: 561|回复: 1

[经验分享] Oracle数据库的高级查询、事物、过程及函数

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2013-12-26 09:27:16 | 显示全部楼层 |阅读模式
Oracle高级查询、事物、过程及函数
    SQL函数介绍:
        一:SQL函数分类:(1)单行函数:是指输入一行输出一列的函数.
               (2)多行函数:是指输入多行数据输出一个结果,多行函数也称为分组函数.
        二:单行函数
            (1)数值函数:输入和返回的值都是数值型,并且多数函数精确到38位.

               函数方法:

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

1
2
例如:select ABS('-12.3') from dual;
     返回结果:12.3
                    CEIL(N)表示返回大于等于数字n的最小整数.(向上取)                 

1
2
例如:select CEIL('-5.3') from dual;
    返回结果:-5
                    FLOOR(N)表示返回小于等于数字n的最大整数(向下取)               

1
2
例如:select floor('5.3') from dual;
       返回结果:5
                    ROUND(N,[M])该函数用于执行四舍五入运算.     

1
2
例如:select round('12635.714265',3) from dual;
       返回结果:12635.714
                    TRUNC(N,[M])该函数用于截取数字         

1
2
例如:select TRUNC('1245.567',2) from dual;   
       返回结果:1245.56
                    power(n,m)表示取你的次方         

1
2
例如:select power(3,2) from dual;
       返回结果:8
                    sqrt(n)表示n的平方                  

1
2
例如:select sqrt(3) from dual;
       返回结果:9
                    sign(n)表示标示数字n的正负


1
2
例如: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语句之后,系统确定事务变化,结束事务,删除保存点,释放锁.                 

1
2
3
例如:update scott.emp set sal=200 where ename='MARY'
       commit;
       select sal from scott.emp ename='MARY'
                   回滚事务:当用户中出现错误时,或是运行程序ide终端用户决定不保存对数据库进行的修改时,就需要进行回滚.                     

1
2
3
例如: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)持久性:表示一旦提交了事务,它就永远生效(在系统中产生的所有变化将是永久的).

             函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
--创建函数语法
     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;   



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-12328-1-1.html 上篇帖子: Oracle数据库空间管理 下篇帖子: oracle 添加列到指定位置 Oracle 数据库

尚未签到

发表于 2014-1-13 06:58:30 | 显示全部楼层
我不是真的喜欢回忆过去,而是现在的时光没有当初值得怀念

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表