Oracleѧϰ±Ê¼Ç ÏÂÔØ±¾ÎÄ

Îð´«ÍøÉÏ£¡ÑϽûıÀû£¡ Oracleѧϰ±Ê¼Ç

³£Ñ岩

Èý¡¢SQLÓï¾äµÄ´¦Àí¹ý³Ì

3.1 SQLÓï¾ä´¦Àí¹ý³Ì

Óû§½ø³Ìsqlplus¡ú½¨Á¢Á¬½Ó¡ú·þÎñ½ø³ÌServer process oracleSID

¡ü--´´½¨»á»°--Oracle server

3.2´¦ÀíÒ»ÌõselectÓï¾ä

1£©·ÖÎöÓï¾ä£º ¢ÙËÑË÷ÊÇ·ñÓÐÏàͬÓï¾ä ¢ÚÓÃhash value¼ÆËãselectÓï¾äÊÇ·ñ³¤µÃÒ»Ñù£º´óСд£¬¹Ø¼ü×Ö£¬¿Õ¸ñÒª¶¼Ò»Ñù£¬²»Ò»ÑùÔòΪÁ½ÌõÓï¾ä£¬Ôò·þÎñ½ø³Ì»áÖØÐ·ÖÎö¡£ÈôΪͳһÓï¾ä£¬ÔòÖ±½Ó´ÓÄÚ´æÄÃÖ´Ðмƻ®£¬¼ÆËã½á¹û

¢Û¼ì²éÓï·¨¡¢±íÃû¡¢È¨ÏÞ ¢ÜÔÚ·ÖÎö¹ý³ÌÖиø¶ÔÏó¼ÓËø ¢ÝÉú³ÉÖ´Ðмƻ®

2£©°ó¶¨±äÁ¿£º¸ø±äÁ¿¸³Öµ 3£©Ö´ÐÐÓï¾ä£º

4£©»ñÈ¡Êý¾Ý£º½«Êý¾Ý·µ»Ø¸øÓÃ»á½ø³Ì

7

Îð´«ÍøÉÏ£¡ÑϽûıÀû£¡ Oracleѧϰ±Ê¼Ç

³£Ñ岩

ËÄ¡¢where×Ó¾ä

ÓÃwhere×Ó¾ä¶Ô±íÀïµÄ¼Ç¼½øÐйýÂË£¬where×Ó¾ä¸úÔÚfrom×Ó¾äºóÃæ¡£

4.1 where×Ó¾äºóÃæ¿ÉÒÔ¸úʲô

¸úÌõ¼þ±í´ïʽ£ºÁÐÃû¡¢³£Á¿¡¢±È½ÏÔËËã·û£¨µ¥¡¢¶àÖµÔËËã·û£©¡¢ÎÄ×ÖÖµ£»²»Äܸú×麯Êý£¡²»ÄܸúÁбðÃû£¡

? ×¢ÒâÊÂÏ¶ÔÁв»¾­¹ýÔËËãµÄÌõ¼þ±í´ïʽЧÂÊ»á¸ü¸ß£¬½¨ÒéÔÚдwhere×Ó¾äʱ¾¡Á¿

²»Òª¶ÔÁнøÐÐÔËËã¡£

eg£ºÒ»ÄêµÄ¹Ì¶¨·ÑÓÃΪ70.8Ôª£¬¼ÆËãÄê°üÔÚÏßʱ³¤ select base_duration*12 ann_duration from cost where base_cost*12=70.8; ûÏÂÃæÐ§ÂÊ¸ß select base_duration*12 ann_duration from cost where base_cost=70.8/12; 4.2Óï·¨ºÍÖ´ÐÐ˳Ðò Ó﷨˳Ðò£ºselect from where Ö´ÐÐ˳Ðò£ºfrom where select 4.3×Ö·û´®ÊÇ´óСдÃô¸ÐµÄ£¬ÔڱȽÏʱÑϸñÇø·Ö´óСд 1£©upper()£ºº¯Êý½«×Ö·û´®×ª»»³É´óд¡£ 2£©lower()£ºº¯Êý½«×Ö·û´®×ª»»³ÉСд¡£ 3£©initcap()£ºº¯Êý½«×Ö·û´®×ª»»³ÉÊ××Ö·û´óд£¨Êǽ«ÁÐÖеÄÖµ´óСдת»»È»ºóÈ¥ºÍµÈºÅºóµÄ×Ö·û´®±È£¬¶ø²»ÊǰÑת×Ö·û´®×ª»»È¥ºÍÁбȣ©¡£ eg£ºÄÄЩunix·þÎñÆ÷ÉÏ¿ªÍ¨ÁËosÕʺÅhuangr select unix_host,os_username from service where os_username = 'huangr';(Óнá¹û) where lower(os_username)='HUANGR';(ÎÞ½á¹û) where lower(os_username)='huangr';(Óнá¹û) where upper(os_username)='HUANGR';(Óнá¹û) 4.4 where×Ó¾äºóÃæ¿ÉÒÔ¸ú¶à¸öÌõ¼þ±í´ïʽ Ìõ¼þ±í´ïʽ֮¼äÓÃand¡¢orÁ¬½Ó£¬Ò²¿ÉÓ㨣©¸Ä±ä˳Ðò¡£ 4.5 between andÔËËã·û ±íʾһ¸ö·¶Î§£¬ÊDZÕÇø¼ä£¬º¬ÒåΪ´óÓÚµÈÓÚ²¢ÇÒСÓÚµÈÓÚ¡£ eg£ºÄÄЩ×ʷѵÄÔ¹̶¨·ÑÓÃÔÚ5Ôªµ½10ÔªÖ®¼ä select base_duration,base_cost,unit_cost from cost where base_cost >= 5 and base_cost <= 10; where base_cost between 5 and 10; 4.6 inÔËËã·û£¨¶àÖµÔËËã·û£©

