ORACLE技术记录

1. decode用法:
decode (expression, search_1, result_1)
decode (expression, search_1, result_1, search_2, result_2)
decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n)

decode (expression, search_1, result_1, default)
decode (expression, search_1, result_1, search_2, result_2, default)
decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n, default)

decode函数比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。
2. 连接查询:
FORM Employee, Department
WHERE Employee.emp_deptid(+) = Department.deptid此SQL文使用了右连接,即“(+)”所在位置的另一侧为连接的方向,右连接说明等号右侧的所有记录均会被显示,无论其在左侧是否得到匹配

3. oracle 分页:
SELECT * FROM   
(   
SELECT A.*, ROWNUM RN   
FROM (SELECT * FROM TABLE_NAME) A   
WHERE ROWNUM <= 40   
)   
WHERE RN >= 21  

其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM <= 40和RN >= 21控制分页查询的每页的范围。

4. 合并列值:
   a:自定义函数实现


5. 树实现:
   a:通过子节点向根节点追朔.
select * from dept start with deptid=76 connect by prior paredeptid=deptid

   b:通过根节点遍历子节点
select * from dept start with paredeptid=0 connect by prior deptid=paredeptid

   c:可通过level 关键字查询所在层次
select a.*,level from dept a start with paredeptid=0 connect by prior deptid=paredeptid

    start with 后面所跟的就是就是递归的种子,也就是递归开始的地方;
    connect by  prior后面的字段顺序是有讲究的;
    若prior缺省:则只能查询到符合条件的起始行,并不进行递归查询; 
     还有 可以使用sys_connect_by_path函数,按树的层次显示
   
6. 创建表空间:
    
create tablespace YWGTOA
    logging
    -- DATAFILE 用于指定数据文件的具体位置和大小 datafile 'D:\soft\oracle\product\10.2.0\oradata\orcl\ywgtoa.dbf' 
    size 100M 
    -- 是否自动增长
    autoextend on 
    -- 
    next 32m maxsize 2048m
    extent management local;


7. 数据导出
如果是导出本机的Oracle数据库:
exp pcisv62/11@ORCL  file="d:\pcisv62081226.dmp"  full=y   

(ORCL为本地数据库监听)

如果是导出服务器端的Oracle数据:
exp pcisv62/11@tnsname  file="d:\pcisv62081226.dmp" full=y
(tnsname为COREV6_DBSERVER,SID为COREV6,主机为DBSERVER。)

注意:必须是 DBA 才能执行完整数据库或表空间导出操作。

8. instr
INSTR方法的格式为
INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)

例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置。

默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。

所以SELECT INSTR('CORPORATE FLOOR', 'OR', -1, 1) "Instring" FROM DUAL的显示结果是

Instring
——————
14
0 0 0

你可能感兴趣的:(oracle,sql)