Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB
ÈÈÃűêÇ©£º c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 ×îÐÂÎÄÕ : Oracle

Oracle ÁÙʱ±í


1.ÁÙʱ±íµÄ»ù´¡ÖªÊ¶
  ÁÙʱ±íÖ»ÔÚOracle 8i ÒÔ¼°ÒÔÉϲúÆ·ÖÐÖ§³Ö¡£ORACLEÊý¾Ý¿â³ýÁË¿ÉÒÔ±£´æÓÀ¾Ã±íÍ⣬»¹¿ÉÒÔ½¨Á¢ÁÙʱ±ítemporary tables¡£ÕâЩÁÙʱ±íÓÃÀ´±£´æÒ»¸ö»á»°SESSIONµÄÊý¾Ý£¬»òÕß±£´æÔÚÒ»¸öÊÂÎñÖÐÐèÒªµÄÊý¾Ý¡£µ±»á»°Í˳ö»òÕßÓû§Ìá½»commitºÍ»Ø¹örollbackÊÂÎñµÄʱºò£¬ÁÙʱ±íµÄÊý¾Ý×Ô¶¯Çå¿Õ£¬µ«ÊÇÁÙʱ±íµÄ½á¹¹ÒÔ¼°ÔªÊý¾Ý»¹´æ´¢ÔÚÓû§µÄÊý¾Ý×ÖµäÖС£
OracleµÄÁÙʱ±í´´½¨Ö®ºó»ù±¾²»Õ¼Óñí¿Õ¼ä£¬ÁÙʱ±í²¢·Ç´æ·ÅÔÚÓû§µÄ±í¿Õ¼äÖУ¬¶øÊÇ´æ·ÅÔÚ Schema ËùÖ¸¶¨µÄÁÙʱ±í¿Õ¼äÖС£Èç¹ûÄãûÓÐÖ¸¶¨ÁÙʱ±í£¨°üÀ¨ÁÙʱ±íµÄË÷Òý£©´æ·ÅµÄ±í¿ÕµÄʱºò£¬Äã²åÈëµ½ÁÙʱ±íµÄÊý¾ÝÊÇ´æ·ÅÔÚORACLEϵͳµÄÁÙʱ±í¿Õ¼äÖУ¨TEMP£©¡£
¿ÉÒÔ¶ÔÁÙʱ±í´´½¨Ë÷Òý£¬ÊÓͼ£¬´¥·¢Æ÷£¬¿ÉÒÔÓÃexportºÍimport¹¤¾ßµ¼Èëµ¼³ö±íµÄ¶¨Ò壬µ«ÊDz»Äܵ¼³öÊý¾Ý¡£±íµÄ¶¨Òå¶ÔËùÓеĻỰ¿É¼û¡£½¨Á¢ÔÚÁÙʱ±íÉϵÄË÷ÒýÒ²ÊÇÁÙʱµÄ,Ò²ÊÇÖ»¶Ôµ±Ç°»á»°»òÕßÊÂÎñÓÐЧ.  
¾¡¹Ü¶ÔÁÙʱ±íµÄDML²Ù×÷ËٶȱȽϿ죬µ«Í¬ÑùÒ²ÊÇÒª²úÉú Redo Log £¬Ö»ÊÇͬÑùµÄDMLÓï¾ä£¬±È¶Ô PERMANENT µÄDML ²úÉúµÄRedo Log ÉÙ¡£
ÁÙʱ±íµÄ²»×ãÖ®´¦£º
1.²»Ö§³Ölob¶ÔÏó£¬ÕâÒ²Ðí ......

oracle mergeÓ÷¨Ïê½â

