ITPub博客

首页 > 数据库 > Oracle > 1z0-007 20:9iExtensions to DDL&DML statements

1z0-007 20:9iExtensions to DDL&DML statements

原创 Oracle 作者:OmarChina 时间:2007-05-20 14:37:43 0 删除 编辑

PART20--9i extensions to ddl&dml statements

objectives
1,多表插入的類型:
無條件insert
重點insert
條件all insert
條件first insert
2,創建和使用外部表
3,創建constrance時name index

[@more@]

1 無條件insert all
example:
insert all
into copy_table_emp1 values(ename,sal)
into copy_table_emp2 values(ename,sal)
select ename,sal from emp where sal>1000;

2,條件insert all
example:
insert all
when sal>3000 then
into copy_table_emp1 values(ename,sal)
when sal<3000 then
into copy_table_emp2 values(ename,sal)
select ename,sal from emp;

3,條件first insert

4,重點insert(pivoting insert)
example:
inesrt all
into copy_table_emp1 values(ename,sal)
into copy_table_emp1 values(ename,deptno)
into copy_table_emp1 vaules(ename,comm)
select ename,sal,deptno,comm from emp where sal>5000

-----------------------------------------------------------------------------------------
外部表:
外部表是只讀的,儲存在數據庫之外,可以查詢,不可以用dml語句或create index,用create table創建!
----------------------------------------------------------------------------------------
用 CREATE TABLE 语句创建索引:
example:
create table new_table(
empno number(10)
primary key using index
(create index empno_idx on new_table(empno)),
first_name varchar2(10),
last_name varchar2(10));
select * from user_indexes where table_name='NEW_TABLE';

分級取回數據
1,創建樹型結構報告
2,格式化分級數據
3,從樹型結構中去除分支
分級查詢
SELECT [LEVEL], column, expr...
FROM table
[WHERE condition(s)]
[START WITH condition(s)]
[CONNECT BY PRIOR condition(s)] ;
------------------------------------------------
1,Start with column1=value
start with 指定了滿足的條件,是一個起點.如start with ename='KING'
2,Connect by prior column1=column2
指定遍歷樹的方向,如connect by prior empno=mgr和mgr=empno
empno=mgr是從頂向下遍歷,mgr=empno是從底向上遍歷.
SELECT LEVEL, EMPNO, ENAME, JOB, MGR
FROM EMP
START WITH EMPNO = 7839
CONNECT BY PRIOR EMPNO = MGR(or mgr=empno)
ORDER BY LEVEL
上例是從頂向下遍歷的.
3,可以用level偽列進行行分等級,
SELECT LPAD(ENAME, LENGTH(ENAME) + (LEVEL * 4) - 4, ' ')
FROM EMP START WITH EMPNO = 7839
CONNECT BY PRIOR EMPNO = MGR
4,用where子句可以修減節點,如where ename<>'JOHNE'
用connect by可以修減分支,如connect by prior EMPNO=MGR AND ename<>'JOHNE'
--------------------------------------------------------------------------------------------------樹的學習
--查找 FORD的上级
--在查找的时候,由于是由下向上,树倒过来,父节点是MGR,子节点是EMPNO
--PRIOR MGR=EMPNO也可以
SELECT EMPNO, ENAME, MGR
FROM SCOTT.EMP
CONNECT BY EMPNO=PRIOR MGR
START WITH ENAME = 'FORD';

--查找 FORD的下级
--在查找的时候,从上向下,树是正的,父节点是EMPNO,子节点是MGR
-- MGR=PRIOR EMPNO也可以
SELECT EMPNO, ENAME, MGR
FROM SCOTT.EMP
CONNECT BY PRIOR EMPNO = MGR
START WITH ENAME = 'FORD';
理解的方法:嘿嘿~~
PRIOR manager_id——经理优先,即比经理还要有优先权,那就是经理的老大了~~~那就是找这个人的上级了
PRIOR employee_id——雇员优先,即雇员有比较高的优先权,那就是比雇员小了~~~那就是这个人的下级了
此外,WHERE条件是限制结果集出来的条数(仅仅限制该结果集,该结果集下的(或上的)分支不影响),CONNECT BY 后的条件是限制分支的条数(即整条分支都受到影响)。
--------------------------------------------------------------------------------------------------select SUBSTR(A,ROWNUM,1),ROWNUM from B connect by rownum<=length(A)

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9925929/viewspace-915626/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Using Meger
请登录后发表评论 登录
全部评论
  • 博文量
    68
  • 访问量
    1008513