SQL Server 2005ÖеĴ洢¹ý³Ì²¢·¢ÎÊÌâ
ÎÒÔÚSQL Server2005ÖÐÓöµ½Á˲¢·¢ÎÊÌâ¡£ÎÒ³ÖÓгµÆ±µÄ¹«¹²Æû³µÉÏÓÐһЩ¿ÕÏеÄ×ùλ¡£ÎÒÔÚ²åÈëÏúÊÛµÄ²éÆ±Ö®Ç°£¬ÐèÒª²é¿´ÊÇ·ñ»¹ÓпÕÏеÄ×ùλ¡£ÎҵĴ洢¹ý³Ì×öµÄÊÂÇéÈçÏÂËùʾ£º
create PROCEDURE add_ticket — parameters DECLARE free_seats int BEGIN TRANSACTION select free_seats = count(*) from tickets where seat_is_not_taken IF free_seats <> 0 insert INTO tickets VALUES(…) — some other statements END TRANSACTION
ÎÊÌâ¾ÍÊÇÁ½¸ö¹ý³Ì¿ÉÒÔͬʱ¶ÁÈ¡¿ÕÏÐÆ±Êý£¬²¢ÇÒ¶¼¿ÉÒÔÔ¤Ô¼Ò»ÕÅÆ±£¬¼´Ê¹ÊÇÄÇÀïÒѾûÓпÕÓàµÄÁË¡£ÎÒÐèÒªÒ»ÖÖ·½·¨À´·ÀÖ¹Ò»¸ö¹ý³ÌÔÚÁíÒ»¸ö¹ý³ÌÔËÐÐadd_ticket³ÌÐò£¬µ«ÊÇ»¹Ã»ÓвåÈëÒ»ÕÅÐÂÆ±µÄʱºò¶ÁÈ¡¿ÕƱµÄÊýÁ¿¡£
»Ø´ð£º
ÄãÊÇÕýÈ·µÄ;¸ü¸ßµÄ¸ôÀë¼¶±ðÒ²²»»á±£Ö¤¶à¸ö¶ÁÕßȥͬʱȥ¶Áȡͬһ¸öÊý¾ÝÐС£È»¶ø£¬»¹Óм¸ÖÖ·½·¨Äã¿ÉÒÔÍê³ÉÕâÏ×÷¡£ÀýÈ磬Äã¿ÉÒÔ¸øÃ¿¸ö×ùλ·ÖÅäÒ»¸öΩһµÄ±êʶ·û(Òâ˼ÊÇ£¬Î©Ò»¼ü——²»Ò»¶¨ÊÇGUID)£¬²¢ÇÒ´´½¨Ò»¸öÃèÊöÄÄЩ×ùλÒѾ±»Ô¤¶©ÁËµÄ±í¡£ÔÚ±íÉÏ·ÅÒ»¸ö UNIQUEÔ¼Êø£¬Äã¾Í¿ÉÒÔÈ·±£Í¬Ò»¸ö×ùλ²»»á±»²åÈëÁ½´ÎÁË¡£
¾ÍÊÇ˵£¬ÎÒÈÏΪһ¸ö¸ ......
ÔÚSQL Server¿ª·¢ÎÊÌâÖÐÄã¿ÉÄÜ»áÎʵ½µÄÊ®¸öÎÊÌâ:
1¡¢Ê²Ã´Êdz£¼ûµÄ¶Ô±íºÍ×ֶεÄÃû×ÖÔ¼Êø?
¡¡¡¡2¡¢ÓÐûÓпÉÄÜÔÚ²»Á˽âT-SQLµÄÇé¿öϱàд´æ´¢¹ý³Ì?
¡¡¡¡3¡¢T-SQLÖÐÈçºÎ±È½ÏCLR´æ´¢¹ý³ÌºÍº¯ÊýµÄÐÔÄÜ?
¡¡¡¡4¡¢ÎÒÈçºÎÔÚÒ»¸ö´æ´¢¹ý³ÌÖÐʹÓÃÁíÒ»¸ö´æ´¢¹ý³Ì²úÉúµÄ½á¹û?
¡¡¡¡5¡¢ÎÒÈçºÎ½â¾öSQL Server 2005µÄ²¢·¢ÎÊÌâ?
¡¡¡¡6¡¢ÔÚSQL Server 2005ÖÐÓÃʲô¹¤¾ßÌæ´úÁ˲éѯ·ÖÎöÆ÷?
¡¡¡¡7¡¢ÄãÄÜÌṩһЩÓйØSQL ºÍT-SQLµÄÏêϸÐÅÏ¢Âð?
¡¡¡¡8¡¢SQL Server 2005ÓÐûÓÐеÄË÷ÒýÀàÐÍ?
¡¡¡¡9¡¢ÎÒÈçºÎ´´½¨Ò»¸ö½Å±¾ÔÚ±íÖнøÐÐÑ¡Ôñ?
¡¡¡¡10¡¢ÎÒÈçºÎÁгöÄÇЩûÓмǼµÄÊý¾Ý¿â±í?
¶ÔÓÚ±íºÍ×ֶεij£¼ûÃû×ÖÔ¼Êø
»Ø´ð:
»Ø´ð:
SQL Server 2000ϵıíºÍ×Ö¶ÎÃû³ÆÓÐ1µ½128×Ö½ÚµÄÏÞÖÆ£¬²¢ÇÒ×ñÑÓÃÓÚ±êʶµÄ¹æÔò¡£
µÚÒ»¸ö×Öĸ±ØÐëÊÇÈçϵÄÒ»ÖÖ:
· Unicode Standard 2.0Öй涨µÄ×Öĸ¡£
Unicode¶Ô×ÖĸµÄ¶¨Òå°üÀ¨:À¶¡×Öĸ£¬´ÓAµ½Z£¬³ýÁËÀ´×ÔÆäËûÓïÑÔµÄ×Öĸ֮Íâ¡£
· Ï»®Ïß(_)£¬at·ûºÅ(@)£¬»òÕßÊý×Ö·ûºÅ(#)
ÔÚSQL ServerÖÐÒÔÕâЩ·ûºÅ×÷Ϊ±êʶ·ûµÄ¿ªÊ¼¾ßÓÐÌØÊâµÄº¬Òå¡£Ò»¸öÒÔat·ûºÅ(@)¿ªÍ·µÄ±êʶ·û±íʾһ¸ö±¾µØµÄ±äÁ¿»òÕß²ÎÊý¡£Ò»¸öÒÔÊý×Ö·ûºÅ(#)¿ªÍ·µÄ±êʶ· ......
£Ó£Ñ£Ì×¢ÈëÊÇ´ÓÕý³£µÄWWW¶Ë¿Ú·ÃÎÊ£¬¶øÇÒ±íÃæ¿´ÆðÀ´¸úÒ»°ãµÄWebÒ³Ãæ·ÃÎÊÃ»Ê²Ã´Çø±ð£¬ ËùÒÔĿǰÊÐÃæµÄ·À»ðǽ¶¼²»»á¶Ô£Ó£Ñ£Ì×¢Èë·¢³ö¾¯±¨£¬Èç¹û¹ÜÀíԱû²é¿´IISÈÕÖ¾µÄϰ¹ß£¬¿ÉÄܱ»ÈëÇֺܳ¤Ê±¼ä¶¼²»»á·¢¾õ¡£
Ëæ×ÅB/SģʽӦÓÿª·¢µÄ·¢Õ¹£¬Ê¹ÓÃÕâÖÖģʽ±àдӦÓóÌÐòµÄ³ÌÐòÔ±Ò²Ô½À´Ô½¶à¡£µ«ÊÇÓÉÓÚÕâ¸öÐÐÒµµÄÈëÃÅÃż÷²»¸ß£¬³ÌÐòÔ±µÄˮƽ¼°¾ÑéÒ²²Î²î²»Æë£¬Ï൱´óÒ»²¿·Ö³ÌÐòÔ±ÔÚ±àд´úÂëµÄʱºò£¬Ã»ÓжÔÓû§ÊäÈëÊý¾ÝµÄºÏ·¨ÐÔ½øÐÐÅжϣ¬Ê¹Ó¦ÓóÌÐò´æÔÚ°²È«Òþ»¼¡£Óû§¿ÉÒÔÌá½»Ò»¶ÎÊý¾Ý¿â²éѯ´úÂ룬¸ù¾Ý³ÌÐò·µ»ØµÄ½á¹û£¬»ñµÃijЩËûÏëµÃÖªµÄÊý¾Ý£¬Õâ¾ÍÊÇËùνµÄSQL Injection£¬¼´SQL×¢Èë¡£
SQL×¢ÈëÊÇ´ÓÕý³£µÄWWW¶Ë¿Ú·ÃÎÊ£¬¶øÇÒ±íÃæ¿´ÆðÀ´¸úÒ»°ãµÄWebÒ³Ãæ·ÃÎÊÃ»Ê²Ã´Çø±ð£¬ËùÒÔĿǰÊÐÃæµÄ·À»ðǽ¶¼²»»á¶ÔSQL×¢Èë·¢³ö¾¯±¨£¬Èç¹û¹ÜÀíԱû²é¿´IISÈÕÖ¾µÄϰ¹ß£¬¿ÉÄܱ»ÈëÇֺܳ¤Ê±¼ä¶¼²»»á·¢¾õ¡£
µ«ÊÇ£¬SQL×¢ÈëµÄÊÖ·¨Ï൱Áé»î£¬ÔÚ×¢ÈëµÄʱºò»áÅöµ½ºÜ¶àÒâÍâµÄÇé¿ö¡£Äܲ»Äܸù¾Ý¾ßÌåÇé¿ö½øÐзÖÎö£¬¹¹ÔìÇÉÃîµÄSQLÓï¾ä£¬´Ó¶ø³É¹¦»ñÈ¡ÏëÒªµÄÊý¾Ý£¬ÊǸßÊÖÓ듲ËÄñ”µÄ¸ù±¾Çø±ð¡£
SQL×¢Èë©¶´È«½Ó´¥--ÈëÃÅÆª
SQL×¢ÈëÊÇ´ÓÕý³£ ......
Create PROCEDURE UpdateWanjun
@UserName nvarchar(500),
@UserPassword nvarchar(500),
@ReturnVal int output
AS
--Set XAcT_ABORT ON
Begin Transaction T
Update admins set UserPassword = @UserPassword where UserName = @UserName
Update admins set UserPassword = @UserPassword,a='aaadfasdfasdfas' where id=4 --³ö´íÓï¾ä ,aΪintÐÍ,´óСΪĬÈÏÖµ4
--set @ReturnVal=@@Rowcount(Õâ¸ö±äÁ¿,Ö»ÄÜÔÚ½ô°¤×ÅËüµÄÉÏÃæSQLÏÂÆð×÷ÓÃ,ÕâÑù²ÅÄÜ·µ»ØÖµ,Ö»ÓзÅÔÚUpdateÏÂÃæ²Å¹ÜÓÃ)
IF @@Error <> 0
Begin
Print '111'
RollBack Transaction T
End
Else
print '222'
  ......
Ê×ÏȽéÉÜÒ»ÏÂʲôÊÇ´æ´¢¹ý³Ì£º´æ´¢¹ý³Ì¾ÍÊǽ«³£ÓõĻòºÜ¸´ÔӵŤ×÷£¬Ô¤ÏÈÓÃSQLÓï¾äдºÃ²¢ÓÃÒ»¸öÖ¸¶¨µÄÃû³Æ´æ´¢ÆðÀ´£¬²¢ÇÒÕâÑùµÄÓï¾äÊÇ·ÅÔÚÊý¾Ý¿âÖе쬻¹¿ÉÒÔ¸ù¾ÝÌõ¼þÖ´Ðв»Í¬SQLÓï¾ä£¬ ÄÇôÒÔºóÒª½ÐÊý¾Ý¿âÌṩÓëÒѶ¨ÒåºÃµÄ´æ´¢¹ý³ÌµÄ¹¦ÄÜÏàͬµÄ·þÎñʱ£¬Ö»Ðèµ÷ÓÃexecute,¼´¿É×Ô¶¯Íê³ÉÃüÁî¡£
¡¡¡¡Çë´ó¼ÒÀ´Á˽âһϴ洢¹ý³ÌµÄÓï·¨¡£
¡¡¡¡create PROC [ EDURE ] procedure_name [ ; number ]
[ { @parameter data_type }
[ VARYING ] [ = default ] [ OUTPUT ]
] [ ,...n ]
¡¡¡¡[ WITH
{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]
¡¡¡¡[ FOR REPLICATION ]
¡¡¡¡AS sql_statement [ ...n ]
¡¡¡¡²ÎÊý£º
¡¡¡¡procedure_name
¡¡¡¡Ð´洢¹ý³ÌµÄÃû³Æ¡£¹ý³ÌÃû±ØÐë·ûºÏ±êʶ·û¹æÔò£¬ÇÒ¶ÔÓÚÊý¾Ý¿â¼°ÆäËùÓÐÕß±ØÐëΨһ¡£
¡¡¡¡Òª´´½¨¾Ö²¿ÁÙʱ¹ý³Ì£¬¿ÉÒÔÔÚ procedure_name Ç°Ãæ¼ÓÒ»¸ö±àºÅ·û (#procedure_name)£¬Òª´´½¨È«¾ÖÁÙʱ¹ý³Ì£¬¿ÉÒÔÔÚ procedure_name Ç°Ãæ¼ÓÁ½¸ö±àºÅ·û (##procedure_name)¡£ÍêÕûµÄÃû³Æ£¨°üÀ¨ # »ò ##£©²»Äܳ¬¹ý 128 ¸ö×Ö·û¡£Ö¸¶¨¹ý ......
1 --´ÓTable ±íÖÐÈ¡³öµÚ m Ìõµ½µÚ n ÌõµÄ¼Ç¼£º(Not In °æ±¾)
2
3 SELECT TOP n-m+1 *
4 from Table
5 WHERE (id NOT IN (SELECT TOP m-1 id from Table ))
6
7
8 --´ÓTABLE±íÖÐÈ¡³öµÚmµ½nÌõ¼Ç¼ (Exists°æ±¾)
9
10 SELECT TOP n-m+1 * from TABLE AS a WHERE Not Exists
11 (Select * from (Select Top m-1 * from TABLE order by id) b Where b.id=a.id )
12 Order by id
13
14
15 --mΪÉϱ꣬nΪϱê,ÀýÈçÈ¡³öµÚ8µ½12Ìõ¼Ç¼,m=8,n=12,TableΪ±íÃû
16
17 Select Top n-m+1 * from Table
18 Where Id>(Select Max(Id) from
19 (Select Top m-1 Id from Table Order By Id Asc) Temp)
20 Order By Id Asc ......