oracle Êý¾ÝÀàÐÍÏê½â---ÈÕÆÚÐÍ
oracleÊý¾ÝÀàÐÍ¿´ÆðÀ´·Ç³£¼òµ¥£¬µ«ÓÃÆðÀ´»á·¢ÏÖÓÐÐí¶à֪ʶµã£¬±¾ÎÄÊÇÎÒ¶ÔORACLEÈÕÆÚÊý¾ÝÀàÐ͵ÄһЩÕûÀí£¬¶¼ÊÇ¿ª·¢ÈëÃÅ×ÊÁÏ£¬Óë´ó¼Ò·ÖÏí£º
×¢£ºÓÉÓÚINTERVAL¼°TIME ZONEʵ¼ÊÓõñȽÏÉÙ£¬ËùÒÔ±¾ÎÄÄÚÈÝÎ´Éæ¼°ÕâÁ½¸ö·½Ãæ¡£
1¡¢³£ÓÃÈÕÆÚÐÍÊý¾ÝÀàÐÍ
1.1¡¢DATE
ÕâÊÇORACLE×î³£ÓõÄÈÕÆÚÀàÐÍ£¬Ëü¿ÉÒÔ±£´æÈÕÆÚºÍʱ¼ä£¬³£ÓÃÈÕÆÚ´¦Àí¶¼¿ÉÒÔ²ÉÓÃÕâÖÖÀàÐÍ¡£DATE±íʾµÄÈÕÆÚ·¶Î§¿ÉÒÔÊǹ«ÔªÇ°4712Äê1ÔÂ1ÈÕÖÁ¹«Ôª9999Äê12ÔÂ31ÈÕ
dateÀàÐÍÔÚÊý¾Ý¿âÖеĴ洢¹Ì¶¨Îª7¸ö×Ö½Ú£¬¸ñʽΪ£º
µÚ1×Ö½Ú£ºÊÀ¼Í+100
µÚ2×Ö½Ú£ºÄê
µÚ3×Ö½Ú£ºÔÂ
µÚ4×Ö½Ú£ºÌì
µÚ5×Ö½Ú£ºÐ¡Ê±+1
µÚ6×Ö½Ú£º·Ö+1
µÚ7×Ö½Ú£ºÃë+1
1.2¡¢TIMESTAMP(p)
ÕâÒ²ÊÇORACLE³£ÓõÄÈÕÆÚÀàÐÍ£¬ËüÓëdateµÄÇø±ðÊDz»½ö¿ÉÒÔ±£´æÈÕÆÚºÍʱ¼ä£¬»¹Äܱ£´æÐ¡ÊýÃ룬СÊýλÊý¿ÉÒÔÖ¸¶¨Îª0-9£¬Ä¬ÈÏΪ6룬ËùÒÔ×î¸ß¾«¶È¿ÉÒÔµ½ns(ÄÉÃë)£¬Êý¾Ý¿âÄÚ²¿ÓÃ7»òÕß11¸ö×Ö½Ú´æ´¢£¬Èç¹û¾«¶ÈΪ0£¬ÔòÓÃ7×Ö½Ú´æ´¢£¬ÓëdateÀàÐ͹¦ÄÜÏàͬ£¬Èç¹û¾«¶È´óÓÚ0ÔòÓÃ11×Ö½Ú´æ´¢¡£
¸ñʽΪ£º
µÚ1×Ö½Ú£ºÊÀ¼Í+100
µÚ2×Ö½Ú£ºÄê
µÚ3×Ö½Ú£ºÔÂ
µÚ4× ......
ʲôÊǺϲ¢¶àÐÐ×Ö·û´®£¨Á¬½Ó×Ö·û´®£©ÄØ£¬ÀýÈ磺
SQL> desc test;
Name Type Nullable Default Comments
------- ------------ -------- ------- --------
COUNTRY VARCHAR2(20) Y
CITY VARCHAR2(20) Y
SQL> select * from test;
COUNTRY CITY
-------------------- --------------------
Öйú ̨±±
Öйú Ïã¸Û
Öйú ÉϺ£
ÈÕ±¾ ¶«¾©
ÈÕ±¾ ´óÚæ
ÒªÇóµÃµ½ÈçϽá¹û¼¯£º
------- --------------------
Öйú ̨±±,Ïã¸Û,ÉϺ£
ÈÕ±¾ ¶«¾©£¬´óÚæ
ʵ¼Ê¾ÍÊǶÔ×Ö·ûʵÏÖÒ»¸ö¾ÛºÏ¹¦ÄÜ£¬Î񼆮æ¹ÖΪʲôOracleûÓÐÌṩ¹Ù·½µÄ¾ÛºÏº¯ÊýÀ´ÊµÏÖËüÄØ£º£©
ÏÂÃæ¾Í¶Ô¼¸ÖÖ¾³£Ìá¼°µÄ½â¾ö·½°¸½øÐзÖÎö£¨ÓÐÒ»¸öÆÀ²â±ê×¼×î¸ß¡ï¡ï¡ï¡ï¡ï£©£º
1.±»¼¯ºÏ×ֶη¶Î§Ð¡Çҹ̶¨ÐÍ Áé»îÐÔ¡ï ÐÔÄÜ¡ï¡ï¡ï¡ï ÄÑ¶È ¡ï
ÕâÖÖ·½·¨µÄÔÀíÔÚÓÚÄãÒѾ֪µÀ CITY×ֶεÄÖµÓм¸ÖÖ£¬ÇÒ»¹²»ËãÌ«¶à£¬Èç¹ûÌ«¶àÕâ¸öSQL¾Í»áÏ൱µÄ³¤¡£¡£¿´Àý×Ó£º
SQL> select t.country,
2 MAX(decode(t.city,'̨±±',t.city||',',NULL)) ||
3 MAX(decode(t.city,'Ïã¸Û',t.city||',',NULL))||
4 MAX(decode(t.city,'ÉϺ£',t.city||',',NULL))||
5 MAX(decode(t.city,'¶«¾©',t.city||',',NULL))||
6 MAX(decode(t.city,'´ó ......
»ù±¾µÄSql±àдעÒâÊÂÏî
¾¡Á¿ÉÙÓÃIN²Ù×÷·û£¬»ù±¾ÉÏËùÓеÄIN²Ù×÷·û¶¼¿ÉÒÔÓÃEXISTS´úÌæ¡£
²»ÓÃNOT IN²Ù×÷·û£¬¿ÉÒÔÓÃNOT EXISTS»òÕßÍâÁ¬½Ó+Ìæ´ú¡£
OracleÔÚÖ´ÐÐIN×Ó²éѯʱ£¬Ê×ÏÈÖ´ÐÐ×Ó²éѯ£¬½«²éѯ½á¹û·ÅÈëÁÙʱ±íÔÙÖ´ÐÐÖ÷²éѯ¡£¶øEXISTÔòÊÇÊ×Ïȼì²éÖ÷²éѯ£¬È»ºóÔËÐÐ×Ó²éѯֱµ½ÕÒµ½
µÚÒ»¸öÆ¥ÅäÏî¡£NOT EXISTS±ÈNOT INЧÂÊÉԸߡ£µ«¾ßÌåÔÚÑ¡ÔñIN»òEXIST²Ù×÷ʱ£¬Òª¸ù¾ÝÖ÷×Ó±íÊý¾ÝÁ¿´óСÀ´¾ßÌ忼ÂÇ¡£
²»ÓÓ<>”»òÕß“!=”²Ù×÷·û¡£¶Ô²»µÈÓÚ²Ù×÷·ûµÄ´¦Àí»áÔì³ÉÈ«±íɨÃ裬¿ÉÒÔÓÓ<” or “>”´úÌæ¡£
Where×Ó¾äÖгöÏÖIS NULL»òÕßIS NOT
NULLʱ£¬Oracle»áֹͣʹÓÃË÷Òý¶øÖ´ÐÐÈ«±íɨÃè¡£¿ÉÒÔ¿¼ÂÇÔÚÉè¼Æ±íʱ£¬¶ÔË÷ÒýÁÐÉèÖÃΪNOT
NULL¡£ÕâÑù¾Í¿ÉÒÔÓÃÆäËû²Ù×÷À´È¡´úÅжÏNULLµÄ²Ù×÷¡£
µ±Í¨Åä·û“%”»òÕß“_”×÷Ϊ²éѯ×Ö·û´®µÄµÚÒ»¸ö×Ö·ûʱ£¬Ë÷Òý²»»á±»Ê¹Óá£
¶ÔÓÚÓÐÁ¬½ÓµÄÁГ||”£¬×îºóÒ»¸öÁ¬½ÓÁÐË÷Òý»áÎÞЧ¡£¾¡Á¿±ÜÃâÁ¬½Ó£¬¿ÉÒÔ·Ö¿ªÁ¬½Ó»òÕßʹÓò»×÷ÓÃÔÚÁÐÉϵĺ¯ÊýÌæ´ú¡£
Èç¹ûË÷Òý²»ÊÇ»ùÓÚº¯ÊýµÄ£¬ÄÇôµ±ÔÚWhere×Ó¾äÖжÔË÷ÒýÁÐʹÓú¯Êýʱ£¬Ë÷Òý²»ÔÙÆð×÷Óá£
Where×Ó¾äÖбÜÃâÔÚË÷ÒýÁÐÉÏÊ¹Ó ......
»ù±¾µÄSql±àдעÒâÊÂÏî
¾¡Á¿ÉÙÓÃIN²Ù×÷·û£¬»ù±¾ÉÏËùÓеÄIN²Ù×÷·û¶¼¿ÉÒÔÓÃEXISTS´úÌæ¡£
²»ÓÃNOT IN²Ù×÷·û£¬¿ÉÒÔÓÃNOT EXISTS»òÕßÍâÁ¬½Ó+Ìæ´ú¡£
OracleÔÚÖ´ÐÐIN×Ó²éѯʱ£¬Ê×ÏÈÖ´ÐÐ×Ó²éѯ£¬½«²éѯ½á¹û·ÅÈëÁÙʱ±íÔÙÖ´ÐÐÖ÷²éѯ¡£¶øEXISTÔòÊÇÊ×Ïȼì²éÖ÷²éѯ£¬È»ºóÔËÐÐ×Ó²éѯֱµ½ÕÒµ½
µÚÒ»¸öÆ¥ÅäÏî¡£NOT EXISTS±ÈNOT INЧÂÊÉԸߡ£µ«¾ßÌåÔÚÑ¡ÔñIN»òEXIST²Ù×÷ʱ£¬Òª¸ù¾ÝÖ÷×Ó±íÊý¾ÝÁ¿´óСÀ´¾ßÌ忼ÂÇ¡£
²»ÓÓ<>”»òÕß“!=”²Ù×÷·û¡£¶Ô²»µÈÓÚ²Ù×÷·ûµÄ´¦Àí»áÔì³ÉÈ«±íɨÃ裬¿ÉÒÔÓÓ<” or “>”´úÌæ¡£
Where×Ó¾äÖгöÏÖIS NULL»òÕßIS NOT
NULLʱ£¬Oracle»áֹͣʹÓÃË÷Òý¶øÖ´ÐÐÈ«±íɨÃè¡£¿ÉÒÔ¿¼ÂÇÔÚÉè¼Æ±íʱ£¬¶ÔË÷ÒýÁÐÉèÖÃΪNOT
NULL¡£ÕâÑù¾Í¿ÉÒÔÓÃÆäËû²Ù×÷À´È¡´úÅжÏNULLµÄ²Ù×÷¡£
µ±Í¨Åä·û“%”»òÕß“_”×÷Ϊ²éѯ×Ö·û´®µÄµÚÒ»¸ö×Ö·ûʱ£¬Ë÷Òý²»»á±»Ê¹Óá£
¶ÔÓÚÓÐÁ¬½ÓµÄÁГ||”£¬×îºóÒ»¸öÁ¬½ÓÁÐË÷Òý»áÎÞЧ¡£¾¡Á¿±ÜÃâÁ¬½Ó£¬¿ÉÒÔ·Ö¿ªÁ¬½Ó»òÕßʹÓò»×÷ÓÃÔÚÁÐÉϵĺ¯ÊýÌæ´ú¡£
Èç¹ûË÷Òý²»ÊÇ»ùÓÚº¯ÊýµÄ£¬ÄÇôµ±ÔÚWhere×Ó¾äÖжÔË÷ÒýÁÐʹÓú¯Êýʱ£¬Ë÷Òý²»ÔÙÆð×÷Óá£
Where×Ó¾äÖбÜÃâÔÚË÷ÒýÁÐÉÏÊ¹Ó ......
ÉÌÒµºÍÊý¾Ý¿âºÜ¶àʱºò±ØÐë¿çÊ±Çø¹¤×÷£¬´Ó9i¿ªÊ¼£¬oracle»·¾³¿ªÊ¼ÓÐÁËÊ±ÇøÒâʶ£¬Í¨¹ýÖ¸¶¨Êý¾Ý¿âµÄÊ±ÇøºÍʹÓÃTIMESTAMP WITH TIME ZONEºÍTIMESTAMP WITH LOCAL TIME ZONEÊý¾ÝÀàÐÍÀ´ÊµÏָù¦ÄÜ¡£
TIMESTAMP WITH TIME ZONE²»»á´æ´¢Êý¾Ý¿âÊ±Çø£¬µ«ÊÇÓÐÒ»¸öָʾÓÃÀ´ËµÃ÷¸Ãʱ¼äËùʹÓõÄÊ±Çø¡£TIMESTAMP WITH LOCAL TIME ZONE»áͬʱ´æ´¢Êý¾Ý¿âÊ±Çø£¬²¢ÇÒ»á¸ù¾Ý²éѯ¿Í»§¶ËµÄÊ±Çø½øÐÐÏàÓ¦µÄת»»¡£
Êý¾Ý¿âÊ±Çø¿ÉÒÔÔÚ´´½¨Ê±ÔÚcreate databaseÃüÁîÖÐÉèÖã¬Ò²¿ÉÒÔʹÓÃalter database set TIME_ZONE=...À´Ð޸ġ£Èç¹ûûÓÐÌØ±ðµÄÖ¸¶¨£¬Ä¬Èϵģ¬Êý¾Ý¿â½«×ñ´ÓÖ÷»ú²Ù×÷ÏµÍ³Ê±ÇøÉèÖ㬻òÕßÈ¡×Ô»·¾³±äÁ¿ORA_STDZ¡£ËùÓÐÖ§³ÖµÄÊ±Çø¼Ç¼ÔÚV$TIMEZONE_NAMES¶¯Ì¬ÐÔÄܱíÖС£Ê±ÇøÓÐÈýÖÖ±íʾ·½·¨£¬È«Ãû¡¢ËõдºÍÏà¶ÔÓÚ±ê׼ʱ¼ä£¨¸ñÁÖÍþÖÎʱ¼ä£©µÄ¹Ì¶¨Æ«ÒÆ,±ÈÈç±ê׼ʱ¼äÏàÓ¦µÄÈýÖÖ±íʾ·½·¨·Ö±ðΪ£ºEtc/Greenwich¡¢GMTºÍ+00:00¡£
Oracle 9i ¿ªÊ¼¶àÁË 3 ¸ö¹ØÓÚʱ¼äµÄÊý¾ÝÀàÐÍ£ºTIMESTAMP [(precision)] TIMESTAMP [(precision)] WITH TIME ZONE TIMESTAMP [(precision)] WITH LOCAL TIME ZONE£¬ÆäÖÐ TIMESTAMP [(precision)] WITH TIME ZONE ±£´æÁËÊ±ÇøÐÅÏ¢¡£
1. Oracle µÄÊ±ÇøÉèÖÃ
Oracle µÄÊ±Çø¿ÉÒÔ·ÖΪÁ ......
ÔÚOracle SQLÖÐÈ¡Êý¾ÝʱÓÐʱҪÓõ½in ºÍ exists ÄÇôËûÃÇÓÐÊ²Ã´Çø±ðÄØ£¿
1 ÐÔÄÜÉϵıȽÏ
±ÈÈçSelect * from T1 where x in ( select y from T2 )
Ö´ÐеĹý³ÌÏ൱ÓÚ:
select *
from t1, ( select distinct y from t2 ) t2
where t1.x = t2.y;
숦﵀
select * from t1 where exists ( select null from t2 where y = x )
Ö´ÐеĹý³ÌÏ൱ÓÚ:
for x in ( select * from t1 )
loop
if ( exists ( select null from t2 where y = x.x )
then
OUTPUT THE RECORD
end if
end loop
±í T1 ²»¿É±ÜÃâµÄÒª±»ÍêȫɨÃèÒ»±é
·Ö±ðÊÊÓÃÔÚʲôÇé¿ö?
ÒÔ×Ó²éѯ ( select y from T2 )Ϊ¿¼ÂÇ·½Ïò
Èç¹û×Ó²éѯµÄ½á¹û¼¯ºÜ´óÐèÒªÏûºÄºÜ¶àʱ¼ä£¬µ«ÊÇT1±È½ÏСִÐÐ( select null from t2 where y = x.x )·Ç³£¿ì£¬ÄÇôexists¾Í±È½ÏÊʺÏÓÃÔÚÕâÀï
Ïà¶ÔÓ¦µÃ×Ó²éѯµÄ½á¹û¼¯±È½ÏСµÄʱºò¾ÍÓ¦¸ÃʹÓÃin.
2 º¬ÒåÉϵıȽÏ
ÔÚ±ê×¼µÄscott/tigerÓû§ÏÂ
EMPNO
ENAME
JOB
MG ......
ÔÚOracle SQLÖÐÈ¡Êý¾ÝʱÓÐʱҪÓõ½in ºÍ exists ÄÇôËûÃÇÓÐÊ²Ã´Çø±ðÄØ£¿
1 ÐÔÄÜÉϵıȽÏ
±ÈÈçSelect * from T1 where x in ( select y from T2 )
Ö´ÐеĹý³ÌÏ൱ÓÚ:
select *
from t1, ( select distinct y from t2 ) t2
where t1.x = t2.y;
숦﵀
select * from t1 where exists ( select null from t2 where y = x )
Ö´ÐеĹý³ÌÏ൱ÓÚ:
for x in ( select * from t1 )
loop
if ( exists ( select null from t2 where y = x.x )
then
OUTPUT THE RECORD
end if
end loop
±í T1 ²»¿É±ÜÃâµÄÒª±»ÍêȫɨÃèÒ»±é
·Ö±ðÊÊÓÃÔÚʲôÇé¿ö?
ÒÔ×Ó²éѯ ( select y from T2 )Ϊ¿¼ÂÇ·½Ïò
Èç¹û×Ó²éѯµÄ½á¹û¼¯ºÜ´óÐèÒªÏûºÄºÜ¶àʱ¼ä£¬µ«ÊÇT1±È½ÏСִÐÐ( select null from t2 where y = x.x )·Ç³£¿ì£¬ÄÇôexists¾Í±È½ÏÊʺÏÓÃÔÚÕâÀï
Ïà¶ÔÓ¦µÃ×Ó²éѯµÄ½á¹û¼¯±È½ÏСµÄʱºò¾ÍÓ¦¸ÃʹÓÃin.
2 º¬ÒåÉϵıȽÏ
ÔÚ±ê×¼µÄscott/tigerÓû§ÏÂ
EMPNO
ENAME
JOB
MG ......
ÔÚдSQLʱ£¬ÓÐʱҪ¸ù¾ÝÒÑÓеÄÁÐÖµ¹¹ÔìеÄÁÐÖµ£¬Õâʱ¾ÍÒªÓõ½µÄSQLÖеÄcase¹Ø¼ü×Ö¡£ÈçÏÂËùʾ²éѯ¸ºÔðÈËÐÅÏ¢±í£¨T_MS_CustomerCrmInfoDutyPerson£©ÖеÄÊÇ·ñÊÇÖ÷Òª¸ºÔðÈË£¨isMainDuty£©×ֶΣ¬µ«ÊÇÕâ¸ö×ֶεÄÖµÊÇÒÔö¾ÙµÄ·½Ê½´æ´¢µÄ£¬´æ´¢0±íʾÊÇ·ñ£¬1±íʾÊÇ£¬·ñÔò±íʾδÅжϡ£Õâʱֱ½Ó²éѯ³öµÄÖµ²»ÊÇ×Ô¼ºÐèÒªµÄÖµ£¬¿ÉÒÔÓÃcase¹Ø¼ü×ÖÖØÐ¹¹½¨ÁÐÖµ¡£
select case
when cfdutystate=0 then '·ñ'
when cfdutystate=1 then 'ÊÇ'
else null
end as isMainDuty
from T_MS_CustomerCrmInfoDutyPerson
×¢Òâµã£º
1£¬ÒÔcase¿ªÍ·£¬ÒÔend½áβ
2£¬whenºó¸úÌõ¼þ·ÖÖ§ÖУ¬thenºóΪÏÔʾ½á¹û
3£¬elseΪ³ý´ËÖ®ÍâµÄĬÈÏÇé¿ö£¬ÀàËÆÓÚjavaµÄswitch caseµÄdefault£¬¿ÉÒÔ²»¼Ó
4£¬OracleÖÐendºó¸ú±ðÃû»òÕßsqlserverÖÐÓï·¨ÈçÏ£º
isMainDuty =case
&n ......
ÔÚдSQLʱ£¬ÓÐʱҪ¸ù¾ÝÒÑÓеÄÁÐÖµ¹¹ÔìеÄÁÐÖµ£¬Õâʱ¾ÍÒªÓõ½µÄSQLÖеÄcase¹Ø¼ü×Ö¡£ÈçÏÂËùʾ²éѯ¸ºÔðÈËÐÅÏ¢±í£¨T_MS_CustomerCrmInfoDutyPerson£©ÖеÄÊÇ·ñÊÇÖ÷Òª¸ºÔðÈË£¨isMainDuty£©×ֶΣ¬µ«ÊÇÕâ¸ö×ֶεÄÖµÊÇÒÔö¾ÙµÄ·½Ê½´æ´¢µÄ£¬´æ´¢0±íʾÊÇ·ñ£¬1±íʾÊÇ£¬·ñÔò±íʾδÅжϡ£Õâʱֱ½Ó²éѯ³öµÄÖµ²»ÊÇ×Ô¼ºÐèÒªµÄÖµ£¬¿ÉÒÔÓÃcase¹Ø¼ü×ÖÖØÐ¹¹½¨ÁÐÖµ¡£
select case
when cfdutystate=0 then '·ñ'
when cfdutystate=1 then 'ÊÇ'
else null
end as isMainDuty
from T_MS_CustomerCrmInfoDutyPerson
×¢Òâµã£º
1£¬ÒÔcase¿ªÍ·£¬ÒÔend½áβ
2£¬whenºó¸úÌõ¼þ·ÖÖ§ÖУ¬thenºóΪÏÔʾ½á¹û
3£¬elseΪ³ý´ËÖ®ÍâµÄĬÈÏÇé¿ö£¬ÀàËÆÓÚjavaµÄswitch caseµÄdefault£¬¿ÉÒÔ²»¼Ó
4£¬OracleÖÐendºó¸ú±ðÃû»òÕßsqlserverÖÐÓï·¨ÈçÏ£º
isMainDuty =case
&n ......