SQL Server ÅÅÐòʵÏÖº¯Êýϸ˵
ÅÅÃûº¯ÊýÊÇSQL Server2005мӵŦÄÜ¡£ÔÚSQL Server2005ÖÐÓÐÈçÏÂËĸöÅÅÃûº¯Êý£º
¡¡¡¡1. row_number
¡¡¡¡2. rank
¡¡¡¡3. dense_rank
¡¡¡¡4. ntile
¡¡¡¡Ò»¡¢row_number
¡¡¡¡row_numberº¯ÊýµÄÓÃ;ÊǷdz£¹ã·º£¬Õâ¸öº¯ÊýµÄ¹¦ÄÜÊÇΪ²éѯ³öÀ´µÄÿһÐмǼÉú³ÉÒ»¸öÐòºÅ¡£row_numberº¯ÊýµÄÓ÷¨ÈçÏÂÃæµÄSQLÓï¾äËùʾ£º
¡¡¡¡select row_number() over(order by field1) as row_number,* from t_table
¡¡¡¡ÆäÖÐrow_numberÁÐÊÇÓÉrow_numberº¯ÊýÉú³ÉµÄÐòºÅÁС£ÔÚʹÓÃrow_numberº¯ÊýÊÇҪʹÓÃover×Ó¾äÑ¡Ôñ¶ÔijһÁнøÐÐÅÅÐò£¬È»ºó²ÅÄÜÉú³ÉÐòºÅ¡£
¡¡¡¡Êµ¼ÊÉÏ£¬row_numberº¯ÊýÉú³ÉÐòºÅµÄ»ù±¾ÔÀíÊÇÏÈʹÓÃover×Ó¾äÖеÄÅÅÐòÓï¾ä¶Ô¼Ç¼½øÐÐÅÅÐò£¬È»ºó°´×ÅÕâ¸ö˳ÐòÉú³ÉÐòºÅ¡£over×Ó¾äÖеÄorder by×Ó¾äÓëSQLÓï¾äÖеÄorder by×Ó¾äûÓÐÈκιØÏµ£¬ÕâÁ½´¦µÄorder by ¿ÉÒÔÍêÈ«²»Í¬£¬ÈçÏÂÃæµÄSQLÓï¾äËùʾ£º
¡¡¡¡select row_number() over(order by field2 desc) as row_number,* from t_table order by field1 desc
¡¡¡¡ÎÒÃÇ¿ÉÒÔʹÓÃrow_numberº¯ÊýÀ´ÊµÏÖ²éѯ±íÖÐÖ¸¶¨·¶Î§µÄ¼Ç¼£¬Ò»°ã½«ÆäÓ¦Óõ½WebÓ¦ÓóÌÐòµÄ·ÖÒ³¹¦ÄÜÉÏ¡£ÏÂÃæµÄSQLÓï¾ä¿ÉÒÔ²éѯt_table±íÖеÚ2ÌõºÍµÚ3Ìõ¼Ç¼£º
¡¡¡¡ÉÏÃæµÄSQLÓï¾äʹÓÃÁËCTE£¬¹ØÓÚCTEµÄ½éÉܽ«¶ÁÕß²ÎÔÄ¡¶SQL Server2005ÔÓ̸(1)£ºÊ¹Óù«Óñí±í´ïʽ(CTE)¼ò»¯Ç¶Ì×SQL¡·¡£
¡¡¡¡ÁíÍâҪעÒâµÄÊÇ£¬Èç¹û½«row_numberº¯ÊýÓÃÓÚ·ÖÒ³´¦Àí£¬over×Ó¾äÖеÄorder by ÓëÅÅÐò¼Ç¼µÄorder by Ó¦Ïàͬ£¬·ñÔòÉú³ÉµÄÐòºÅ¿ÉÄܲ»ÊÇÓÐÐøµÄ¡£
¡¡¡¡µ±È»£¬²»Ê¹ÓÃrow_numberº¯ÊýÒ²¿ÉÒÔʵÏÖ²éѯָ¶¨·¶Î§µÄ¼Ç¼£¬¾ÍÊDZȽÏÂé·³¡£Ò»°ãµÄ·½·¨ÊÇʹÓõߵ¹TopÀ´ÊµÏÖ£¬ÀýÈ磬²éѯt_table±íÖеÚ2ÌõºÍµÚ3Ìõ¼Ç¼£¬¿ÉÒÔÏȲé³öǰ3Ìõ¼Ç¼£¬È»ºó½«²éѯ³öÀ´µÄÕâÈýÌõ¼Ç¼°´µ¹ÐòÅÅÐò£¬ÔÙȡǰ2Ìõ¼Ç¼£¬×îºóÔÙ½«²é³öÀ´µÄÕâ2Ìõ¼Ç¼ÔÙ°´µ¹ÐòÅÅÐò£¬¾ÍÊÇ×îÖÕ½á¹û¡£SQLÓï¾äÈçÏ£º
¡¡¡¡select * from (select top 2 * from( select top 3 * from t_table order by field1) a order by field1 desc) b order by field1
¡¡¡¡Õâ¸ö²éѯ½á¹û³ýÁËûÓÐÐòºÅÁÐrow_number
¡¡¡¡¶þ¡¢rank
¡¡¡¡rankº¯Êý¿¼Âǵ½ÁËover×Ó¾äÖÐÅÅÐò×Ö¶ÎÖµÏàͬµÄÇé¿ö
¡¡¡¡ÔÚͼ6ËùʾµÄ¼Ç¼ÖкóÈýÌõ¼Ç¼µÄfield1×Ö¶ÎÖµÊÇÏàͬµÄ¡£Èç¹ûʹÓÃrankº¯ÊýÀ´Éú³ÉÐòºÅ£¬Õâ3Ìõ¼Ç¼µÄÐòºÅÊÇÏàͬµÄ£¬¶øµÚ4Ìõ¼Ç¼»á¸ù¾Ýµ±Ç°µÄ¼Ç¼ ÊýÉú³ÉÐòºÅ£¬ºóÃæµÄ¼Ç¼ÒÀ´ËÀàÍÆ£¬Ò²¾ÍÊÇ˵£¬ÔÚÕâ¸öÀý×ÓÖУ¬µÚ4Ìõ¼Ç¼µÄÐòºÅÊÇ4£¬¶ø²»ÊÇ2¡£rankº¯Êý µÄʹÓ÷½·¨Óërow
Ïà¹ØÎĵµ£º
1¡¢³£ÓÃÈÕÆÚ·½·¨(ÏÂÃæµÄGetDate() = '2006-11-08 13:37:56.233')
(1)DATENAME ( datepart ,date )
·µ»Ø±íʾָ¶¨ÈÕÆÚµÄÖ¸¶¨ÈÕÆÚ²¿·ÖµÄ×Ö·û´®¡£DatepartÏê¼ûÏÂÃæµÄÁбí.
SELECT DateName(day,Getdate()) –·µ»Ø8
(2)DATEPART ( datepart , date )
·µ»Ø±íʾָ¶¨ÈÕÆÚµÄÖ¸ ......
declare @xml xml
set @xml = '<root/>'
select @xml
declare @value varchar(10)
set @value = 'val1'
set @xml.modify('insert <item value="{sql:variable("@value")}" /> into (/root)[1]')
select @xml
set @value = 'val2'
set @xml.modify('replace value of (/root/item/@value)[1] with "val2 ......
¿ìÕÕ¸ôÀë Snapshot Isolation
1¡¢Ð´Èë³ÌÐò²»»á×è°¶ÁÈ¡³ÌÐò
2¡¢ÐµĸôÀë¼¶±ðÌṩÁËÒÔÏÂÓŵ㣺
1) Ìá¸ßÁËÖ»¶ÁÓ¦ÓóÌÐòµÄÊý¾Ý¿ÉÓÃÐÔ
2) ÔÊÐíÔÚOLTP»·¾³ÖÐÖ´ÐзÇ×èÖ¹¶ÁÈ¡²Ù×÷
3) ¿É¶ÔдÈëÊÂÎñ½øÐÐ×Ô¶¯µÄÇ¿ÖÆ³åÍ»¼ì²â
3¡¢ÑÝʾ´úÂë
CREATE DATABASE demo2
GO
USE demo2
ALTER DATABASE demo2 SET allow_snapsho ......
TOP ÔöÇ¿¹¦ÄÜ
1¡¢TOP ÔöÇ¿¡£¿ÉÒÔÖ¸¶¨Ò»¸öÊý×Ö±í´ïʽ£¬ÒÔ·µ»ØÒªÍ¨¹ý²éѯӰÏìµÄÐÐÊý»ò°Ù·Ö±È£¬»¹¿ÉÒÔ¸ù¾ÝÇé¿öʹÓñäÁ¿»ò×Ó²éѯ¡£
¿ÉÒÔÔÚDELETE¡¢UPDATEºÍINSERT²éѯÖÐʹÓÃTOPÑ¡Ïî¡£
2¡¢¸üºÃµØÌæ»»SET ROWCOUNTÑ¡Ïʹ֮¸üΪÓÐЧ¡£
OUTPUT
1¡¢SQL Server 2005ÒýÈëÒ»¸öеÄOUTPUT×Ӿ䣬ÒÔʹÄú¿ÉÒÔ³åÐÞ¸ÄÓï¾ä(INSERT¡ ......