±íʾһ¸ö¼¯ºÏ£¬ÊÇÀëÉ¢Öµ£¬º¬ÒåΪµÈÓÚÆäÖÐÈÎÒâÒ»¸öÖµ£¬µÈ¼ÛÓÚany¡£ eg£ºÄÄЩ×ʷѵÄÔ¹̶¨·ÑÓÃÊÇ5.9Ôª,8.5Ôª,10.5Ôª select base_duration,base_cost,unit_cost from cost where base_cost = 5.9 or base_cost = 8.5 or base_cost = 10.5; where base_cost in(5.9,8.5,10.5); where base_cost =any(5.9,8.5,10.5); 8

Îð´«ÍøÉÏ£¡ÑϽûıÀû£¡ Oracleѧϰ±Ê¼Ç

³£Ñ岩

4.7 likeÔËËã·û

ÔÚ×Ö·û´®±È½ÏÖУ¬¿ÉÓÃlikeºÍͨÅä·û½øÐÐÄ£ºý²éÕÒ¡£

1£©Í¨Åä·û£º%±íʾ0»ò¶à¸ö×Ö·û£» _±íʾÈÎÒâ¡°Ò»¸ö¡±×Ö·û£¨ÒªÕ¼Î»µÄ£©¡£

? ×¢ÒâÊÂÏÈôÒª²éÕÒ%ºÍ_±¾Éí£¬ÔòÐèÒªescape½øÐÐ×ªÒÆ¡£ eg£ºÄÄЩunix·þÎñÆ÷ÉϵÄosÕʺÅÃûÊÇÒÔh¿ªÍ·µÄ select os_username from service where os_username like 'h%' eg£ºÄÄЩunix·þÎñÆ÷ÉϵÄosÕʺÅÃûÊÇÒÔh_¿ªÍ·µÄ select os_username from service where os_username like 'h\\_%' escape '\\'; 4.8 is nullÔËËã·û ²âÊÔnullÖµÐèÒªÓÃis null¡£ 1£©null²»ÄÜÓõÈÓںš°£½¡±ºÍ²»µÈÓںš°<>¡±¸úÈκÎÖµ±È½Ï£¬°üÀ¨Ëü×ÔÉí¡£ËùÒÔ²»ÄÜÓá°£½¡±ºÍ¡°<>¡±À´²âÊÔÊÇ·ñÓпÕÖµ¡£ 2£©¼´£ºnull=nullÊDz»³ÉÁ¢µÄ£»null²»µÈÓÚ nullÒ²²»³ÉÁ¢£»nullºÍÈκÎÖµ±È½Ï¶¼²»³ÉÁ¢¡£ eg£ºÁгöÔ¹̶¨·ÑÓÃÊÇ5.9Ôª£¬8.5Ôª£¬10.5Ôª»òÕßûÓÐÔ¹̶¨·Ñ¡£ select base_duration,base_cost,unit_cost from cost where base_cost in (5.9,8.5,10.5,null);(´íÎó) where base_cost in (5.9,8.5,10.5) or base_cost is null;(ÕýÈ·) 4.9±È½ÏºÍÂß¼­ÔËËã·û£¨µ¥ÖµÔËËã·û£© 1£©±È½ÏÔËËã·û£º= > >= < <= 2£©SQL±È½ÏÔËËã·û£ºbetween and¡¢in¡¢like¡¢is null 3£©Âß¼­ÔËËã·û£ºand¡¢or¡¢not 4.10¶àÖµÔËËã·ûall¡¢any 1£©>all£º´óÓÚËùÓеģ¬µÈ¼ÛÓÚ >(select max()?)¡£ 2£©>any£º´óÓÚÈÎÒâµÄ£¬µÈ¼ÛÓÚ >(select min()?)¡£ 4.11ÔËËã·ûµÄ·ñ¶¨ÐÎʽ 1£©±È½ÏÔËËã·û£º<> £¡= ^= 2£©SQL±È½ÏÔËËã·û£ºnot between and not in not like is not null ? ×¢ÒâÊÂÏ ? inÏ൱ÓÚ=or =or =orµÈ¼ÛÓÚany ? not inµÈ¼ÛÓÚ <>and <>and <>andµÈ¼ÛÓÚ<>all ? not between and СÓÚϽç or ´óÓÚÉϽç