Oracle9iÒýÈëÁËMERGEÃüÁî,ÄãÄܹ»ÔÚÒ»¸öSQLÓï¾äÖжÔÒ»¸ö±íͬʱִÐÐinsertsºÍupdates²Ù×÷. MERGEÃüÁî´ÓÒ»¸ö»ò¶à¸öÊý¾ÝÔ´ÖÐÑ¡ÔñÐÐÀ´updating»òinsertingµ½Ò»¸ö»ò¶à¸ö±í.ÔÚOracle 10gÖÐMERGEÓÐÈçÏÂһЩ¸Ä½ø£º
1¡¢UPDATE»òINSERT×Ó¾äÊÇ¿ÉÑ¡µÄ
2¡¢UPDATEºÍINSERT×Ó¾ä¿ÉÒÔ¼ÓWHERE×Ó¾ä
3¡¢ÔÚONÌõ¼þÖÐʹÓó£Á¿¹ýÂËν´ÊÀ´insertËùÓеÄÐе½Ä¿±ê±íÖÐ,²»ÐèÒªÁ¬½ÓÔ´±íºÍÄ¿±ê±í
4¡¢UPDATE×Ó¾äºóÃæ¿ÉÒÔ¸úDELETE×Ó¾äÀ´È¥³ýһЩ²»ÐèÒªµÄÐÐ
Ê×ÏÈ´´½¨Ê¾Àý±í
create table PRODUCTS
(
PRODUCT_ID INTEGER,
PRODUCT_NAME VARCHAR2(60),
CATEGORY VARCHAR2(60)
);
insert into PRODUCTS values (1501, 'VIVITAR 35MM', 'ELECTRNCS');
insert into PRODUCTS values (1502, 'OLYMPUS IS50', 'ELECTRNCS');
insert into PRODUCTS values (1600, 'PLAY GYM', 'TOYS');
insert into PRODUCTS values (1601, 'LAMAZE', 'TOYS');
insert into PRODUCTS values (1666, 'HARRY POTTER', 'DVD');
commit;
create table NEWPRODUCTS
(
PRODUCT_ID INTEGER,
PRODUCT_NAME VARCHAR2(60),
CATEGORY VARCHAR2(60)
) ......

²éѯoracleËÀËøµÄÓï¾ä

·­ÁËÒ»ÏÂÒÔǰµÄһЩÎĵµ, ·¢ÏÖ±£´æ×Ųéѯoracle ËÀËøµÄsql Óï¾ä, ÕâÊÇÒÔǰµÄÒ»¸öǰ±²½Ì¸øÎÒµÄ, ÄóöÀ´ÌùÌù
--²éѯËÀËøSQL
SELECT /*+ rule */ s.username,
decode(l.type,'TM','TABLE LOCK',
'TX','ROW LOCK',
NULL) LOCK_LEVEL,
o.owner,o.object_name,o.object_type,
s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser
from v$session s,v$lock l,dba_objects o
WHERE l.sid = s.sid
AND l.id1 = o.object_id(+)
AND s.username is NOT NULL ;
 
--ɱËÀËÀËøµÄsession, ÊÍ·ÅËÀËø
alter system kill session '1055,621';  -- µÚÒ»¸ö²ÎÊýÊÇ sid, µÚ¶þ¸ö²ÎÊýÊÇ serial#
¿ÉÄÜÓкܶàµÄËÀËø, µ«ÊÇÊÍ·ÅÁËÇ°ÃæµÄ¼¸¸ö, ¿ÉÄܺóÃæµÄËø¾Í¶¼½â¿ªÁË ......

oracle sqlÓÅ»¯Ö®¶à±íÁ¬½ÓÓÅ»¯


Use equality first.
ʹÓõÈÁ¬½Ó
Use range operators only where equality does not apply.
Ö»ÓÐÔÚµÈÁ¬½Ó²»¿ÉÓõÄÇé¿öÏÂÊÂÓÉÇø¼äÁ¬½Ó
Avoid use of negatives in the form of !=
or NOT.
±ÜÃâʹÓà £¡= »òÕß not
Avoid LIKE pattern matching.
±ÜÃâʹÓà LIKEÆ¥Åä
Try to retrieve specific rows and in small numbers.
³¢ÊÔ²éÕÒÌØÊâµÄÁкÍÔÚСµÄÊýÄ¿ÖÐ
Filter from large tables first to reduce rows joined.
Retrieve tables in order from the most highly filtered table downwards;
preferably the largest table has the most filtering applied.
¹ýÂË´ó±í¼õÉÙÁ¬½ÓµÄÐÐÊý£¬´Ó¹ýÂ˶àµÄ±íÏòϲéÕÒ£¬¾¡¿ÉÄܵĹýÂË´ó±í
Tip 
The most highly filtered table is the table having the
smallest percentage of its rows retrieved, preferably the largest
table.
Use indexes wherever possible except for very small
tables.
³ý·ÇºÜСµÄ±í£¬ÎÞÂÛʲôÇé¿ö¶àÓÐË÷Òý
Let the Optimizer do its job.
ÈÃÓÅ»¯Æ÷×öÓÅ»¯
......

