ORACLE SQL³£ÓÃÓÅ»¯·½·¨
1 ²éѯsqlÓÅ»¯
1.1 Ñ¡Ôñ×îÓÐЧÂʵıíÃû˳Ðò£¨Ö»ÔÚ»ùÓÚ¹æÔòµÄÓÅ»¯Æ÷ÖÐÓÐЧORACLE£©
½âÎöÆ÷°´ÕÕ´ÓÓÒµ½×óµÄ˳Ðò´¦Àífrom×Ó¾äÖеıíÃû£¬Òò´Ëfrom×Ó¾äÖÐдÔÚ×îºóµÄ±í£¨»ù´¡±ídriving table£©½«±»×îÏÈ´¦Àí¡£ÔÚfrom×Ó¾äÖаüº¬¶à¸ö±íµÄÇé¿öÏ£¬Äã±ØÐëÑ¡Ôñ¼Ç¼ÌõÊý×îÉٵıí×÷Ϊ»ù´¡±í¡£µ±ORACEL´¦Àí¶à¸ö±íʱ£¬»áÔËÓÃÅÅÐò¼°ºÏ²¢µÄ·½Ê½Á¬½ÓËüÃÇ¡£Ê×ÏÈ£¬É¨ÃèµÚÒ»¸ö±í£¨from×Ó¾äÖÐ×îºóµÄÄǸö±í£©²¢¶Ô¼Ç¼½øÐÐÅÉÐò£¬È»ºóɨÃèµÚ¶þ¸ö±í£¨from×Ó¾äÖÐ×îºóµÚ¶þ¸ö±í£©£¬×îºó½«ËùÓдӵڶþ¸ö±íÖмìË÷³öµÄ¼Ç¼ÓëµÚÒ»¸ö±íÖкÏÊʼǼ½øÐкϲ¢¡£
ÀýÈ磺±íTAB1 16,384Ìõ¼Ç¼
±íTAB2 1Ìõ¼Ç¼
Ñ¡ÔñTAB2×÷Ϊ»ù´¡±í£¨×îºÃµÄ·½·¨£©
Select count(*) from tab1,tab2 Ö´ÐÐʱ¼ä0.96Ãë
Ñ¡ÔñTAB2×÷Ϊ»ù´¡±í£¨²»¼Ñ·½·¨£©
Select count(*) from tab2,tab1 Ö´ÐÐʱ¼ä26.09Ãë
Èç¹ûÓÐ3¸öÒÔÉϵıíÁ¬½Ó²éѯ£¬ÄǾÍÐèҪѡÔñ½»²æ±í£¨intersection table£©×÷Ϊ»ù´¡±í£¬½»²æ±íÊÇÖ¸ÄǸö±»ÆäËû±íËùÒýÓÃµÄ±í¡£
ÀýÈ磺EMP±íÃèÊöÁËLOCATION±íºÍCATEGORY±íµÄ½»¼¯
SELECT *
from LOCATION L£¬
CATEGORY C£¬
EMP E
WHERE E.EPM_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.EPM_NO BETWEEN 1000 AND 2000
AND E.CAT_NO=C.CAT_NO
AND E.LOCN=L.LOCN
1.2 ¼õÉÙ·ÃÎÊÊý¾Ý¿âµÄ´ÎÊý
µ±Ö´ÐÐÿÌõSQLÓï¾äʱ£¬ORACLEÔÚÄÚ²¿Ö´ÐÐÁËÐí¶à¹¤×÷£º½âÎöSQLÓï¾ä£¬¹ÀËãË÷ÒýµÄÀûÓÃÂÊ£¬°ó¶¨±äÁ¿£¬¶ÁÊý¾Ý¿éµÈµÈ¡£Óɴ˿ɼû£¬¼õÉÙ·ÃÎÊÊý¾ÝµÄ´ÎÊý£¬¾ÍÄÜʵ¼ÊÉϼõÉÙORACLEµÄ¹¤×÷Á¿¡£
ÀýÈ磺
ÒÔÏÂÓÐÈýÖÖ·½·¨¿ÉÒÔ¼ìË÷³ö¹ÍÔ±ºÅµÈÓÚ0342»ò0291µÄÖ°Ô±¡£
·½·¨1£¨×îµÍЧ£©
SELECT EMP_NAME,SALARY,GRADE
from EMP
WHERE EMP_NO=342;
SELECT EMP_NAME,SALARY,GRADE
from EMP
WHERE EMP_NO=29;
·½·¨2£¨¸ßЧ£©
SELECT A.EMP_NAME,A.SALARY,A.GRADE,
B.EMP_NAME,B.SALARY,B.GRADE
FORM EMP A,EMP B
WHERE A.EMP_NO=342
AND B.EMP_NO=29
1.3 ¼õÉÙ¶Ô±íµÄ²
Ïà¹ØÎĵµ£º
ORACLEÖÐ×ֶεÄÊý¾ÝÀàÐÍ
×Ö·ûÐÍ char ·¶Î§ ×î´ó2000¸ö×Ö½Ú ¶¨³¤
char(10) 'ÕÅÈý' ºóÌí¿Õ¸ñ6¸ö°Ñ10¸ö×Ö½Ú²¹Âú 'ÕÅÈý &nb ......
½ñÌ칫˾ÒòΪҵÎñÐèÒª,ÐÞÒªÐÞ¸Äij¸ö×Ö¶ÎÊý¾ÝÀàÐÍÓÐnumber(5),±äΪnumber(5,2)ÐÍ
ÒªÊÇûÓÐÊý¾ÝµÄ»°Ö±½ÓÓÃÒÔÏÂÓï¾ä¼´¿É
alter table tb_test modify permile number(5,2);
µ«ÊÇÓÐÊý¾ÝµÄ»° ¾Í²»ÄÜÓÃÉÏÃæ·½·¨ÁË,
alter table tb_test add permile_temp number(5,2)
update tb_test set  ......
ÔÚSQLÓï¾äÓÅ»¯¹ý³ÌÖУ¬¾³£»áÓõ½hint,
ÒÔÏÂÊÇÔÚSQLÓÅ»¯¹ý³ÌÖг£¼ûOracleÖÐ"HINT"µÄ30¸öÓ÷¨1. /*+ALL_ROWS*/
±íÃ÷¶ÔÓï¾ä¿éÑ¡Ôñ»ùÓÚ¿ªÏúµÄÓÅ»¯·½·¨,²¢»ñµÃ×î¼ÑÍÌÍÂÁ¿,ʹ×ÊÔ´ÏûºÄ×îС»¯.
ÀýÈç:
SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN from BSEMPMS WHERE EMP_NO='SCOTT';
2. /*+FIRST_ROWS*/
±íÃ÷¶ÔÓï¾ä¿éÑ¡Ôñ ......
1£®SQL²¢Ðвéѯ
alter session enable parallel dml execute immediate 'alter session enable parallel dml'; --Ð޸ĻỰ²¢ÐÐDML select /*+parallel(a,4)*/ * from table_name a select /*+parallel(a,8)*/ * from table_name a ......