/*dialect*/
With Cust AS
( SELECT fnumber,
ROW_NUMBER() OVER (order by id) as RowNumber
from t_bd_currency)
select *
from Cust
Where RowNumber Between 20 and 30
//
±êÖ¾/*dialect*/ÊǽðµûרÓõķ½ÑÔ±êÖ¾
......
SQLµÄÓÅ»¯Ó¦¸Ã´Ó5¸ö·½Ãæ½øÐе÷Õû£º
1.È¥µô²»±ØÒªµÄ´óÐͱíµÄÈ«±íɨÃè
2.»º´æÐ¡ÐͱíµÄÈ«±íɨÃè
3.¼ìÑéÓÅ»¯Ë÷ÒýµÄʹÓÃ
4.¼ìÑéÓÅ»¯µÄÁ¬½Ó¼¼Êõ
5.¾¡¿ÉÄܼõÉÙÖ´Ðмƻ®µÄCost
SQLÓï¾ä£º
ÊǶÔÊý¾Ý¿â(Êý¾Ý)½øÐвÙ×÷µÄΩһ;¾¶£»
ÏûºÄÁË70%~90%µÄÊý¾Ý¿â×ÊÔ´£»¶ÀÁ¢ÓÚ³ÌÐòÉè¼ÆÂß¼£¬Ïà¶ÔÓÚ¶Ô³ÌÐòÔ´´úÂëµÄÓÅ»¯£¬¶ÔSQLÓï¾äµÄÓÅ»¯ÔÚʱ¼ä³É±¾ºÍ·çÏÕÉϵĴú¼Û¶¼ºÜµÍ£»
¿ÉÒÔÓв»Í¬µÄд·¨£»Ò×ѧ£¬ÄѾ«Í¨¡£
SQLÓÅ»¯£º
¹Ì¶¨µÄSQLÊéдϰ¹ß£¬ÏàͬµÄ²éѯ¾¡Á¿±£³ÖÏàͬ£¬´æ´¢¹ý³ÌµÄЧÂʽϸߡ£
Ó¦¸Ã±àдÓëÆä¸ñʽһÖµÄÓï¾ä£¬°üÀ¨×ÖĸµÄ´óСд¡¢±êµã·ûºÅ¡¢»»ÐеÄλÖõȶ¼ÒªÒ»ÖÂ
ORACLEÓÅ»¯Æ÷£º
ÔÚÈκοÉÄܵÄʱºò¶¼»á¶Ô±í´ïʽ½øÐÐÆÀ¹À£¬²¢ÇÒ°ÑÌØ¶¨µÄÓï·¨½á¹¹×ª»»³ÉµÈ¼ÛµÄ½á¹¹£¬Õâô×öµÄÔÒòÊÇ
Ҫô½á¹û±í´ïʽÄܹ»±ÈÔ´±í´ïʽ¾ßÓиü¿ìµÄËÙ¶È
ҪôԴ±í´ïʽֻÊǽá¹û±í´ïʽµÄÒ»¸öµÈ¼ÛÓïÒå½á¹¹
²»Í¬µÄSQL½á¹¹ÓÐʱ¾ßÓÐͬÑùµÄ²Ù×÷£¨ÀýÈ磺= ANY (subquery) and IN (subquery)£©£¬ORACLE»á°ÑËûÃÇÓ³Éäµ½Ò»¸öµ¥Ò»µÄÓïÒå½á¹¹¡£
1 ³£Á¿ÓÅ»¯£º
³£Á¿µÄ¼ÆËãÊÇÔÚÓï¾ä±»ÓÅ»¯Ê±Ò»´ÎÐÔÍê³É£¬¶ø²»ÊÇÔÚÿ´ÎÖ´ÐÐʱ¡£ÏÂÃæÊǼìË÷ÔÂн´óÓÚ2000µÄµÄ±í´ïʽ£º
sal > 240 ......
SQLµÄÓÅ»¯Ó¦¸Ã´Ó5¸ö·½Ãæ½øÐе÷Õû£º
1.È¥µô²»±ØÒªµÄ´óÐͱíµÄÈ«±íɨÃè
2.»º´æÐ¡ÐͱíµÄÈ«±íɨÃè
3.¼ìÑéÓÅ»¯Ë÷ÒýµÄʹÓÃ
4.¼ìÑéÓÅ»¯µÄÁ¬½Ó¼¼Êõ
5.¾¡¿ÉÄܼõÉÙÖ´Ðмƻ®µÄCost
SQLÓï¾ä£º
ÊǶÔÊý¾Ý¿â(Êý¾Ý)½øÐвÙ×÷µÄΩһ;¾¶£»
ÏûºÄÁË70%~90%µÄÊý¾Ý¿â×ÊÔ´£»¶ÀÁ¢ÓÚ³ÌÐòÉè¼ÆÂß¼£¬Ïà¶ÔÓÚ¶Ô³ÌÐòÔ´´úÂëµÄÓÅ»¯£¬¶ÔSQLÓï¾äµÄÓÅ»¯ÔÚʱ¼ä³É±¾ºÍ·çÏÕÉϵĴú¼Û¶¼ºÜµÍ£»
¿ÉÒÔÓв»Í¬µÄд·¨£»Ò×ѧ£¬ÄѾ«Í¨¡£
SQLÓÅ»¯£º
¹Ì¶¨µÄSQLÊéдϰ¹ß£¬ÏàͬµÄ²éѯ¾¡Á¿±£³ÖÏàͬ£¬´æ´¢¹ý³ÌµÄЧÂʽϸߡ£
Ó¦¸Ã±àдÓëÆä¸ñʽһÖµÄÓï¾ä£¬°üÀ¨×ÖĸµÄ´óСд¡¢±êµã·ûºÅ¡¢»»ÐеÄλÖõȶ¼ÒªÒ»ÖÂ
ORACLEÓÅ»¯Æ÷£º
ÔÚÈκοÉÄܵÄʱºò¶¼»á¶Ô±í´ïʽ½øÐÐÆÀ¹À£¬²¢ÇÒ°ÑÌØ¶¨µÄÓï·¨½á¹¹×ª»»³ÉµÈ¼ÛµÄ½á¹¹£¬Õâô×öµÄÔÒòÊÇ
Ҫô½á¹û±í´ïʽÄܹ»±ÈÔ´±í´ïʽ¾ßÓиü¿ìµÄËÙ¶È
ҪôԴ±í´ïʽֻÊǽá¹û±í´ïʽµÄÒ»¸öµÈ¼ÛÓïÒå½á¹¹
²»Í¬µÄSQL½á¹¹ÓÐʱ¾ßÓÐͬÑùµÄ²Ù×÷£¨ÀýÈ磺= ANY (subquery) and IN (subquery)£©£¬ORACLE»á°ÑËûÃÇÓ³Éäµ½Ò»¸öµ¥Ò»µÄÓïÒå½á¹¹¡£
1 ³£Á¿ÓÅ»¯£º
³£Á¿µÄ¼ÆËãÊÇÔÚÓï¾ä±»ÓÅ»¯Ê±Ò»´ÎÐÔÍê³É£¬¶ø²»ÊÇÔÚÿ´ÎÖ´ÐÐʱ¡£ÏÂÃæÊǼìË÷ÔÂн´óÓÚ2000µÄµÄ±í´ïʽ£º
sal > 240 ......
Èç¹ûÄãÕýÔÚ¸ºÔðÒ»¸ö»ùÓÚSQL ServerµÄÏîÄ¿£¬»òÕßÄã¸Õ¸Õ½Ó´¥SQL Server£¬Äã¶¼ÓпÉÄÜÒªÃæÁÙһЩÊý¾Ý¿âÐÔÄܵÄÎÊÌ⣬ÕâÆªÎÄÕ»áΪÄãÌṩһЩÓÐÓõÄÖ¸µ¼£¨ÆäÖдó¶àÊýÒ²¿ÉÒÔÓÃÓÚÆäËüµÄDBMS£©¡£
ÔÚÕâÀÎÒ²»´òËã½éÉÜʹÓÃSQL ServerµÄÇÏÃÅ£¬Ò²²»ÄÜÌṩһ¸ö°üÖΰٲ¡µÄ·½°¸£¬ÎÒËù×öµÄÊÇ×ܽáһЩ¾Ñé----¹ØÓÚÈçºÎÐγÉÒ»¸öºÃµÄÉè¼Æ¡£ÕâЩ¾ÑéÀ´×ÔÎÒ¹ýÈ¥¼¸ÄêÖоÊܵĽÌѵ£¬Ò»Ö±À´£¬ÎÒ¿´µ½Ðí¶àͬÑùµÄÉè¼Æ´íÎó±»Ò»´ÎÓÖÒ»´ÎµÄÖØ¸´¡£
Ò»¡¢Á˽âÄãÓõŤ¾ß
²»ÒªÇáÊÓÕâÒ»µã£¬ÕâÊÇÎÒÔÚÕâÆªÎÄÕÂÖн²ÊöµÄ×î¹Ø¼üµÄÒ»Ìõ¡£Ò²ÐíÄãÒ²¿´µ½ÓкܶàµÄSQL Server³ÌÐòԱûÓÐÕÆÎÕÈ«²¿µÄT-SQLÃüÁîºÍSQL ServerÌṩµÄÄÇЩÓÐÓõŤ¾ß¡£
¡°Ê²Ã´£¿ÎÒÒªÀË·ÑÒ»¸öÔµÄʱ¼äÀ´Ñ§Ï°ÄÇЩÎÒÓÀÔ¶Ò²²»»áÓõ½µÄSQLÃüÁ£¿£¿¡±£¬ÄãÒ²Ðí»áÕâÑù˵¡£¶ÔµÄ£¬Äã²»ÐèÒªÕâÑù×ö¡£µ«ÊÇÄãÓ¦¸ÃÓÃÒ»¸öÖÜÄ©ä¯ÀÀËùÓеÄT-SQLÃüÁî¡£ÔÚÕâÀÄãµÄÈÎÎñÊÇÁ˽⣬½«À´£¬µ±ÄãÉè¼ÆÒ»¸ö²éѯʱ£¬Äã»á¼ÇÆðÀ´£º¡°¶ÔÁË£¬ÕâÀïÓÐÒ»¸öÃüÁî¿ÉÒÔÍêȫʵÏÖÎÒÐèÒªµÄ¹¦ÄÜ¡±£¬ÓÚÊÇ£¬µ½MSDN²é¿´Õâ¸öÃüÁîµÄÈ·ÇÐÓï·¨¡£
¶þ¡¢²»ÒªÊ¹ÓÃÓαê
ÈÃÎÒÔÙÖØ¸´Ò»±é£º²»ÒªÊ¹ÓÃÓαꡣÈç¹ûÄãÏëÆÆ»µÕû¸öϵͳµÄÐÔÄܵϰ£¬ËüÃǵ¹ÊÇÄã×îÓÐЧµÄÊ×Ñ¡°ì·¨¡£´ó¶à ......
½ñÌ죬ÓÐÒ»¸ösql NOT INÓï¾ä£¬Æ¥ÅäÌõ¼þÀïÓÐÒ»¸önull£¬½á¹ûʲô¶¼²é²»³öÀ´£¬Í¬Ê¾õµÃºÜÄÑÀí½â¡£ÆäʵֻҪÃ÷°×Ò»µã¾Í¿ÉÒÔÁË£¬INÓï¾äÆ¥ÅäµÄʱºòÊÇÓÃ=£¬NOT INÆ¥ÅäµÄʱ»áÓÃ<>£¬¾ÍºÜÈÝÒ×Àí½âÁË¡£
Ê×ÏÈÎÒÃÇÒªÖªµÀ£¬nullÔÚoracleÊǸöÌØÊâµÄ¶«Î÷£¬Ã»ÓÐÈκοɱÈÐÔ£¬Èç¹ûʹÓà =/<> ¶Ô±Ènull£¬µÃµ½µÄʼÖÕÊÇfalse¡£null ÖµÖ»ÄÜÓà is null/is not nullÀ´½øÐжԱȡ£
ÒÑÖª±ítable£º
type value
SC 1
PO 4
BO 9
select * from table where type IN£¨'SC'£¬null£©£»
Õâ¾ä»°¾ÍÏ൱ÓÚ£ºselect * from table where type='SC' or type=null;
ÒòΪÒѾÓÐ type='SC'Æ¥Å䣬¶øtype=nullûÓпɱÈÐÔ£¬¿ÉÒÔÈÏΪ±»ºöÂÔÁË£¬ËùÒÔÔÚ IN Óï¾äÀïµÄ null ¿ÉÒÔÈÏΪûÓÐÒâÒå¡£
select * from table where type NOT IN£¨'SC'£¬null£©£»
Õâ¾ä»°¾ÍÏ൱ÓÚ£ºselect * from table where type!='SC' and type!=null;
ÒòΪ type!=null ·µ»ØµÄʼÖÕÊÇfalse£¬Õû¸ö²éѯÓï¾ä²»»áÆ¥ÅäÈκÎÒ»Ìõ¼Ç¼£¬ËùÒÔNOT INÓï¾äÀïµÄnull»áʹ²éѯûÓÐÈκνá¹û¡£ ......
½ñÌ죬ÓÐÒ»¸ösql NOT INÓï¾ä£¬Æ¥ÅäÌõ¼þÀïÓÐÒ»¸önull£¬½á¹ûʲô¶¼²é²»³öÀ´£¬Í¬Ê¾õµÃºÜÄÑÀí½â¡£ÆäʵֻҪÃ÷°×Ò»µã¾Í¿ÉÒÔÁË£¬INÓï¾äÆ¥ÅäµÄʱºòÊÇÓÃ=£¬NOT INÆ¥ÅäµÄʱ»áÓÃ<>£¬¾ÍºÜÈÝÒ×Àí½âÁË¡£
Ê×ÏÈÎÒÃÇÒªÖªµÀ£¬nullÔÚoracleÊǸöÌØÊâµÄ¶«Î÷£¬Ã»ÓÐÈκοɱÈÐÔ£¬Èç¹ûʹÓà =/<> ¶Ô±Ènull£¬µÃµ½µÄʼÖÕÊÇfalse¡£null ÖµÖ»ÄÜÓà is null/is not nullÀ´½øÐжԱȡ£
ÒÑÖª±ítable£º
type value
SC 1
PO 4
BO 9
select * from table where type IN£¨'SC'£¬null£©£»
Õâ¾ä»°¾ÍÏ൱ÓÚ£ºselect * from table where type='SC' or type=null;
ÒòΪÒѾÓÐ type='SC'Æ¥Å䣬¶øtype=nullûÓпɱÈÐÔ£¬¿ÉÒÔÈÏΪ±»ºöÂÔÁË£¬ËùÒÔÔÚ IN Óï¾äÀïµÄ null ¿ÉÒÔÈÏΪûÓÐÒâÒå¡£
select * from table where type NOT IN£¨'SC'£¬null£©£»
Õâ¾ä»°¾ÍÏ൱ÓÚ£ºselect * from table where type!='SC' and type!=null;
ÒòΪ type!=null ·µ»ØµÄʼÖÕÊÇfalse£¬Õû¸ö²éѯÓï¾ä²»»áÆ¥ÅäÈκÎÒ»Ìõ¼Ç¼£¬ËùÒÔNOT INÓï¾äÀïµÄnull»áʹ²éѯûÓÐÈκνá¹û¡£ ......
1.Ö»²éѯÐèÒªµÄÁУ¬²»ÓÃ*
2.INÊʺÏÓÚÍâ±í´ó¶øÄÚ±íСµÄÇé¿ö£»EXISTSÊʺÏÓÚÍâ±íС¶øÄÚ±í´óµÄÇé¿ö 1¡¢Éý¼¶Ó²¼þ
2¡¢¸ù¾Ý²éѯÌõ¼þ,½¨Á¢Ë÷Òý,ÓÅ»¯Ë÷Òý¡¢ÓÅ»¯·ÃÎÊ·½Ê½£¬ÏÞÖÆ½á¹û¼¯µÄÊý¾ÝÁ¿¡£
3¡¢À©´ó·þÎñÆ÷µÄÄÚ´æ
4¡¢Ôö¼Ó·þÎñÆ÷CPU¸öÊý
5¡¢¶ÔÓÚ´óµÄÊý¾Ý¿â²»ÒªÉèÖÃÊý¾Ý¿â×Ô¶¯Ôö³¤£¬Ëü»á½µµÍ·þÎñÆ÷µÄÐÔÄÜ
6¡¢ÔÚ²éѯSelectÓï¾äÖÐÓÃWhere×Ö¾äÏÞÖÆ·µ»ØµÄÐÐÊý,±ÜÃâ±íɨÃè,Èç¹û·µ»Ø²»±ØÒªµÄÊý¾Ý£¬ÀË·ÑÁË·þÎñÆ÷µÄI/O×ÊÔ´£¬¼ÓÖØÁËÍøÂçµÄ¸ºµ£½µµÍÐÔÄÜ¡£Èç¹û±íºÜ´ó£¬ÔÚ±íɨÃèµÄÆÚ¼ä½«±íËø×¡£¬½ûÖ¹ÆäËûµÄÁª½Ó·ÃÎʱí,ºó¹ûÑÏÖØ¡£
7¡¢²éѯʱ²»Òª·µ»Ø²»ÐèÒªµÄÐС¢ÁÐ
8¡¢ÓÃselect top 100 / 10 Percent À´ÏÞÖÆÓû§·µ»ØµÄÐÐÊý»òÕßSET ROWCOUNTÀ´ÏÞÖÆ²Ù×÷µÄÐÐ
9¡¢ÔÚINºóÃæÖµµÄÁбíÖУ¬½«³öÏÖ×îÆµ·±µÄÖµ·ÅÔÚ×îÇ°Ãæ£¬³öÏÖµÃ×îÉٵķÅÔÚ×îºóÃæ£¬¼õÉÙÅжϵĴÎÊý
10¡¢Ò»°ãÔÚGROUP BY ¸öHAVING×Ö¾ä֮ǰ¾ÍÄÜÌÞ³ý¶àÓàµÄÐУ¬ËùÒÔ¾¡Á¿²»ÒªÓÃËüÃÇÀ´×öÌÞ³ýÐеŤ×÷¡£ËûÃǵÄÖ´ÐÐ˳ÐòÓ¦¸ÃÈçÏÂ×îÓÅ£º
selectµÄWh ......
¹Û²ì½üÀ´µÄһЩ°²È«Ê¼þ¼°Æäºó¹û£¬°²È«×¨¼ÒÃÇÒѾµÃµ½Ò»¸ö½áÂÛ£¬ÕâЩÍþвÖ÷ÒªÊÇͨ¹ýSQL×¢ÈëÔì³ÉµÄ¡£ËäÈ»Ç°ÃæÓÐÐí¶àÎÄÕÂÌÖÂÛÁËSQL×¢È룬µ«½ñÌìËùÌÖÂÛµÄÄÚÈÝÒ²Ðí¿É°ïÖúÄã¼ì²é×Ô¼ºµÄ·þÎñÆ÷£¬²¢²ÉÈ¡ÏàÓ¦·À·¶´ëÊ©¡£
SQL×¢Èë¹¥»÷µÄÖÖÀà
Öª±ËÖª¼º£¬·½¿Éȡʤ¡£Ê×ÏÈÒªÇå³þSQL×¢Èë¹¥»÷ÓÐÄÄЩÖÖÀà¡£
1.ûÓÐÕýÈ·¹ýÂËתÒå×Ö·û
ÔÚÓû§µÄÊäÈëûÓÐΪתÒå×Ö·û¹ýÂËʱ£¬¾Í»á·¢ÉúÕâÖÖÐÎʽµÄ×¢Èëʽ¹¥»÷£¬Ëü»á±»´«µÝ¸øÒ»¸öSQLÓï¾ä¡£ÕâÑù¾Í»áµ¼ÖÂÓ¦ÓóÌÐòµÄÖÕ¶ËÓû§¶ÔÊý¾Ý¿âÉϵÄÓï¾äʵʩ²Ù×Ý¡£±È·½Ëµ£¬ÏÂÃæµÄÕâÐдúÂë¾Í»áÑÝʾÕâÖÖ©¶´£º
statement := "SELECT * from users WHERE name = '" + userName + "'; "
ÕâÖÖ´úÂëµÄÉè¼ÆÄ¿µÄÊǽ«Ò»¸öÌØ¶¨µÄÓû§´ÓÆäÓû§±íÖÐÈ¡³ö£¬µ«ÊÇ£¬Èç¹ûÓû§Ãû±»Ò»¸ö¶ñÒâµÄÓû§ÓÃÒ»ÖÖÌØ¶¨µÄ·½Ê½Î±Ô죬Õâ¸öÓï¾äËùÖ´ÐеIJÙ×÷¿ÉÄܾͲ»½ö½öÊÇ´úÂëµÄ×÷ÕßËùÆÚÍûµÄÄÇÑùÁË¡£ÀýÈ磬½«Óû§Ãû±äÁ¿(¼´username)ÉèÖÃΪ£º
a' or 't'='t£¬´ËʱÔʼÓï¾ä·¢ÉúÁ˱仯£º
SELECT * from users WHERE name = 'a' OR 't'='t';
Èç¹ûÕâÖÖ´úÂë±»ÓÃÓÚÒ»¸öÈÏÖ¤¹ý³Ì£¬ÄÇôÕâ¸öÀý×Ó¾ÍÄܹ»Ç¿ÆÈÑ¡ÔñÒ»¸öºÏ·¨µÄÓû§Ãû£¬ÒòΪ¸³Öµ't'='tÓÀÔ¶ÊÇÕýÈ·µÄ¡£
ÔÚһР......