友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
喜书网 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

oracle从入门到精通(PDF格式)-第10章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




  LEAST(expr1';expr2'。。。)  

  返回其参数中最小的表达式,其余同上。  

  NVL(EXPR1;EXPR2)  

  类型必须匹配,如果 EXPR1是 NULL,则返回 EXPR2,否则返回 EXPR1。返回值与 EXPR1类型相 

  同,除非 EXPR1 是字符类型,在这种情况下将返回 VARCHAR2类型。这个函数用于确保查询记录 

  集中不包含 NULL 值。  

  NVL2(EXPR1;EXPR2;EXPR3)  

  如果 EXPR1是 NULL,则返回 EXPR2,否则返回 EXPR3。返回值与 EXPR2 类型相同,除非 EXPR2 

  是字符类型,在这种情况下将返回 VARCHAR2 类型。  

  SYS_CONNECT_BY_PATH  返回列值的从根到结点的路径,它仅在层次查询中有效。  

  SYS_CONTEXT(namespace;parameter';length')  

  返回与 namespace 的内容相关联的 patameter 的值。使用 DBMS_SESSION。SET_CONTEXT 过程设置 

  参数和 namespace。返回值是 VARCHAR2 类型,如果没有指定 length;则最大长度是 255字节。  

  SYS_DBURIGEN  

  产生一个 URL 用于从数据库中提取 XML 文档。  

  SYS_GUID  

  以 16 位 RAW类型值形式返回一个全局唯一的标识符。  

  SYS_TYPEID(object_type)  

  返回指定类型 object_type 的类型 ID。  

  SYS_XMLAGG  

  将几个 XML文档或文档片段组合为一个文档。  

  SYS_XMLGEN  

  返回一个基于数据库中数据的 XML文档片段。  

  TREAT(expr AS 'REF' 'schema。'type)  

  TREAT 用于改变一个表达式的声明类型。仅可以将声明类型改变为给定表达式的子类型或超类 

  型。以类型'schema。'type 返回expr,如果指定了 REF,则返回 REF。  

  UID  

  返回一个唯一标识当前数据库用户的整数,UID没有参数。  

  VSIZE(x)返回 X 内部表示的字节数。  

  NULLIF(a;b)如果 A 等于B 返回NULL,如果不等于返回 B。  

  DUMP(expr';number_format';start_position'';length'')  

  返回一个包含 EXPR 内部表示信息的 VARCHAR 值,如果没有指定 NUMBER_FORMAT,则返回结果以 



                                 第 22 页,共 106 页 


…………………………………………………………Page 23……………………………………………………………

资源来自网络,仅供学习!                                                           Oracle 从入门到精通 



  十进制形式返回。如果指定了 start_position和 length,则返回从 start_position开始,长 

  为 length 字节的字符串,缺省是返回整个表达式。所返回的数据类型是内部数据类型编码的对 

  应数字。  

    

  NUMBER_FORMAT  

  格式  返回结果  

  8     8 进制符号  

  10        10 进制符号  

  16        16 进制符号  

  17        单字符  

    

  编码            数据类型                            有效于  

      

  1         VARCHAR2                    ORACLE7  

  2         NUMBER                      ORACLE7  

  8         LONG                        ORACLE7  

  12            DATE                        ORACLE7  

  23            RAW                         ORACLE7  

  24            LONG RAW                    ORACLE7  

  69            ROWID                       ORACLE7   

  96            CHAR                        ORACLE7  

  112           CLOB                        ORACLE8  

  113           BLOB                        ORACLE8  

  114           BFILE                       ORACLE8  

  180           TIMESTAMP                   ORACLE9i      

  181           TIMESTAMP WITH TIMEZONE     ORACLE9i  

  182           INTERVAL YEAR TO MONTH      ORACLE9i  

  183           INTERVAL DAY TO SECOND      ORACLE9i  

  208           UROWID                      ORACLE9i  

  231           TIMESTAMP WITH LOCAL TIMEZONE           ORACLE9i      

    

  USERENV'option'  

  基于 option返回包含有关当前会话信息的 VARCHAR2 值。  

    

  函数的行为  

    

  选项值                   USERENV(option)的行为  

    

  'OSDBA'               如果当前会话将 OSDBA角色的设置打开了,则返回'TRUE';否则返回 

  'FALSE';注意返                   回值是 VARCHAR2 类型,而不是 BOOLEAN 类型。  

  'LABEL'               仅对 TRUSTED ORACLE 中有效,返回当前会话标志。  

'LANGUAGE'          返回当前会话所使用的语言和地域,以及数据库字符集,这是 NLS 参数,返 

                    回形式是 LANGUAGE_TERRITORY。CHARACTERSET。  

'TERMINAL'          返回当前会话所使用终端的操作系统标识符。对于分布式的 SQL 语句,返回 

                    的是本地会话的标识符。  

