Professional Documents
Culture Documents
Black_Snail
Oracle SQL
........................................................................................................................................ 2
1 ................................................................................................... 4
2 SQL .......................................................................................... 5
2.1 IS NULL IS NOT NULL.................................................................................... 5
2.2 ...................................................................................................................... 5
2.3 % like .................................................................................. 6
2.4 Order by ...................................................................................................... 6
2.5 NOT......................................................................................................................... 6
2.6 IN EXISTS........................................................................................................ 7
3 SQL .................................................................................................. 9
3.1 ORACLE ................................................................................ 9
3.2 Table ................................................................................................... 9
3.3 SQL ...................................................................................................... 10
3.4 ()............................. 11
3.5 WHERE ................................................................................. 12
3.6 SELECT * ............................................................................. 13
3.7 ........................................................................................ 13
3.8 DECODE .................................................................. 14
3.9 ,........................................................................... 15
3.10 ...................................................................................................... 16
3.11 TRUNCATE DELETE .......................................................................... 16
3.12 COMMIT ........................................................................................ 16
3.13 ...................................................................................................... 17
3.14 Where HAVING .................................................................... 17
3.15 .................................................................................................. 17
3.16 SQL . ........................................................................... 18
3.17 (Alias) .......................................................................................... 20
3.18 EXISTS IN ............................................................................................. 20
3.19 NOT EXISTS NOT IN........................................................................... 21
3.20 EXISTS ....................................................................................... 21
3.21 EXISTS DISTINCT ............................................................................... 22
3.22 SQL ........................................................................ 22
3.23 TKPROF SQL ....................................................... 23
3.24 EXPLAIN PLAN SQL .................................................................. 23
3.25 .................................................................................................. 25
3.26 .......................................................................................................... 25
3.27 ...................................................................................................... 27
3.28 .................................................................................................. 27
POSS www.poss.cn
Oracle SQL
3.29 .......................................................................................... 28
3.30 .............................................................................................. 29
3.31 ...................................................................................................... 30
3.32 .................................................................................. 30
3.33 ...................................................................................................... 31
3.34 NOT ................................................................................ 31
3.35 >=>........................................................................................................... 33
3.36 UNION OR ()................................................................. 33
3.37 IN OR ................................................................................................. 36
3.38 IS NULL IS NOT NULL ........................................... 37
3.39 .................................................................................. 37
3.40 ORACLE ............................................................................................. 38
3.41 UNION-ALL UNION ( ) ........................................... 39
3.42 (Hints) .................................................................................................. 40
3.43 WHERE ORDER BY ............................................................................ 41
3.44 ...................................................................................... 42
3.45 WHERE .................................................................................. 43
3.46 ...................................................................................................... 44
3.47 CBO ......................................................................... 45
3.48 .................................................................................. 46
3.49 GROUP BY ................................................................................................ 46
3.50 .............................................................................................................. 47
3.51 (CURSORs) ............................................................................. 47
3.52 EXPORT IMPORT ................................................................................ 47
3.53 ...................................................................................................... 48
POSS www.poss.cn
Oracle SQL
1
SQL
SQL
SQL
POSS www.poss.cn
Oracle SQL
2 SQL
SQL where where
SQL SQL
2.2
employee
FIRST_NAME LAST_NAME.Bill Cliton
SQL
POSS www.poss.cn
Oracle SQL
SQL
2.3 % like
cliton SQL
2.4 Order by
ORDER BY Oracle Order by
Order by
order by
order by
order by
2.5 NOT
where
andor notNOT
NOT
POSS www.poss.cn
Oracle SQL
Oracle salary
2.6 IN EXISTS
where
where
IN
Oracle IN EXISTS
POSS www.poss.cn
Oracle SQL
EXISTS IN
POSS www.poss.cn
Oracle SQL
3 SQL
Oracle SQL
3.1 ORACLE
ORACLE 3 :
, init.ora OPTIMIZER_MODE ,
RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . SQL (session)
.
(CBO, Cost-Based Optimizer) , analyze ,
(object statistics).
(CHOOSE),
analyze . table analyze , CBO , ,
RULE .
,ORACLE CHOOSE , (full table
scan) , CHOOSE ,.
3.2 Table
ORACLE :
a.
. ORACLE (database block)
.
b. ROWID
ROWID ,, , ROWID
..ORACLE (INDEX)(ROWID).
ROWID ,.
POSS www.poss.cn
Oracle SQL
3.3 SQL
SQL ,, ORACLE SQL .
SGA(system global area)(shared buffer pool)
. , SQL (),
, ORACLE . ORACLE
SQL . ORACLE
(cache buffering) ,.
init.ora ,,
,.
ORACLE SQL ,ORACLE .
,ORACLE ,,SQL (
,).:
A.:
.
:
SELECT * FROM EMP;
FROM EMP;
B.:
:
Jack
Jill
sal_limit
private synonym
Work_city
public synonym
Plant_detail
public synonym
sal_limit
private synonym
Work_city
public synonym
Plant_detail
table owner
SQL .
POSS www.poss.cn
10
Oracle SQL
SQL
like 'NEW%';
select a.sdesc,b.location from work_city a ,
private
synonym - sal_limit ,
SQL (),(,
)
a.
select pin , name from people where pin = :blk1.pin;
select pin , name from people where pin = :blk1.pin;
b.
select pin , name from people where pin = :blk1.ot_ind;
select pin , name from people where pin = :blk1.ov_ind;
3.4 ()
ORACLE FROM , FROM
( driving table). FROM ,
. ORACLE , .
,(FROM ),(FROM
),.
:
TAB1 16,384
TAB2 1
TAB2 ()
POSS www.poss.cn
11
Oracle SQL
TAB2 ()
select count(*) from tab2,tab1 26.09
3 , (intersection table),
.
:
EMP LOCATION CATEGORY .
SELECT *
FROM LOCATION L ,
CATEGORY C,
EMP E
WHERE E.EMP_NO BETWEEN 1000 AND 2000
AND E.CAT_NO = C.CAT_NO
AND E.LOCN = L.LOCN
SQL
SELECT *
FROM EMP E ,
LOCATION L ,
CATEGORY C
WHERE E.CAT_NO = C.CAT_NO
AND E.LOCN = L.LOCN
AND E.EMP_NO BETWEEN 1000 AND 2000
3.5 WHERE
ORACLE WHERE ,,
WHERE , WHERE .
:
(, 156.3 )
SELECT
FROM EMP E
WHERE SAL > 50000
POSS www.poss.cn
12
Oracle SQL
AND
JOB = MANAGER
JOB = MANAGER;
3.6 SELECT *
SELECT COLUMN , SQL *
.,. ,ORACLE , *
, , .
3.7
SQL , ORACLE : SQL ,
, , . , , ORACLE
.
,
0342 0291 .
1 ()
SELECT EMP_NAME , SALARY , GRADE
FROM EMP
WHERE EMP_NO = 342;
POSS www.poss.cn
13
Oracle SQL
OPEN C1(291);
FETCH C1 INTO ,..,.. ;
CLOSE C1;
END;
3 ()
SELECT A.EMP_NAME , A.SALARY , A.GRADE,
B.EMP_NAME , B.SALARY , B.GRADE
FROM EMP A,EMP B
WHERE A.EMP_NO = 342
OR B.EMP_NO = 291;
:
SQL*Plus , SQL*Forms Pro*C ARRAYSIZE ,
, 200
3.8 DECODE
DECODE .
:
SELECT COUNT(*)SUM(SAL)
FROM EMP
WHERE DEPT_NO = 0020
AND ENAME LIKE SMITH%;
SELECT COUNT(*)SUM(SAL)
POSS www.poss.cn
14
Oracle SQL
FROM EMP
WHERE DEPT_NO = 0030
AND ENAME LIKE SMITH%;
DECODE
SELECT COUNT(DECODE(DEPT_NO,0020,X,NULL)) D0020_COUNT,
COUNT(DECODE(DEPT_NO,0030,X,NULL)) D0030_COUNT,
SUM(DECODE(DEPT_NO,0020,SAL,NULL)) D0020_SAL,
SUM(DECODE(DEPT_NO,0030,SAL,NULL)) D0030_SAL
FROM EMP WHERE ENAME LIKE SMITH%;
,DECODE GROUP BY ORDER BY .
3.9 ,
,(
)
:
SELECT NAME
FROM EMP
WHERE EMP_NO = 1234;
SELECT NAME
FROM DPT
WHERE DPT_NO = 10 ;
SELECT NAME
FROM CAT
WHERE CAT_TYPE = RD;
3 :
SELECT E.NAME , D.NAME , C.NAME
FROM CAT C , DPT D , EMP E,DUAL X
WHERE NVL(X,X.DUMMY) = NVL(X,E.ROWID(+))
AND NVL(X,X.DUMMY) = NVL(X,D.ROWID(+))
POSS www.poss.cn
15
Oracle SQL
3.10
( ROWID)
DELETE FROM EMP E
WHERE E.ROWID > (SELECT MIN(X.ROWID)
FROM EMP X
WHERE X.EMP_NO = E.EMP_NO);
3.12 COMMIT
, COMMIT, ,
COMMIT :
COMMIT :
a..
b.
c.redo log buffer
d.ORACLE 3
POSS www.poss.cn
16
Oracle SQL
(: COMMIT ,
)
3.13
, count(*) count(1) , ,
. COUNT(EMPNO)
(: CSDN ,, ,
,)
3.15
SQL ,.
:
POSS www.poss.cn
17
Oracle SQL
SELECT TAB_NAME
FROM TABLES
WHERE TAB_NAME = ( SELECT TAB_NAME
FROM TAB_COLUMNS
WHERE VERSION = 604)
AND DB_VER= ( SELECT DB_VER
FROM TAB_COLUMNS
WHERE VERSION = 604)
SELECT TAB_NAME
FROM TABLES
WHERE (TAB_NAME,DB_VER)
= ( SELECT TAB_NAME,DB_VER)
FROM TAB_COLUMNS
WHERE VERSION = 604)
Update Column :
:
UPDATE EMP
SET EMP_CAT = (SELECT MAX(CATEGORY) FROM EMP_CATEGORIES),
SAL_RANGE = (SELECT MAX(SAL_RANGE) FROM EMP_CATEGORIES)
WHERE EMP_DEPT = 0020;
:
UPDATE EMP
SET (EMP_CAT, SAL_RANGE)
= (SELECT MAX(CATEGORY) , MAX(SAL_RANGE)
FROM EMP_CATEGORIES)
WHERE EMP_DEPT = 0020;
3.16 SQL .
SELECT H.EMPNO,E.ENAME,H.HIST_TYPE,T.TYPE_DESC,COUNT(*)
FROM HISTORY_TYPE T,EMP E,EMP_HISTORY H
POSS www.poss.cn
18
Oracle SQL
SELECT H.EMPNO,LOOKUP_EMP(H.EMPNO),
H.HIST_TYPE,LOOKUP_HIST_TYPE(H.HIST_TYPE),COUNT(*)
POSS www.poss.cn
19
Oracle SQL
FROM EMP_HISTORY H
GROUP BY H.EMPNO , H.HIST_TYPE;
(: SQL . , SQL
. )
3.17 (Alias)
SQL , Column .,
Column .
(: Column SQL Column , SQL
Column ,SQL Column )
3.18 EXISTS IN
,,.,
EXISTS( NOT EXISTS).
:
SELECT *
FROM EMP ()
WHERE EMPNO > 0
AND DEPTNO IN (SELECT DEPTNO
FROM DEPT
WHERE LOC = MELB)
:
SELECT *
FROM EMP ()
WHERE EMPNO > 0
AND EXISTS (SELECT X
FROM DEPT
WHERE DEPT.DEPTNO = EMP.DEPTNO
AND LOC = MELB)
(: , NOT EXISTS NOT IN ,)
POSS www.poss.cn
20
Oracle SQL
3.20 EXISTS
, EXISTS
SELECT ENAME
FROM EMP E
WHERE EXISTS (SELECT X
FROM DEPT
WHERE DEPT_NO = E.DEPT_NO
POSS www.poss.cn
21
Oracle SQL
()
SELECT ENAME
FROM DEPT D,EMP E
WHERE E.DEPT_NO = D.DEPT_NO
AND DEPT_CAT = A ;
(: RBO , FILTER, NESTED LOOP)
3.22 SQL
SQL SQL:
SELECT EXECUTIONS , DISK_READS, BUFFER_GETS,
ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio,
ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run,
POSS www.poss.cn
22
Oracle SQL
SQL_TEXT
FROM V$SQLAREA
WHERE EXECUTIONS>0
AND
BUFFER_GETS > 0
POSS www.poss.cn
23
Oracle SQL
:
, SQLPLUS SET TRACE .
:
SQL> list
1 SELECT *
2 FROM dept, emp
3* WHERE emp.deptno = dept.deptno
SQL> set autotrace traceonly /*traceonly */
SQL> /
14 rows selected.
Execution Plan
----------------------------------------------------------
0 NESTED LOOPS
Statistics
---------------------------------------------------------0 recursive calls
2 db block gets
30 consistent gets
0 physical reads
0 redo size
2598 bytes sent via SQL*Net to client
503 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
POSS www.poss.cn
24
Oracle SQL
0 sorts (memory)
0 sorts (disk)
14 rows processed
,:
1.
2.
3.
4.
3.25
,. ,ORACLE
B-tree . ,. ORACLE Update
, ORACLE . .
,(primary key).
LONG LONG RAW , . ,
. ,, ,.
,. ,
, , .
INSERT , DELETE , UPDATE 4 , 5 I/O .
,.
:
.
ALTER INDEX <INDEXNAME> REBUILD <TABLESPACENAME>
3.26
ORACLE .
1 ( INDEX UNIQUE SCAN)
, WHERE INDEX.
POSS www.poss.cn
25
Oracle SQL
:
LODGING : LODGING LODGING_PK
MANAGER LODGING$MANAGER.
SELECT *
FROM LODGING
WHERE LODGING = ROSE HILL;
, SQL , , LODGING_PK
, ROWID, ROWID .
INDEX ,ORACLE ( ROWID
). , .
SQL INDEX UNIQUE SCAN .
SELECT LODGING
FROM LODGING
WHERE LODGING = ROSE HILL;
(INDEX RANGE SCAN)
:
1.
2.
1:
SELECT LODGING
FROM LODGING
WHERE LODGING LIKE M%;
WHERE , ORACLE LODGING_PK .
, .
2:
SELECT LODGING
FROM LODGING
WHERE MANAGER = BILL GATES;
POSS www.poss.cn
26
Oracle SQL
SQL , LODGING$MANAGER (
ROWID) ROWID LODGING . LODGING$MANAGER
,.
SQL LODGING , LODGING$MANAGER ,
ROWID .
WHERE , (WILDCARD),
.
SELECT LODGING
FROM LODGING
WHERE MANAGER LIKE HANMAN;
ORACLE .
3.27
(Driving Table)().
, SQL .
CBO (COST BASED OPTIMIZER), SQL
,,.
RBO (RULE BASED OPTIMIZER) , ,
, FROM .
:
SELECT A.NAME , B.MANAGER
FROM
WORKER A,
LODGING B
WHERE
A.LODGING = B.LODING;
3.28
SQL , ORACLE
, .
ORACLE ,.
POSS www.poss.cn
27
Oracle SQL
WHERE ..
.
, FROM
. FROM .
, WHERE
.
:
DEPTNO ,EMP_CAT .
SELECT ENAME,
FROM EMP
WHERE DEPT_NO = 20
AND EMP_CAT = A;
,DEPTNO , EMP_CAT .
:
TABLE ACCESS BY ROWID ON EMP
AND-EQUAL
INDEX RANGE SCAN ON DEPT_IDX
INDEX RANGE SCAN ON CAT_IDX
3.29
WHERE , ORACLE ,ORACLE .
:
DEPTNO ,EMP_CAT .
SELECT ENAME
FROM EMP
WHERE DEPTNO > 20
AND EMP_CAT = A;
EMP_CAT , DEPTNO .
:
TABLE ACCESS BY ROWID ON EMP
INDEX RANGE SCAN ON CAT_IDX
POSS www.poss.cn
28
Oracle SQL
3.30
ORACLE ,, WHERE
.
:
DEPTNO ,EMP_CAT .
SELECT ENAME
FROM EMP
WHERE DEPTNO > 20
AND EMP_CAT > A;
, ORACLE DEPT_NO . :
TABLE ACCESS BY ROWID ON EMP
INDEX RANGE SCAN ON DEPT_IDX
:
:
SQL> select index_name, uniqueness from user_indexes where table_name = 'EMP';
INDEX_NAME
UNIQUENES
------------------------------ --------EMPNO
UNIQUE
EMPTYPE
NONUNIQUE
SQL> select * from emp where empno >= 2 and emp_type = 'A' ;
no rows selected
Execution Plan
---------------------------------------------------------0
EMPNO ,,
!
POSS www.poss.cn
29
Oracle SQL
3.31
, ORACLE (
,) .
:
SELECT ENAME
FROM EMP
WHERE EMPNO = 7935
AND DEPTNO + 0 = 10
/*DEPTNO */
. ,,
SQL .
, EMP EMP_TYPE
EMP_CLASS .
SELECT ENAME
FROM EMP
WHERE EMP_TYPE = A
AND EMP_CLASS = X;
EMP_TYPE . . ,,
EMP_CLASS ,,,
. ,EMP_TYPE
EMP_CLASS.
. , EMP_CLASS .
.
SELECT ENAME
FROM EMP
WHERE EMP_TYPE = A
AND EMP_CLASS|| = X;
3.32
WHERE
:
POSS www.poss.cn
30
Oracle SQL
SELECT
FROM DEPT
WHERE SAL * 12 > 25000;
:
SELECT
FROM DEPT
WHERE SAL > 25000/12;
:
3.33
ORACLE
:
SELECT ENAME
FROM EMP
WHERE EMPNO = 2326
AND DEPTNO = 20 ;
EMPNO EMPNO
TABLE ACCESS BY ROWID ON EMP
INDEX UNIQUE SCAN ON EMP_NO_IDX
3.34 NOT
NOT, NOT .
ORACLENOT,.
:
: (,)
SELECT
POSS www.poss.cn
31
Oracle SQL
FROM DEPT
WHERE DEPT_CODE NOT = 0;
: (,)
SELECT
FROM DEPT
WHERE DEPT_CODE > 0;
,, ORACLE NOT .
NOT > to <=
NOT >= to <
NOT < to >=
NOT <= to >
:
,. SQL .
:
, ORACLE
NOT
POSS www.poss.cn
32
Oracle SQL
3.35 >=>
DEPTNO ,
:
SELECT *
FROM EMP
WHERE DEPTNO >=4
:
SELECT *
FROM EMP
WHERE DEPTNO >3
, DBMS DEPT 4
DEPTNO=3 DEPT 3 .
3.36 UNION OR ()
, UNION WHERE OR . OR
. , . column ,
OR .
, LOC_ID REGION .
:
SELECT LOC_ID , LOC_DESC , REGION
FROM LOCATION
WHERE LOC_ID = 10
UNION
SELECT LOC_ID , LOC_DESC , REGION
FROM LOCATION
WHERE REGION = MELBOURNE
:
SELECT LOC_ID , LOC_DESC , REGION
FROM LOCATION
WHERE LOC_ID = 10 OR REGION = MELBOURNE
POSS www.poss.cn
33
Oracle SQL
OR, .
:
WHERE KEY1 = 10 ()
OR KEY2 = 20
()
ORACLE
WHERE KEY1 = 10 AND
((NOT KEY1 = 10) AND KEY2 = 20)
:
: (a = 1003 , b = 1 1003 )
SQL> select * from unionvsor /*1st test*/
2 where a = 1003 or b = 1;
1003 rows selected.
Execution Plan
---------------------------------------------------------0
0 CONCATENATION
Statistics
---------------------------------------------------------0 recursive calls
0 db block gets
144 consistent gets
0 physical reads
0 redo size
63749 bytes sent via SQL*Net to client
7751 bytes received via SQL*Net from client
68 SQL*Net roundtrips to/from client
0 sorts (memory)
POSS www.poss.cn
34
Oracle SQL
0 sorts (disk)
1003 rows processed
SQL> select * from unionvsor /*2nd test*/
2 where b = 1 or a = 1003 ;
1003 rows selected.
Execution Plan
---------------------------------------------------------0
0 CONCATENATION
Statistics
---------------------------------------------------------0 recursive calls
0 db block gets
143 consistent gets
0 physical reads
0 redo size
63749 bytes sent via SQL*Net to client
7751 bytes received via SQL*Net from client
68 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1003 rows processed
POSS www.poss.cn
35
Oracle SQL
0 SORT (UNIQUE)
UNION-ALL
TABLE ACCESS (BY INDEX ROWID) OF 'UNIONVSOR'
INDEX (RANGE SCAN) OF 'UA' (NON-UNIQUE)
TABLE ACCESS (BY INDEX ROWID) OF 'UNIONVSOR'
INDEX (RANGE SCAN) OF 'UB' (NON-UNIQUE)
Statistics
---------------------------------------------------------0 recursive calls
0 db block gets
10 consistent gets
0 physical reads
0 redo size
63735 bytes sent via SQL*Net to client
7751 bytes received via SQL*Net from client
68 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
1003 rows processed
UNION consistent gets SQL*NET
3.37 IN OR
:
:
SELECT.
FROM LOCATION
WHERE LOC_ID = 10
OR
LOC_ID = 20
OR
LOC_ID = 30
:
SELECT
FROM LOCATION
WHERE LOC_IN IN (10,20,30);
POSS www.poss.cn
36
Oracle SQL
:
ORACLE8i
:
A B , A,B (123,null) ,
ORACLE A,B 123,null().
ORACLE . 1000
,!
, WHERE ORACLE
.
:
: ()
SELECT
FROM DEPARTMENT
WHERE DEPT_CODE IS NOT NULL;
: ()
SELECT
FROM DEPARTMENT
WHERE DEPT_CODE >=0;
3.39
, (leading column) where ,
.
:
. .
POSS www.poss.cn
37
Oracle SQL
SQL> create table multiindexusage ( inda number , indb number , descr varchar2(10));
Table created.
SQL> create index multindex on multiindexusage(inda,indb);
Index created.
SQL> set autotrace traceonly
SQL> select * from multiindexusage where inda = 1;
Execution Plan
---------------------------------------------------------0
, ,
3.40 ORACLE
,ORACLE . .
ORACLE Clause
ORDER BY
UNION
MINUS
INTERSECT
DISTINCT,MINUS,INTERSECT,UNION
MIN,MAX,COUNT
GROUP BY
ROWNUM
Queries involving Joins
CONNECT BY
POSS www.poss.cn
SORT ORDER BY
UNION-ALL
MINUS
INTERSECT
SORT UNIQUE
SORT AGGREGATE
SORT GROUP BY
COUNT or COUNT STOPKEY
SORT JOIN,MERGE JOIN,NESTED
LOOPS
CONNECT BY
38
Oracle SQL
POSS www.poss.cn
39
Oracle SQL
3.42 (Hints)
, Hints.
FULL ROWID
FULL hint ORACLE .
:
SELECT /*+ FULL(EMP) */ *
FROM EMP
WHERE EMPNO = 7893;
ROWID hint ORACLE TABLE ACCESS BY ROWID .
, TABLE ACCESS BY ROWID ,
, ROIWD .
(CACHED)
SGA , CACHE hint SGA . CACHE hint
FULL hint .
:
SELECT /*+ FULL(WORKER) CACHE(WORKER)*/ *
FROM WORK;
hint ORACLE .
:
SELECT /*+ INDEX(LODGING) */ LODGING
FROM LODGING
WHERE MANAGER = BILL GATES;
hint , ,,
CBO, . , INDEX hint ORACLE
.
ORACLE hints ALL_ROWS, FIRST_ROWS, RULE,USE_NL, USE_MERGE,
USE_HASH .
POSS www.poss.cn
40
Oracle SQL
hint , ORACLE ,.
. , SQL hint .
ORACLE ( CBO)
:
DEPT :
DEPT_CODE
PK NOT NULL
DEPT_DESC
NOT NULL
DEPT_TYPE
NULL
(DEPT_TYPE)
: ()
SELECT DEPT_CODE
FROM DEPT
ORDER BY DEPT_TYPE
EXPLAIN PLAN:
SORT ORDER BY
TABLE ACCESS FULL
: ()
SELECT DEPT_CODE
FROM DEPT
WHERE DEPT_TYPE > 0
EXPLAIN PLAN:
TABLE ACCESS BY ROWID ON EMP
POSS www.poss.cn
41
Oracle SQL
3.44 .
, ORACLE .
EMPNO .
SELECT
FROM EMP
WHERE EMPNO = 123
, ORACLE , :
SELECT
FROM EMP
WHERE EMPNO = TO_NUMBER(123)
,,.
, EMP_TYPE .
SELECT
FROM EMP
WHERE EMP_TYPE = 123
ORACLE :
SELECT
FROM EMP
WHERE TO_NUMBER(EMP_TYPE)=123
POSS www.poss.cn
42
Oracle SQL
, !
:
ORACLE SQL , .
, ORACLE .
3.45 WHERE
SELECT WHERE . .
, != . , ,
.
:
SELECT ACCOUNT_NAME
FROM TRANSACTION
WHERE AMOUNT !=0;
:
SELECT ACCOUNT_NAME
FROM TRANSACTION
WHERE AMOUNT >0;
, ||. , .
:
SELECT ACCOUNT_NAME,AMOUNT
FROM TRANSACTION
WHERE ACCOUNT_NAME||ACCOUNT_TYPE=AMEXA;
:
SELECT ACCOUNT_NAME,AMOUNT
FROM TRANSACTION
WHERE ACCOUNT_NAME = AMEX
AND ACCOUNT_TYPE= A;
, +. , .
:
POSS www.poss.cn
43
Oracle SQL
3.46
, .
:
SELECT *
FROM LODGING
WHERE MANAGER IN (BILL GATES,KEN MULLER);
SELECT *
POSS www.poss.cn
44
FROM LODGING
WHERE MANAGER = BILL GATES
OR MANAGER = KEN MULLER;
, LODGING$MANAGER
. ROWID LODGING ( TABLE ACCESS BY ROWID ).
(CONCATENATION).
Explain Plan :
SELECT STATEMENT Optimizer=CHOOSE
CONCATENATION
TABLE ACCESS (BY INDEX ROWID) OF LODGING
INDEX (RANGE SCAN ) OF LODGING$MANAGER (NON-UNIQUE)
TABLE ACCESS (BY INDEX ROWID) OF LODGING
INDEX (RANGE SCAN ) OF LODGING$MANAGER (NON-UNIQUE)
:
37 .
3.47 CBO
(CBO, Cost-Based Optimizer)
.
, ,.
, 100 80 . 80/100
= 0.8 . , .
, ROWID
. .
:
:
a. 30%..
b., ,
. ,!
POSS www.poss.cn
45
3.48
DISTINCT,UNION,MINUS,INTERSECT,ORDER BY SQL SQL
(SORT). DISTINCT ,
.
, UNION , GROUP BY , GROUP BY
(NESTED SORT) ; , , UNION ,
(SORT UNIQUE).
.
, UNION, MINUS , INTERSECT SQL .
:
SORT_AREA_SIZE , UNION , MINUS, INTERSECT
,
3.49 GROUP BY
GROUP BY , GROUP BY .
.
:
SELECT JOB , AVG(SAL)
FROM EMP
GROUP JOB
HAVING JOB = PRESIDENT
OR JOB = MANAGER
:
SELECT JOB , AVG(SAL)
FROM EMP
WHERE JOB = PRESIDENT
OR JOB = MANAGER
GROUP JOB
:
POSS www.poss.cn
46
Oracle SQL
14 . .
3.50
, 5 , !
:
1.
SELECT TO_DATE(01-JAN-93+.99999)
FROM DUAL;
Returns:
01-JAN-93 23:59:59
2.
SELECT TO_DATE(01-JAN-93+.999999)
FROM DUAL;
Returns:
02-JAN-93 00:00:00
:
SQL ,
3.51 (CURSORs)
,. , TOO MANY ROWS
exception . .
POSS www.poss.cn
47
Oracle SQL
3.53
(TABLESPACES). ORACLE
SYSTEM . ,.
:
,. ,
.
POSS www.poss.cn
48