°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
µÄÈÕÆÚ£»·ñÔò£¬¾Í·µ»ØÒ»¸öÔÚÈκÎÇé¿ö϶¼Ô¶±ÈÎÒÃÇËùÐèÈÕÆÚÒªÔçµÄÈÕÆÚ£¨´Ë´¦Ñ¡Á˹þ˹¶¡Ö®¡¡
ÒÛ£¨battle¡¡of¡¡Hastings£©µÄÈÕÆÚ£©¡£Ö»ÒªÃ¿´ÎÈ¡³ö×î´óÖµ£¬¾Í¿ÉÒÔÈ·±£»ñµÃÐèÒªµÄÈÕÆÚ¡£ÕâÊǸö¡¡
·Ç³£ÊµÓõļ¼ÇÉ£¬Ò²¿ÉÒÔÓ¦ÓÃÔÚ×Ö·û»òÊýÖµÊý¾Ý£¬µÚ11Õ»áÓиüÏêϸµÄ˵Ã÷¡£¡¡
×ܽ᣺SQLÊÇÉùÃ÷ÐÔÓïÑÔ£¨declarative¡¡language£©£¬ËùÒÔÉ跨ʹÄãµÄ´úÂ볬ԽҵÎñ¹ý³ÌµÄ¹æ¸ñ¡¡
˵Ã÷¡£¡¡
SQL¡¡
SSQQLLµÄ½ø¹¥Ê½±à³Ì¡¡
Offensive¡¡Coding¡¡with¡¡SQL¡¡
Ò»°ãµÄ½¨ÒéÊǽøÐзÀÓùʽ±à³Ì£¨code¡¡defensively£©£¬ÔÚ¿ªÊ¼´¦Àí֮ǰÏȼì²éËùÓвÎÊýµÄºÏ·¨ÐÔ¡£¡¡
µ«Êµ¼ÊÉÏ£¬¶ÔÊý¾Ý¿â±à³Ì¶øÑÔ£¬¾¡Á¿Í¬Ê±×ö¼¸¼þÊÂÇéµÄ½ø¹¥Ê½±à³ÌÓÐÇÐʵµÄÓÅÊÆ¡£¡¡
ÓиöºÜºÃµÄÀý×Ó£º½øÐÐÒ»Á¬´®¼ì²é£¬Ã¿µ±ÆäÖÐÒ»¸ö¼ì²éËùÒªÇóµÄÌõ¼þ²»·ûʱ¾Í²úÉúÒì³£¡£ÐÅÓá¡
¿¨¸¶¿îµÄ´¦ÀíÖоÍÉæ¼°ÀàËÆ²½Öè¡£ÀýÈ磬¼ì²éËùÌá½»µÄ¿Í»§Éí·ÝºÍ¿¨ºÅÊÇ·ñÓÐЧ£¬ÒÔ¼°Á½ÕßÊÇ¡¡
·ñÆ¥Å䣻¼ì²éÐÅÓÿ¨ÊÇ·ñ¹ýÆÚ£»×îºó£¬¼ì²éµ±Ç°µÄÖ§¸¶¶îÊÇ·ñ³¬¹ýÁËÐÅÓöî¶È¡£Èç¹ûͨ¹ýÁËËù¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡24¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
Óмì²é£¬Ö§¸¶²Ù×÷²Å¼ÌÐø½øÐС£¡¡
ΪÁËÍê³ÉÉÏÊö¹¦ÄÜ£¬²»ÊìÁ·µÄ¿ª·¢Õß»áд³öÏÂÁÐÓï¾ä£¬²¢¼ì²éÆä·µ»Ø½á¹û£º¡¡
¡¡select¡¡count£¨*£©¡¡
¡¡from¡¡customers¡¡
¡¡where¡¡customer_id¡¡=¡¡provided_id¡¡
½ÓÏÂÀ´£¬Ëû»á×öÀàËÆµÄ¹¤×÷£¬²¢ÔÙÒ»´Î¼ì²é´íÎó´úÂ룺¡¡
¡¡select¡¡card_num£»¡¡expiry_date£»¡¡credit_limit¡¡
¡¡from¡¡accounts¡¡
¡¡where¡¡customer_id¡¡=¡¡provided_id¡¡
Ö®ºó£¬Ëû²Å»á´¦Àí½ðÈÚ½»Òס£¡¡
Ïà·´£¬ÊìÁ·µÄ¿ª·¢Õ߸üϲ»¶ÏñÏÂÃæÕâÑù±àд´úÂ루¼ÙÉètoday£¨£©·µµ±Ç°ÈÕÆÚ£©£º¡¡
¡¡¡¡update¡¡accounts¡¡
¡¡¡¡set¡¡balance¡¡=¡¡balance¡¡purchased_amount¡¡
¡¡¡¡where¡¡balance¡¡¡·=¡¡purchased_amount¡¡
¡¡¡¡and¡¡credit_limit¡¡¡·=¡¡purchased_amount¡¡
¡¡¡¡and¡¡expiry_date¡¡¡·¡¡today£¨£©¡¡
¡¡¡¡and¡¡customer_id¡¡=¡¡provided_id¡¡
¡¡¡¡and¡¡card_num¡¡=¡¡provided_cardnum¡¡
½Ó×Å£¬¼ì²é±»¸üеÄÐÐÊý¡£Èç¹û½á¹ûΪ¡¡0£¬Ö»ÐèÖ´ÐÐÏÂÃæµÄÒ»¸ö²Ù×÷¼´¿ÉÅжϳö´íÔÒò£º¡¡
¡¡¡¡select¡¡c¡£customer_id£»¡¡a¡£card_num£»¡¡a¡£expiry_date£»¡¡
¡¡¡¡a¡£credit_limit£»¡¡a¡£balance¡¡
¡¡¡¡from¡¡customers¡¡c¡¡
¡¡¡¡leftouter¡¡join¡¡accounts¡¡a¡¡
¡¡¡¡on¡¡a¡£customer_id¡¡=¡¡c¡£customer_id¡¡
¡¡¡¡and¡¡a¡£card_num¡¡=¡¡provided_cardnum¡¡
¡¡¡¡where¡¡c¡£customer_id¡¡=¡¡provided_id¡¡
Èç¹û´Ë²éѯûÓзµ»ØÊý¾Ý£¬Ôò¿É¶Ï¶¨customer_id¡¡µÄÖµÊÇ´íµÄ£»Èç¹û¡¡card_num¡¡ÊÇ¡¡null£¬Ôò¿É¡¡
¶Ï¶¨¿¨ºÅÊÇ´íµÄ£»µÈµÈ¡£Æäʵ£¬¶àÊýÇé¿öÏ´˲éѯÎÞÐè±»Ö´ÐС£¡¡
×¢Òâ¡¡
ÄãÊÇ·ñ×¢Òâµ½£¬ÉÏÊöµÚÒ»¶Î´úÂëÖÐʹÓÃÁËcount£¨*£©ÄØ£¿ÕâÊǸöcount£¨*£©±»ÎóÓÃÓÚ´æÔÚÐÔ¼ì²âµÄ¾ø¡¡
¼ÑÀý×Ó¡£¡¡
¡°½ø¹¥Ê½±à³Ì¡±µÄ±¾ÖÊÌØÕ÷ÊÇ£ºÒÔºÏÀíµÄ¿ÉÄÜÐÔ£¨reasonableprobabilities£©Îª»ù´¡¡£ÀýÈ磬¼ì²é¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡25¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¿Í»§ÊÇ·ñ´æÔÚÊǺÁÎÞÒâÒåµÄ¡ª¡ªÒòΪ¼ÈÈ»¸Ã¿Í»§²»´æÔÚ£¬ÄÇôËûµÄ¼Ç¼¸ù±¾¾Í²»ÔÚÊý¾Ý¿âÖУ¡¡¡
ËùÒÔ£¬Ó¦¸ÃÏȼÙÉèûÓÐÊÂÇé»á³ö´í£»µ«Èç¹û³ö´íÁË£¬¾ÍÔÚ³ö´íµÄµØ·½£¨¶øÇÒÖ»ÔÚÄǸöµØ·½£©²É¡¡
È¡ÏàÓ¦´ëÊ©¡£ÓÐȤµÄÊÇ£¬ÕâÖÖ·½·¨ºÜÏñһЩÊý¾Ý¿âϵͳÖвÉÓõġ°ÀÖ¹Û²¢·¢¿ØÖÆ£¨optimistic¡¡
concurrency¡¡control£©¡±£¬ºóÕß»á¼ÙÉèupdate³åÍ»²»»á·¢Éú£¬Ö»ÔÚ³åÍ»ÕæµÄ·¢Éúʱ²Å½øÐпØÖÆ´¦Àí¡£¡¡
½á¹û£¬ÀÖ¹Û·½·¨±È±¯¹Û·½·¨µÄÍÌÍÂÁ¿¸ßµÃ¶à¡£¡¡
×ܽ᣺ÒÔ¸ÅÂÛΪ»ù´¡½øÐбà³Ì¡£¼ÙÉè×î¿ÉÄܵĽá¹û£»²»ÊǵÄÈ·±ØÒª£¬²»Òª²ÉÓÃÒì³£²¶×½µÄ´¦Àí¡¡
·½Ê½¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡SQL¡¡
¼ò½àµÄSSQQLL¡¡
Succinct¡¡SQL¡¡
ÊìÁ·µÄ¿ª·¢ÕßʹÓþ¡¿ÉÄÜÉٵġ¡SQLÓï¾äÍê³É¾¡¿ÉÄܶàµÄÊÂÇé¡£Ïà·´£¬×¾ÁӵĿª·¢ÕßÔòÇãÏòÓÚÑÏ¡¡
¸ñ×ñÑÒÑÖÆ¶©ºÃµÄ¸÷¹¦Äܲ½Ö裬ÏÂÃæÊǸöÕæÊµµÄÀý×Ó£º¡¡
¡¡¡Get¡¡the¡¡start¡¡of¡¡the¡¡accounting¡¡period¡¡
¡¡select¡¡closure_date¡¡
¡¡into¡¡dtPerSta¡¡
¡¡from¡¡tperrslt¡¡
¡¡where¡¡fiscal_year=to_char£¨Param_dtAcc£»'YYYY'£©¡¡
¡¡and¡¡rslt_period='1'¡¡£ü£ü¡¡to_char£¨Param_dtAcc£»'MM'£©£»¡¡
¡¡¡Get¡¡the¡¡end¡¡of¡¡the¡¡period¡¡out¡¡of¡¡closure¡¡
¡¡select¡¡closure_date¡¡
¡¡into¡¡dtPerClosure¡¡
¡¡from¡¡tperrslt¡¡
¡¡where¡¡fiscal_year=to_char£¨Param_dtAcc£»'YYYY'£©¡¡
¡¡and¡¡rslt_period='9'¡¡£ü£ü¡¡to_char£¨Param_dtAcc£»'MM'£©£»¡¡
¾ÍËãËÙ¶È¿ÉÒÔ½ÓÊÜ£¬ÕâÒ²ÊǶμ«ÔãµÄ´úÂë¡£ºÜ²»ÐÒ£¬ÐÔÄÜר¼Ò¾³£Óöµ½ÕâÖÖÔã¸âµÄ´úÂë¡£¼ÈÈ»¡¡
Á½¸öÖµÀ´×ÔÓÚͬһ±í£¬ÎªÊ²Ã´Òª·Ö±ðÓÃÁ½¸ö²»Í¬µÄÓï¾äÄØ£¿ÏÂÃæÓÃOracleµÄbulk¡¡collect×Ӿ䣬¡¡
Ò»´ÎÐÔ½«Á½¸öÖµ·Åµ½Êý×éÖУ¬ÕâºÜÈÝÒ×ʵÏÖ£¬¹Ø¼üÔÚÓÚ¶Ôrslt_period½øÐÐorder¡¡by²Ù×÷£¬ÈçÏÂËù¡¡
ʾ£º¡¡
¡¡¡¡¡¡select¡¡closure_date¡¡
¡¡¡¡¡¡bulk¡¡collect¡¡into¡¡dtPerStaArray¡¡
¡¡¡¡¡¡from¡¡tperrslt¡¡
¡¡¡¡¡¡where¡¡fiscal_year=to_char£¨Param_dtAcc£»'YYYY'£©¡¡
¡¡¡¡¡¡and¡¡rslt_period¡¡in¡¡£¨'1'¡¡£ü£ü¡¡to_char£¨Param_dtAcc£»'MM'£©£»¡¡
¡¡¡¡¡¡'9'¡¡£ü£ü¡¡to_char£¨Param_dtAcc£»'MM'£©£©¡¡
¡¡¡¡¡¡order¡¡by¡¡rslt_period£»¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡26¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
ÓÚÊÇ£¬ÕâÁ½¸öÈÕÆÚ±»·Ö±ð±£´æÔÚÊý×éµÄµÚÒ»¸öºÍµÚ¶þ¸öλÖá£ÆäÖУ¬bulkcollect¡¡ÊÇ¡¡PL/SQL¡¡Óï¡¡
ÑÔÌØÓе쬵«ÈκÎÖ§³ÖÏÔʽ»òÒþʽÊý×éÌáÈ¡µÄÓïÑÔ¶¼¿ÉÈç·¨ÅÚÖÆ¡£¡¡
ÆäʵÉõÖÁÊý×é¶¼ÊDz»±ØÒªµÄ£¬ÓÃÒÔϵÄС¼¼ÇÉ£¨×¢6£©£¬ÕâÁ½¸öÖµ¾Í¿ÉÒÔ±»ÌáÈ¡µ½Á½¸ö±äÁ¿ÖУº¡¡
¡¡¡¡¡¡select¡¡max£¨decode£¨substr£¨rslt_period£»¡¡1£»¡¡1£©£»¡¡¡Check¡¡the¡¡first¡¡character¡¡
¡¡¡¡¡¡'1'£»¡¡closure_date£»¡¡
¡¡¡¡¡¡¡If¡¡it's¡¡'1'¡¡return¡¡the¡¡date¡¡we¡¡want¡¡
¡¡¡¡¡¡to_date£¨'14/10/1066'£»¡¡'DD/MM/YYYY'£©£©£©£»¡¡
¡¡¡¡¡¡¡Otherwise¡¡something¡¡old¡¡
¡¡¡¡¡¡max£¨decode£¨substr£¨rslt_period£»¡¡1£»¡¡1£©£»¡¡
¡¡¡¡¡¡'9'£»¡¡closure_date£»¡¡¡The¡¡date¡¡wewant¡¡
¡¡¡¡¡¡to_date£¨'14/10/1066'£»¡¡'DD/MM/YYYY'£©£©£©£»¡¡
¡¡¡¡¡¡into¡¡dtPerSta£»¡¡dtPerClosure¡¡
¡¡¡¡¡¡from¡¡tperrslt¡¡
¡¡¡¡¡¡where¡¡fiscal_year=to_char£¨Param_dtAcc£»'YYYY'£©¡¡
¡¡¡¡¡¡and¡¡rslt_period¡¡in¡¡£¨'1'¡¡£ü£ü¡¡to_char£¨Param_dtAcc£»'MM'£©£»¡¡
¡¡¡¡¡¡'9'¡¡£ü£ü¡¡to_char£¨Param_dtAcc£»'MM'£©£©£»¡¡
ÔÚÕâ¸öÀý×ÓÖУ¬Ô¤ÆÚ·µ»ØÖµÎªÁ½ÐÐÊý¾Ý£¬ËùÒÔÎÊÌâÊÇ£ºÈçºÎ°ÑÔ±¾ÊôÓÚÒ»¸ö×ֶεÄÁ½ÐÐÊý¾Ý£¬¡¡
ÒÔÒ»ÐÐÊý¾ÝÁ½¸ö×ֶεķ½Ê½¼ìË÷³öÀ´£¨ÕýÈçÊý×éÌáÈ¡µÄÀý×ÓÒ»Ñù£©¡£Îª´Ë£¬ÎÒÃÇ¡¡
¼ì²érslt_period×ֶΣ¬Á½ÐÐÊý¾ÝµÄrslt_period×Ö¶ÎÓв»Í¬Öµ£»Èç¹ûÕÒµ½ÐèÒªµÄ¼Ç¼£¬¾Í·µ»ØÒªÕÒ¡¡
µÄÈÕÆÚ£»·ñÔò£¬¾Í·µ»ØÒ»¸öÔÚÈκÎÇé¿ö϶¼Ô¶±ÈÎÒÃÇËùÐèÈÕÆÚÒªÔçµÄÈÕÆÚ£¨´Ë´¦Ñ¡Á˹þ˹¶¡Ö®¡¡
ÒÛ£¨battle¡¡of¡¡Hastings£©µÄÈÕÆÚ£©¡£Ö»ÒªÃ¿´ÎÈ¡³ö×î´óÖµ£¬¾Í¿ÉÒÔÈ·±£»ñµÃÐèÒªµÄÈÕÆÚ¡£ÕâÊǸö¡¡
·Ç³£ÊµÓõļ¼ÇÉ£¬Ò²¿ÉÒÔÓ¦ÓÃÔÚ×Ö·û»òÊýÖµÊý¾Ý£¬µÚ11Õ»áÓиüÏêϸµÄ˵Ã÷¡£¡¡
×ܽ᣺SQLÊÇÉùÃ÷ÐÔÓïÑÔ£¨declarative¡¡language£©£¬ËùÒÔÉ跨ʹÄãµÄ´úÂ볬ԽҵÎñ¹ý³ÌµÄ¹æ¸ñ¡¡
˵Ã÷¡£¡¡
SQL¡¡
SSQQLLµÄ½ø¹¥Ê½±à³Ì¡¡
Offensive¡¡Coding¡¡with¡¡SQL¡¡
Ò»°ãµÄ½¨ÒéÊǽøÐзÀÓùʽ±à³Ì£¨code¡¡defensively£©£¬ÔÚ¿ªÊ¼´¦Àí֮ǰÏȼì²éËùÓвÎÊýµÄºÏ·¨ÐÔ¡£¡¡
µ«Êµ¼ÊÉÏ£¬¶ÔÊý¾Ý¿â±à³Ì¶øÑÔ£¬¾¡Á¿Í¬Ê±×ö¼¸¼þÊÂÇéµÄ½ø¹¥Ê½±à³ÌÓÐÇÐʵµÄÓÅÊÆ¡£¡¡
ÓиöºÜºÃµÄÀý×Ó£º½øÐÐÒ»Á¬´®¼ì²é£¬Ã¿µ±ÆäÖÐÒ»¸ö¼ì²éËùÒªÇóµÄÌõ¼þ²»·ûʱ¾Í²úÉúÒì³£¡£ÐÅÓá¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡27¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¿¨¸¶¿îµÄ´¦ÀíÖоÍÉæ¼°ÀàËÆ²½Öè¡£ÀýÈ磬¼ì²éËùÌá½»µÄ¿Í»§Éí·ÝºÍ¿¨ºÅÊÇ·ñÓÐЧ£¬ÒÔ¼°Á½ÕßÊÇ¡¡
·ñÆ¥Å䣻¼ì²éÐÅÓÿ¨ÊÇ·ñ¹ýÆÚ£»×îºó£¬¼ì²éµ±Ç°µÄÖ§¸¶¶îÊÇ·ñ³¬¹ýÁËÐÅÓöî¶È¡£Èç¹ûͨ¹ýÁËËù¡¡
Óмì²é£¬Ö§¸¶²Ù×÷²Å¼ÌÐø½øÐС£¡¡
ΪÁËÍê³ÉÉÏÊö¹¦ÄÜ£¬²»ÊìÁ·µÄ¿ª·¢Õß»áд³öÏÂÁÐÓï¾