Ç°ÑÔ
×î½ü½ÓÁ¬Óöµ½¼¸¸öÅóÓÑÎÊÎÒͬһ¸öÎÊÌ⣬¾ÍÊǹØÓÚ.NETƽ̨ÉÏORM¿ò¼ÜµÄÑ¡Ôñ¡£ÎÒÏëÔÚÕâ¸ö½²ÇóЧÂʵÄʱ´ú£¬ËÒ²²»ÏëÊÖдSQL»ò´æ´¢¹ý³ÌÈ¥·ÃÎÊÊý¾Ý¿âÁË¡£´ó¼Ò¶¼ÖªµÀ£¬ÔÚJavaƽ̨ÉÏ£¬ORMÕâÒ»¿é»ù±¾ÊÇHibernateµÄÌìÏ¡£µ±È»£¬Ïà¶ÔÇáÁ¿¼¶µÄiBatisÒ²Óв»´íµÄ±íÏÖ¡£
²»¹ý̸µ½.NETƽ̨£¬ORM¿ò¼ÜËƺõÏà¶Ô»ìÂÒÁ˵㡣ºÜ¶àÅóÓÑÎÊÎÒµÄʱºò£¬ÍùÍù»áÕâÑùÎÊ£ºNHibernate¡¢NBearºÍCastle¸ÃÑ¡ÔñÄĸö£¿¶øµ±ÎÒ·´ÎÊ£ºÎªÊ²Ã´²»ÊÊÓÃ΢Èí×Ô´øµÄLinq to SqlÄØ£¿¶Ô·½¾³£»áÃÔãºÍ²»½â¡£
ÎÒ¾õµÃÕâÊǸöºÜÆæ¹ÖµÄÏÖÏó¡£ÒÀÕÕÎÒ¸öÈ˵Äʵ¼ù£¬ÎÒÈÏΪµ±ÐèÒª¿ìËÙ¹¹½¨Ò»¸öÖÐСÐÍÏîĿʱ£¬Linq to SqlÊÇÒ»¸öºÜºÃµÄÑ¡Ôñ¡£ÄãÖÁÉÙÓÐÒÔÏÂÀíÓÉ¿ÉÒÔÑ¡ÔñËü£º
i. ËüÊÇ΢Èí×Ô¼ºµÄ²úÆ·£¬ºÍ.NETƽ̨ÓÐ×ÅÌìÉúµÄÊÊÓ¦ÐÔ¡£Èç¹ûÄãʹÓÃ.NET Framework3.5ºÍVS2008¿ª·¢»·¾³£¬Ëü±¾Éí¾Í¼¯³ÉÔÚÀïÃæÁË£¬Í¬Ê±VS2008¶ÔÓÚLinq to Sql¸øÓèÁËÖî¶à·½±ãµÄÖ§³Ö¡£Ê¹ÓÃËü£¬Äã²»½öÔÚ¿ª·¢ºÍ²¿Êðʱ²»Óÿ¼ÂǵÚÈý·½¿â£¬¸ü¿ÉÒÔ¾¡ÇéÏíÊÜVS2008´øÀ´µÄÖÖÖÖ·½±ã¡£
ii. ÉÏÊÖÊ®·ÖÈÝÒ×£¬Ê¹ÓÃÊ®·ÖÇáËÉ£¬ ......
ÀàÐÍÃû³Æ
Oracle
SQLServer
±È½Ï
×Ö·ûÊý¾ÝÀàÐÍ
CHAR
CHAR
¶¼Êǹ̶¨³¤¶È×Ö·û×ÊÁϵ«oracleÀïÃæ×î´ó¶ÈΪ2kb£¬SQLServerÀïÃæ×î´ó³¤¶ÈΪ8kb
±ä³¤×Ö·ûÊý¾ÝÀàÐÍ
VARCHAR2
VARCHAR
OracleÀïÃæ×î´ó³¤¶ÈΪ4kb£¬SQLServerÀïÃæ×î´ó³¤¶ÈΪ8kb
¸ù¾Ý×Ö·û¼¯¶ø¶¨µÄ¹Ì¶¨³¤¶È×Ö·û´®
NCHAR
NCHAR
Ç°Õß×î´ó³¤¶È2kbºóÕß×î´ó³¤¶È4kb
¸ù¾Ý×Ö·û¼¯¶ø¶¨µÄ¿É±ä³¤¶È×Ö·û´®
NVARCHAR2
NVARCHAR
¶þÕß×î´ó³¤¶È¶¼Îª4kb
ÈÕÆÚºÍʱ¼äÊý¾ÝÀàÐÍ
DATE
ÓÐDatetimeºÍSmalldatetimeÁ½ÖÖ
ÔÚoracleÀïÃæ¸ñʽΪDMYÔÚSQLSerserÀïÃæ¿ÉÒÔµ÷½Ú£¬Ä¬ÈϵÄΪMDY
Êý×ÖÀàÐÍ
NUMBER(P,S)
NUMERIC[P(,S)]
OracleÀïÃæp´ú±íСÊýµã×óÃæµÄλÊý£¬s´ú±íСÊýµãÓÒÃæµÄλÊý¡£¶øSQLServerÀïÃæp´ú±íСÊýµã×óÓÒÁ½ÃæµÄλÊýÖ®ºÍ£¬s´ú±íСÊýµãÓÒÃæµÄλÊý¡£
Êý×ÖÀàÐÍ
DECIMAL(P,S)
DECIMAL[P(,S)]
OracleÀïÃæp´ú±íСÊýµã×óÃæµÄλÊý£¬s´ú±íСÊýµãÓÒÃæµÄλÊý¡£¶øSQLServerÀïÃæp´ú±íСÊýµã×óÓÒÁ½ÃæµÄλÊýÖ®ºÍ£¬s´ú±íСÊýµãÓÒÃæµÄλÊý¡£
ÕûÊýÀàÐÍ
INTEGER
INT
ͬΪÕûÊýÀàÐÍ£¬´æ´¢´óС¶¼Îª4¸ö×Ö½Ú
¸¡µãÊýÀàÐÍ
FLOAT
FLOAT
ʵÊýÀàÐÍ
REAL
REAL
......
ÀàÐÍÃû³Æ
Oracle
SQLServer
±È½Ï
×Ö·ûÊý¾ÝÀàÐÍ
CHAR
CHAR
¶¼Êǹ̶¨³¤¶È×Ö·û×ÊÁϵ«oracleÀïÃæ×î´ó¶ÈΪ2kb£¬SQLServerÀïÃæ×î´ó³¤¶ÈΪ8kb
±ä³¤×Ö·ûÊý¾ÝÀàÐÍ
VARCHAR2
VARCHAR
OracleÀïÃæ×î´ó³¤¶ÈΪ4kb£¬SQLServerÀïÃæ×î´ó³¤¶ÈΪ8kb
¸ù¾Ý×Ö·û¼¯¶ø¶¨µÄ¹Ì¶¨³¤¶È×Ö·û´®
NCHAR
NCHAR
Ç°Õß×î´ó³¤¶È2kbºóÕß×î´ó³¤¶È4kb
¸ù¾Ý×Ö·û¼¯¶ø¶¨µÄ¿É±ä³¤¶È×Ö·û´®
NVARCHAR2
NVARCHAR
¶þÕß×î´ó³¤¶È¶¼Îª4kb
ÈÕÆÚºÍʱ¼äÊý¾ÝÀàÐÍ
DATE
ÓÐDatetimeºÍSmalldatetimeÁ½ÖÖ
ÔÚoracleÀïÃæ¸ñʽΪDMYÔÚSQLSerserÀïÃæ¿ÉÒÔµ÷½Ú£¬Ä¬ÈϵÄΪMDY
Êý×ÖÀàÐÍ
NUMBER(P,S)
NUMERIC[P(,S)]
OracleÀïÃæp´ú±íСÊýµã×óÃæµÄλÊý£¬s´ú±íСÊýµãÓÒÃæµÄλÊý¡£¶øSQLServerÀïÃæp´ú±íСÊýµã×óÓÒÁ½ÃæµÄλÊýÖ®ºÍ£¬s´ú±íСÊýµãÓÒÃæµÄλÊý¡£
Êý×ÖÀàÐÍ
DECIMAL(P,S)
DECIMAL[P(,S)]
OracleÀïÃæp´ú±íСÊýµã×óÃæµÄλÊý£¬s´ú±íСÊýµãÓÒÃæµÄλÊý¡£¶øSQLServerÀïÃæp´ú±íСÊýµã×óÓÒÁ½ÃæµÄλÊýÖ®ºÍ£¬s´ú±íСÊýµãÓÒÃæµÄλÊý¡£
ÕûÊýÀàÐÍ
INTEGER
INT
ͬΪÕûÊýÀàÐÍ£¬´æ´¢´óС¶¼Îª4¸ö×Ö½Ú
¸¡µãÊýÀàÐÍ
FLOAT
FLOAT
ʵÊýÀàÐÍ
REAL
REAL
......
×î½üÔÚÒ»¸öÏîÄ¿ÖÐÓöµ½ÐèÒªÔÚÊý¾Ý²ã¾ÍÆ´½Ó±íÖÐÒ»ÁÐÊý¾ÝµÄÎÊÌâ¡£
ÀýÈ磬test±íÖÐÓиö×Ö¶Ît,tÁÐÖеÄ4ÐÐÊý¾ÝΪ1,2,3,4 £¬ÒªÆ´½Ó³É1+2+3+4£¬×ÁÄ¥ÁËÒ»Õ󣬱¾À´ÏëÓÃÓα꣬µ«ÊÇЧÂÊ¡£¡£ºóÀ´ÕÒµ½Ò»¶ÎSQL£¬¿ÉÒԺܷ½±ãµØÆ´½Ó¡£
DECLARE @STR VARCHAR(8000) ----¶¨Òå²éѯ×Ö·û´®
SELECT @STR=ISNULL(@STR+'+','')+t from (SELECT DISTINCT t from test)AS Temp ----Æ´½Ó²éѯ×Ö·û´®
SELECT @STR -----Ö´ÐÐ ......
Case¾ßÓÐÁ½ÖÖ¸ñʽ¡£¼òµ¥Caseº¯ÊýºÍCaseËÑË÷º¯Êý¡£
--¼òµ¥Caseº¯Êý
CASE sex
WHEN '1' THEN 'ÄÐ'
WHEN '2' THEN 'Å®'
ELSE 'ÆäËû' END
--CaseËÑË÷º¯Êý
CASE WHEN sex = '1' THEN 'ÄÐ'
WHEN sex = '2' THEN 'Å®'
ELSE 'ÆäËû' END
ÕâÁ½ÖÖ·½Ê½£¬¿ÉÒÔʵÏÖÏàͬµÄ¹¦ÄÜ¡£¼òµ¥Caseº¯ÊýµÄд·¨Ïà¶Ô±È½Ï¼ò½à£¬µ«ÊǺÍCaseËÑË÷º¯ÊýÏà±È£¬¹¦ÄÜ·½Ãæ»áÓÐЩÏÞÖÆ£¬±ÈÈçдÅжÏʽ¡£
»¹ÓÐÒ»¸öÐèҪעÒâµÄÎÊÌ⣬Caseº¯ÊýÖ»·µ»ØµÚÒ»¸ö·ûºÏÌõ¼þµÄÖµ£¬Ê£ÏµÄCase²¿·Ö½«»á±»×Ô¶¯ºöÂÔ¡£
--±ÈÈç˵£¬ÏÂÃæÕâ¶ÎSQL£¬ÄãÓÀÔ¶ÎÞ·¨µÃµ½“µÚ¶þÀà”Õâ¸ö½á¹û
CASE WHEN col_1 IN ( 'a', 'b') THEN 'µÚÒ»Àà'
WHEN col_1 IN ('a') THEN 'µÚ¶þÀà'
ELSE'ÆäËû' END
ÏÂÃæÎÒÃÇÀ´¿´Ò»Ï£¬Ê¹ÓÃCaseº¯Êý¶¼ÄÜ×öЩʲôÊÂÇé¡£
Ò»£¬ÒÑÖªÊý¾Ý°´ÕÕÁíÍâÒ»ÖÖ·½Ê½½øÐзÖ×飬·ÖÎö¡£
ÓÐÈçÏÂÊý¾Ý:(ΪÁË¿´µÃ¸üÇå³þ£¬ÎÒ²¢Ã»ÓÐʹÓùú¼Ò´úÂ룬¶øÊÇÖ±½ÓÓùú¼ÒÃû×÷ΪPrimary Key)
¹ú¼Ò£¨country£©
ÈË¿Ú£¨population£©
Öйú
600
ÃÀ¹ú
100
¼ÓÄôó
100
Ó¢¹ú
200
·¨¹ú
300
ÈÕ±¾
250
µÂ¹ú
200
Ä«Î÷¸ç
50
Ó¡¶È
250
¸ù¾ÝÕâ¸ö¹ú¼ÒÈË¿ÚÊý¾Ý£¬Í³¼ÆÑÇÖ޺ͱ ......
½ÓÉÏƪ
ËÄ£¬¸ù¾ÝÌõ¼þÓÐÑ¡ÔñµÄUPDATE¡£
Àý£¬ÓÐÈçϸüÐÂÌõ¼þ
¹¤×Ê5000ÒÔÉϵÄÖ°Ô±£¬¹¤×ʼõÉÙ10%
¹¤×ÊÔÚ2000µ½4600Ö®¼äµÄÖ°Ô±£¬¹¤×ÊÔö¼Ó15%
ºÜÈÝÒ׿¼ÂǵÄÊÇÑ¡ÔñÖ´ÐÐÁ½´ÎUPDATEÓï¾ä£¬ÈçÏÂËùʾ
--Ìõ¼þ1
UPDATE Personnel
SET salary = salary * 0.9
WHERE salary >= 5000;
--Ìõ¼þ2
UPDATE Personnel
SET salary = salary * 1.15
WHERE salary >= 2000 AND salary < 4600;
µ«ÊÇÊÂÇéûÓÐÏëÏóµÃÄÇô¼òµ¥£¬¼ÙÉèÓиöÈ˹¤×Ê5000¿é¡£Ê×ÏÈ£¬°´ÕÕÌõ¼þ1£¬¹¤×ʼõÉÙ10%£¬±ä³É¹¤×Ê4500¡£½ÓÏÂÀ´ÔËÐеڶþ¸öSQLʱºò£¬ÒòΪÕâ¸öÈ˵Ť×ÊÊÇ4500ÔÚ2000µ½4600µÄ·¶Î§Ö®ÄÚ£¬ ÐèÔö¼Ó15%£¬×îºóÕâ¸öÈ˵Ť×ʽá¹ûÊÇ5175,²»µ«Ã»ÓмõÉÙ£¬·´¶øÔö¼ÓÁË¡£Èç¹ûÒªÊÇ·´¹ýÀ´Ö´ÐУ¬ÄÇô¹¤×Ê4600µÄÈËÏà·´»á±ä³É¼õÉÙ¹¤×Ê¡£ÔÝÇÒ²»¹ÜÕâ¸ö¹æÕÂÊǶàô»Äµ®£¬Èç¹ûÏëÒªÒ»¸öSQL Óï¾äʵÏÖÕâ¸ö¹¦ÄܵĻ°£¬ÎÒÃÇÐèÒªÓõ½Caseº¯Êý¡£´úÂëÈçÏÂ:
UPDATE Personnel
SET salary = CASE WHEN salary >= 5000
¡¡ THEN salary * 0.9
WHEN salary >= 2000 AND salary < 4600
THEN salary * 1.15
ELSE salary END;
ÕâÀïҪעÒâÒ»µã£¬×îºóÒ»ÐеÄELSE salaryÊDZØÐèµÄ£¬ÒªÊÇûÓÐÕâÐУ¬²»·ûºÏÕâÁ½¸ ......
ת×Ôhttp://blog.csdn.net/ziren235/archive/2007/07/03/1676347.aspx
ÔÚSQL Server2000ÖУ¬Ò»¸öÊý¾Ý¿âµÄÈÕÖ¾ÊÇÒÔ*.ldf Îļþ´æ·Å,ÇëÎÊÎÒÏë²é¿´Ä³Ò»¸öÊý¾Ý¿âµÄÈÕÖ¾,¸ÃÈçºÎ²Ù×÷.
·½·¨1¡¢
DBCC LOG('DatabaseName',2)
·½·¨2:
select * from ::fn_dblog(default,default)
·½·¨3
ÓÃLog Explorer ......