oracle sqlÓÅ»¯Ö®¶à±íÁ¬½ÓÓÅ»¯


Use equality first.
ʹÓõÈÁ¬½Ó
Use range operators only where equality does not apply.
Ö»ÓÐÔÚµÈÁ¬½Ó²»¿ÉÓõÄÇé¿öÏÂÊÂÓÉÇø¼äÁ¬½Ó
Avoid use of negatives in the form of !=
or NOT.
±ÜÃâʹÓà £¡= »òÕß not
Avoid LIKE pattern matching.
±ÜÃâʹÓà LIKEÆ¥Åä
Try to retrieve specific rows and in small numbers.
³¢ÊÔ²éÕÒÌØÊâµÄÁкÍÔÚСµÄÊýÄ¿ÖÐ
Filter from large tables first to reduce rows joined.
Retrieve tables in order from the most highly filtered table downwards;
preferably the largest table has the most filtering applied.
¹ýÂË´ó±í¼õÉÙÁ¬½ÓµÄÐÐÊý£¬´Ó¹ýÂ˶àµÄ±íÏòϲéÕÒ£¬¾¡¿ÉÄܵĹýÂË´ó±í
Tip 
The most highly filtered table is the table having the
smallest percentage of its rows retrieved, preferably the largest
table.
Use indexes wherever possible except for very small
tables.
³ý·ÇºÜСµÄ±í£¬ÎÞÂÛʲôÇé¿ö¶àÓÐË÷Òý
Let the Optimizer do its job.
ÈÃÓÅ»¯Æ÷×öÓÅ»¯
......

Oracle¿ª·¢Ö®SQLÓï¾ä°¸Àý—·ÖÎöº¯ÊýµÄʹÓÃ

