SQL ºÍOracle¶ÔÊý¾Ý¿âÊÂÎñ´¦ÀíµÄ²îÒìÐÔ
¼ò½é
¡¡¡¡±¾ÎĽ²ÊöMS SQL ServerºÍOracle¶ÔÊý¾Ý¿âÊÂÎñ´¦ÀíµÄ²îÒìÐÔ£¬ÒÔ¼°OracleÈçºÎ¶ÔÊÂÎñ´¦ÀíµÄʵÏÖ¡£
¡¡¡¡Ê²Ã´ÊÇÊÂÎñ
¡¡¡¡Êý¾Ý¿âÊÂÎñ(Database Transaction)ÊÇÒ»×éÊý¾Ý¿â²Ù×÷µÄ´¦Àíµ¥Ôª¡£ÊÂÎñ·ûºÏACIDµÄÌØÐÔ£º
¡¡¡¡Atomic:Ô×ÓÐÔ£¬ÒªÃ´È«²¿ÒªÃ´Ò»ÎÞËùÓС£All or None.
¡¡¡¡Consistent:Ò»ÖÂÐÔ£¬ËùÓÐÒÀÀµ¹ØϵÒÔ¼°Ô¼ÊøÒ»Ö¡£
¡¡¡¡Isolated:·ÖÀëÐÔ£¬²»Í¬ÊÂÎñ²»»¥ÏàÓ°Ïì¡£
¡¡¡¡Durable:³Ö¾ÃÐÔ£¬Ìá½»ÊÂÎñµÄÊý¾ÝÐèÒª³Ö¾Ã»¯¡£
¡¡¡¡ÎªÊ²Ã´ÒªÊ¹ÓÃÊÂÎñ
¡¡¡¡ÊµÏÖÊÂÎñÖ÷ÒªÓÐÁ½´ó¹¦ÄÜ£º
¡¡¡¡1.±£Ö¤Êý¾Ý¿âµÄconsistent(Ò»ÖÂÐÔ״̬)£¬±£³ÖËùÓÐÒÀÀµ¹ØϵÒÔ¼°Ô¼ÊøÒ»ÖÂ)¡£ÄÄÅÂÊý¾Ý¿â¹ÜÀíϵͳ³öÏÖ¹ÊÕÏʱ(ÀýÈç¶Ïµç)£¬Ò²Äָܻ´µ½Ò»ÖÂÐÔ״̬¡£ÀýÈçÒ»¸öÒøÐÐתÕÊϵͳ£¬ÕÅÈý¸øÀîËÄת3000Ô²RMB£¬ÕÅÈýÕʺÅÉϼõ3000ºÍÀîËÄÕʺÅÉϼÓ3000ÐèҪͬʱÍê³É£¬·ñÔòϵͳµÄÕʾͲ»Æ½ÁË¡£Ò²ÀýÈçÓÐЩÏúÊÛϵͳµÄ»ã×ܱíºÍÃ÷ϸ±í£¬ÊÇÒ»¸öÖ÷±íºÍÒ»¸ö´Ó±í£¬ÐèҪͬ²½¸üС£
¡¡¡¡2.²¢·¢Ê±·ÖÀ벻ͬÊÂÎñ²Ù×÷¡£ÀýÈç±à¼¹ý³ÌÖеÄÊý¾Ý²»¸øÆäËûÊÂÎñ²éѯµ½¡£ÕâÒ²ÊÇÏà¶ÔµÄ£¬ÔÚÌØЧÐèÇóÏ¿ÉÄÜÒªÖ§³Ödirty read(Ôà¶Á)£¬µ«²»ÊÇÕâÀïÌÖÂ۵ķ¶Î§ÁË¡£
¡¡¡¡SQL Server 2008 µÄÊÂÎñÀàÐÍ
¡¡¡¡1.×Ô¶¯Ìá½»ÊÂÎñ Autocommit Transactions
¡¡¡¡ÕâÊÇSQL ServerĬÈϵÄÊÂÎñÀàÐÍ£¬Ã¿Ò»Ìõµ¥¶ÀµÄSQLÓï¾ä(SQL statement)¶¼Êǵ¥¶ÀµÄÒ»¸öÊÂÎñ£¬Óï¾äÖ´ÐÐÍê±Ïºó×Ô¶¯Ìá½»¡£µ÷Ó÷½²»ÐèÒªÊÖ¹¤¿ØÖÆÊÂÎñÁ÷³Ì¡£
¡¡¡¡2.ÏÔʾÊÂÎñ Explicit Transactions
¡¡¡¡µ÷Ó÷½ÐèÒªµ÷ÓÃAPI»òÕßʹÓÃT-SQLµÄBEGIN TRANSACTION Óï¾äÀ´´ò¿ªÊÂÎñ¡£ÐèÒªµ÷ÓÃCOMMIT »òÕß ROLLBACK TRANSACTION À´Ìá½»»òÕ߻عö¡£
¡¡¡¡3.ÒþʽÊÂÎñ Implicit Transactions
¡¡¡¡Ê¹ÓÃSET IMPLICIT_TRANSACTIONS ON°ÑÊÂÎñģʽ±ä³ÉÒþʽģʽ¡£µ÷Ó÷½²»ÐèÒªÖ´ÐÐBEGIN TRANSACTION Óï¾äÀ´´ò¿ªÊÂÎñ¡£Êý¾Ý¿âÒýÇæÖ´Ðе½SQLÓï¾äµÄʱºò×Ô¶¯´ò¿ªÊÂÎñ¡£µ÷Ó÷½ÐèÒªµ÷ÓÃCOMMIT »òÕß ROLLBACK TRANSACTION À´Ìá½»»òÕ߻عö¡£µ±Êý¾Ý¿âÒýÇæÖ´ÐÐÏÂÒ»¸öSQLÓï¾äʱÓÖ×Ô¶¯´ò¿ªÒ»¸öÐÂÊÂÎñ¡£
OracleµÄÊÂÎñÀàÐÍ
¡¡¡¡OracleµÄÊÂÎñ´¦ÀíÀàÐÍÓеãÏñSQL ServerµÄÒþʽÊÂÎñ¡£µ±Ö´Ðе½µÚÒ»¸ö¿ÉÖ´ÐеÄSQLÓï¾äʱ×Ô¶¯´ò¿ªÊÂÎñ£¬È»ºóÐèÒªµ÷Ó÷½Ö´ÐÐcommit»òÕßrollbackÀ´Ìá½»»òÕ߻عöÊÂÎñ£¬Èç¹ûÓÐDDLÓï¾ä£¬OracleÒ²»á×Ô¶¯Ìá½»ÊÂÎñµÄ¡£
¡¡¡¡²Î¿¼:Transaction Management
¡¡¡¡OracleµÄÊÂÎñµÄʵÏÖ
¡¡¡¡OracleµÄ½á¹¹·ÖÂß¼ÉϺÍÎïÀíÉϵÄÇø±ð¡£Âß¼ÉϵĽṹÊDZí¿Õ¼ä£¬¶øÎïÀíÉϵĽṹÊÇ
Ïà¹ØÎĵµ£º
Oracleº¯ÊýºÍmysqlº¯Êý±È½Ï
1. OracleÖеÄto_number()ת»»³ÉÊý×Ö£»
Oracle> Select to_number(‘123’) from dual; ----- 123;
&nbs ......
MySQL Data Type
Oracle Data Type
BIGINT
NUMBER(19, 0)
BIT
RAW
BLOB
BLOB, RAW
CHAR
CHAR
DATE
DATE
DATETIME
DATE
DECIMAL
FLOAT (24)
DOUBLE
FLOAT (24)
DOUBLE PRECISION
FLOAT (24)
ENUM
VARCHAR2
FLOAT
FLOAT
INT
NUMBER(10, 0)
INTEGER
NUMBER(10, 0)
LONGBLOB
BLOB, RAW
LONGTEX ......
1 £¬¶ÔÓÚÈÕÆÚ×Ö¶Î×Ö¶Î
access±íʾΪ£º#1981-28-12#
SQLSERVER2000±íʾΪ£º''1981-02-12''
2,SQLÓï¾äÇø±ð£¬select ,update ÔÚ¶Ôµ¥±í²Ù×÷ʱ¶¼²î²»¶à£¬
µ«¶à±í²Ù×÷ʱupdateÓï¾äµÄÇø±ðACCESSÓëSQLSERVERÖеÄUpdateÓï¾ä¶Ô±È:
SQLSERVERÖиüжà±íµÄUpdateÓï¾ä:
Update Tab1
SET a.Name = b.Name
from Tab1 a,Tab2 b
Whe ......
1.´ò¿ªSQL server enterprise mananger “ÆóÒµ¹ÜÀíÆ÷”
ÔÚÄãÒªµ¼³öµÄSQLÊý¾Ý¿âÉÏÊó±êÓÒ¼ü²Ëµ¥£ºËùÓÐÈÎÎñ-¡·µ¼³öÊý¾Ý
2.»Ø³öÏÖÒ»¸öµ¼³öÏòµ¼´°¿Ú¡£
Ñ¡Ôñ±»µ¼³öµÄÊý¾ÝÔ´£¬ÎªÄã¸Õ²ÅËùÑ¡ÔñµÄÊý¾Ý¿â£¬Èç¹û·¢ÏÖ²»¶ÔÓ¦×ÔÐÐÐ޸ġ£
3.½øÈëµ¼³öµ½Ä¿±êÊý¾ÝÔ´µÄÑ¡Ôñ£¬ÕâÀïÎÒÃÇҪת³ÉACCESSµÄÊý¾Ý¿â¡£×¢ÒâÑ¡ÔñÊý¾ÝÔ´ÀàÐÍÎ ......
SQLServerºÍOracleµÄ³£Óú¯Êý¶Ô±È
¡¡¡¡1.¾ø¶ÔÖµ
¡¡¡¡S:select abs(-1) value
¡¡¡¡O:select abs(-1) value from dual
¡¡¡¡2.È¡Õû(´ó)
¡¡¡¡S:select ceiling(-1.001) value
¡¡¡¡O:select ceil(-1.001) value from dual
¡¡¡¡3.È¡Õû£¨Ð¡£©
¡¡¡¡S:select floor(-1.001) value
¡¡¡¡O:select floor(-1.001) valu ......