? ¼¯ºÏÖÐÓÐnull£¬¶ÔinÎÞÓ°Ï죻µ«¶Ônot inÓÐÓ°Ï죬ÓÐÒ»¸ö¾ÍûÓзµ»ØÖµ£¡ eg£ºÄÄЩ×Ê·ÑÐÅÏ¢µÄÔ¹̶¨·ÑÓò»ÊÇ5.9Ôª,8.5Ôª,10.5Ôª select base_duration,base_cost,unit_cost from cost where nvl(base_cost,0) <> 5.9 and nvl(base_cost,0) <> 8.5 and nvl(base_cost,0) <> 10.5; where nvl(base_cost,0) not in (5.9,8.5,10.5); 9

Îð´«ÍøÉÏ£¡ÑϽûıÀû£¡ Oracleѧϰ±Ê¼Ç

³£Ñ岩

Îå¡¢order by×Ó¾ä

selectÓï¾äÊä³öµÄ½á¹û°²¼Ç¼ÔÚ±íÖеĴ洢˳ÐòÏÔʾ£¬order by×Ó¾äÄܹ»¸Ä±ä¼Ç¼µÄÊä³ö˳Ðò¡£

order by×Ó¾ä¶Ô²éѯ³öÀ´µÄ½á¹û¼¯½øÐÐÅÅÐò£¬¼´¶Ôselect×Ó¾äµÄ¼ÆËã½á¹ûÅÅÐò¡£

5.1Óï·¨ºÍÖ´ÐÐ˳Ðò

Ó﷨˳Ðò£ºselect from where order by

Ö´ÐÐ˳Ðò£ºfrom where select order by

5.2Éý½µÐò

ASC£­ÉýÐò£¬¿ÉÒÔÊ¡ÂÔ£¬Ä¬ÈÏÖµ order by nvl(base_cost,0); DESC£­½µÐò order by unix_host,create_date desc; ? ×¢ÒâÊÂÏorder byÊÇselectÓï¾äÖÐ×îºóÒ»¸ö×Ó¾ä 5.3 nullÖµÔÚÅÅÐòÖÐÏÔʾ 1£©±»ÅÅÐòµÄÁÐÈç¹û°üº¬nullÖµ£¬ÓÃASC·½Ê½nullÖµµÄÔÚ×îºó£» 2£©ÓÃDESC·½Ê½nullÔÚ×îÇ°Ãæ£» 5.4 order byºóÃæ¿ÉÒÔ¸úʲô ¿ÉÒÔ¸úÁÐÃû¡¢ÁбðÃû¡¢ÁÐλÖã¨Êý×Ö£©¡¢±í´ïʽ¡¢º¯Êý¡£ order by 1£º±íʾÁÐλÖÃΪ1µÄÁÐ select 1 from£º±íʾ³£Á¿1 eg£º°´Äê¹Ì¶¨·ÑÓôӴóµ½Ð¡µÄ˳ÐòÏÔʾ×Ê·ÑÐÅÏ¢ ·½Ê½Ò»£º select id,base_cost*12 ann_cost,base_duration ann_duration from cost order by base_cost desc; ·½Ê½¶þ£º select id,base_cost ann_cost,base_duration ann_duration from cost order by base_cost*12 desc;ÅÅÐòµÄЧ¹ûºÍÉÏÃæÊÇÒ»ÑùµÄ£¬µ«Ç°Ò»¸öЧÂʸߡ£ 5.5¶àÁÐÅÅÐò order by×Ó¾äºóÃæ¿ÉÒÔ¸ú¶àÁУ¬¶øorder byºóÃæµÄÁпÉÒÔ²»³öÏÖÔÚselectºóÃæ¡£½á¹û¼¯ÏȰ´µÚÒ»ÁÐÉýÐòÅÅÁУ¬ÈôÁÐÖµÒ»Ñù£¬ÔÙ°´µÚ¶þÁнµÐòÅÅÁС£ eg£º°´unix·þÎñÆ÷ipµØÖ·ÉýÐò£¬¿ªÍ¨Ê±¼ä½µÐòÏÔʾҵÎñÕʺÅÐÅÏ¢ select id,unix_host,os_username,create_date from service order by unix_host,create_date desc; 10