´´½¨¹ÍÔ±±í£º
create table emp(deptno number(10),ename varchar2(100),sal number(10,2))£»
²åÈëÊý¾Ý
begin
insert into emp values('10','KING',5000);
insert into emp values('10','CLARK',2450);
insert into emp values('10','MILLER',1300);
insert into emp values('20','SCOTT',3000);
insert into emp values('20','FORD',3000);
insert into emp values('20','JONES',2975);
insert into emp values('20','ADAMS',1100);
insert into emp values('20','SMITH',800);
insert into emp values('30','BLAKE',2850);
insert into emp values('30','ALLEN',1600);
insert into emp values('30','TURNER',1500);
insert into emp values('30','WARD',1250);
insert into emp values('30','MARTIN',1250);
insert into emp values('30','JAMES',950);
commit;
end;
1¡¢Ê¹ÓÃrow_number()¡¢rank()¡¢dense_rank()²é³ö¸÷²¿ÃÅнˮ×î¸ßµÄÈý¸öÔ±¹¤ÐÕÃû¡¢Ð½Ë®£¬¶àÓÚÈý¸öµÄֻȡÈý¸ö¡£
select *
  from (select e.deptno,
               e.ename,
    & ......

Oracle¿ª·¢Ö®SQLÓï¾ä°¸Àý—·ÖÎöº¯ÊýµÄʹÓÃ

´´½¨¹ÍÔ±±í£º
create table emp(deptno number(10),ename varchar2(100),sal number(10,2))£»
²åÈëÊý¾Ý
begin
insert into emp values('10','KING',5000);
insert into emp values('10','CLARK',2450);
insert into emp values('10','MILLER',1300);
insert into emp values('20','SCOTT',3000);
insert into emp values('20','FORD',3000);
insert into emp values('20','JONES',2975);
insert into emp values('20','ADAMS',1100);
insert into emp values('20','SMITH',800);
insert into emp values('30','BLAKE',2850);
insert into emp values('30','ALLEN',1600);
insert into emp values('30','TURNER',1500);
insert into emp values('30','WARD',1250);
insert into emp values('30','MARTIN',1250);
insert into emp values('30','JAMES',950);
commit;
end;
1¡¢Ê¹ÓÃrow_number()¡¢rank()¡¢dense_rank()²é³ö¸÷²¿ÃÅнˮ×î¸ßµÄÈý¸öÔ±¹¤ÐÕÃû¡¢Ð½Ë®£¬¶àÓÚÈý¸öµÄֻȡÈý¸ö¡£
select *
  from (select e.deptno,
               e.ename,
    & ......

Oracle SQL Óï¾ä¶Ôʱ¼ä²Ù×÷µÄ×ܽá

ÔÚSQLÓï¾äÖУ¬³£³£Óûá¶Ôʱ¼ä£¨»òÈÕÆÚ£©½øÐÐһЩ´¦Àí£¬ÏÂÃæÊDZȽÏͨÓõÄһЩÓï¾ä£º
ÑÓ³Ù£º
sysdate+(5/24/60/60)          ÔÚϵͳʱ¼ä»ù´¡ÉÏÑÓ³Ù5Ãë
sysdate+5/24/60               ÔÚϵͳʱ¼ä»ù´¡ÉÏÑÓ³Ù5·ÖÖÓ
sysdate+5/24                  ÔÚϵͳʱ¼ä»ù´¡ÉÏÑÓ³Ù5Сʱ
sysdate+5                     ÔÚϵͳʱ¼ä»ù´¡ÉÏÑÓ³Ù5Ìì
add_months(sysdate,-5)        ÔÚϵͳʱ¼ä»ù´¡ÉÏÑÓ³Ù5ÔÂ
add_months(sysdate,-5*12)     ÔÚϵͳʱ¼ä»ù´¡ÉÏÑÓ³Ù5Äê
ÉÏÔÂÄ©µÄÈÕÆÚ£º
select last_day(add_months(sysdate, -1)) from dual;
±¾ÔµÄ×îºóÒ»Ã룺
select trunc(add_months(sysdate,1),'MM') - 1/24/60/60 from dual
±¾ÖÜÐÇÆÚÒ»µÄÈÕÆÚ£º
select trunc(sysdate,'day')+1 from dual
Äê³õÖÁ½ñµÄÌ ......

Oracle SQL Óï¾ä¶Ôʱ¼ä²Ù×÷µÄ×ܽá

ÔÚSQLÓï¾äÖУ¬³£³£Óûá¶Ôʱ¼ä£¨»òÈÕÆÚ£©½øÐÐһЩ´¦Àí£¬ÏÂÃæÊDZȽÏͨÓõÄһЩÓï¾ä£º
ÑÓ³Ù£º
sysdate+(5/24/60/60)          ÔÚϵͳʱ¼ä»ù´¡ÉÏÑÓ³Ù5Ãë
sysdate+5/24/60               ÔÚϵͳʱ¼ä»ù´¡ÉÏÑÓ³Ù5·ÖÖÓ
sysdate+5/24                  ÔÚϵͳʱ¼ä»ù´¡ÉÏÑÓ³Ù5Сʱ
sysdate+5                     ÔÚϵͳʱ¼ä»ù´¡ÉÏÑÓ³Ù5Ìì
add_months(sysdate,-5)        ÔÚϵͳʱ¼ä»ù´¡ÉÏÑÓ³Ù5ÔÂ
add_months(sysdate,-5*12)     ÔÚϵͳʱ¼ä»ù´¡ÉÏÑÓ³Ù5Äê
ÉÏÔÂÄ©µÄÈÕÆÚ£º
select last_day(add_months(sysdate, -1)) from dual;
±¾ÔµÄ×îºóÒ»Ã룺
select trunc(add_months(sysdate,1),'MM') - 1/24/60/60 from dual
±¾ÖÜÐÇÆÚÒ»µÄÈÕÆÚ£º
select trunc(sysdate,'day')+1 from dual
Äê³õÖÁ½ñµÄÌ ......
×ܼǼÊý:3994; ×ÜÒ³Êý:666; ÿҳ6 Ìõ; Ê×Ò³ ÉÏÒ»Ò³ [596] [597] [598] [599] 600 [601] [602] [603] [604] [605]  ÏÂÒ»Ò³ βҳ
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