'SESSIONID'         如果初始化参数 AUDIT_TRAIL 被设置为 TRUE,那么将返回审计会话标识符。 



                                    第 23 页,共 106 页 


…………………………………………………………Page 24……………………………………………………………

资源来自网络,仅供学习!                                                           Oracle 从入门到精通 



                    在分布式 SQL 语句中,USERENV('SESSIONID')是无效的。  

'ENTRYID'           如果初始化参数 AUDIT_TRAIL 被设置为 TRUE,那么将返回可用的审计项标识 

                 符。在分布式 SQL 语句中 USERENV('ENTRYID')是无效的。  

  'LANG'            返回语言名称的 ISO 缩写符号。它的格式比 USERENV('LANGUAGE')要短。  

    

  例:  

    select USERENV('TERMINAL');USERENV('LANGUAGE') from dual;  

      

    USERENV('TERMINA USERENV('LANGUAGE')  

    ……………………………………………………………………………………………………………………………………………………………………………… 

    WNJ              SIMPLIFIED CHINESE_CHINA。ZHS16GBK  

    



2。  条件表达式:  



  CASE 表达式(简单 CASE)  

  语法:  

  CASE 表达式 WHEN  条件1 THEN 返回值 1  

        WHEN  条件 2 THEN 返回值 2  

    。  

    。  

    。  

        WHEN  条件 n THEN 返回值 n  

  ELSE  返回值  

  END     

    

  DECODE 函数  

    

  语法:  

  DECODE(  

    条件;比较值1,返回值 1  

         比较值2,返回值 2  

                。  

                。  

                。  

         比较值n,返回值 n  

         返回值(不满足条件时)                  

      )  

    

  select last_name;salary;  

    decode( trunc(salary/2000;0);//条件  

        0; 0。00;//比较值 1,返回值 1  

        1; 0。09,  

        2; 0。20,  

        3; 0。30,  

        4; 0。40,  



                                    第 24 页,共 106 页 


…………………………………………………………Page 25……………………………………………………………

资源来自网络,仅供学习!                                                        Oracle 从入门到精通 



       5; 0。42,  

       6; 0。44,  

        0。45  

          )   TAX_RATE  

  from employees  

  where department_id=80;  

    



3。  从多表中显示数据:  



  SQL(老版本的)  

    

  等值查询  

  SELECT TABLE1。COLUMN;TABLE2。COLUMN FROM TABLE1;TABLE2 WHERE  

  TABLE1。COLUMN1=TABLE2。COLUMN2;//自然连接使用 AND 操作符增加查询条件  

  使用表的别名来简化查询,提高查询功能。  

    

  SELECT E。ID,D。ID FROM EMPL E,DEP D WHERE E。NAME=D。NAME;   

  E、D:表别名  

  多表等值连接查询  

  为了连接 N个表,至少需要 N…1 个连接条件。  

    

  非等值查询  

  使用 BETWEEN AND 查询近似值作为连接条件的多表结果。  

  WHERE E。SALARY BETWEEN J。LOW AND J。HIGH   

    

  外连接查询  

  SELECT T1。COL;T2。COL FROM WHERE T1。COL(+)=T2。COL;左外连接所有 T2 的T1 信息。          

  SELECT T1。COL;T2。COL FROM WHERE T1。COL=T2。COL(+);右外连接所有 T1 的T2 信息。  

  为了看到与连接条件不匹配的数据,就必须得用外连接。  

    

  自连接  

  通过表的别名来创建虚拟逻辑表;进行自连接查询。  

  select worker。last_name || 'work for' || manager。last_name  

  from employees worker;employees manager  

  where worker。manager_id=manager。employee_id;  

    

  9I 适应性连接:  

  select t1。col;t2。col  

  from table   

  cross join t2 //交叉连接  

  natural join t2//自然连接:把两表中所有等值的字段都作为连接条件(但这些连接条件不用 

  写)。  

      从两个表中选出连接列的值相等的所有行。   

      如果两个列的名称相同,但数据类型不同;或是类型相同,意义不同都会出错。  

    



                                  第 25 页,共 106 页 


…………………………………………………………Page 26……………………………………………………………

资源来自网络,仅供学习!                                                      Oracle 从入门到精通 



  join t2 using (column_name);基于自然连接,只有在 USING 中出现的,才作为连接条件(在 

  USING 中列名前一定不能加前缀)。  

     

  join t2 on (t1。col=t2。col);基于 ON 的自然连接。等值、非等值或自连接都可以实现。  

    

  left|right|full outer join t2 on(t1。col=t2。col);  

    

    select e。last_name;d。department_name;l。city  

    from employees e  

    left outer join departments d on e。department_id=d。department_id  

          right oute
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!