Äê³õµÄʱºòÒ»Ö±ÔÚ×öÒ»¸öÍøÕ¾MSSQL2000->MySQL5µÄÇ¨ÒÆ¹¤×÷£¬ÒòΪ²ÉÓÃÁ˲»Í¬µÄ³ÌÐòϵͳ£¬ËùÒÔÖ÷ÒªÎÊÌâÔÚÊý¾ÝµÄÇ¨ÒÆ¡£ÓÉÓÚ2¸öϵͳÊý¾Ý¿â½á¹¹²îÒì·Ç³£´ó£¬²»·½±ã²ÉÈ¡SQLSERVERÀïµ¼ÈëMYSQLµÄODBCÊý¾ÝÔ´µÄ¹¦ÄÜ£¨Ò²²»ÍƼöÕâô×ö£¬×Ö¶ÎÀàÐ͵Ȳ»Í¬µã»á¸ãËÀÈ˵ġ«£©£¬Òò´Ë¾ÍÔÚWINDOWSÏÂ×Ô¼ºÐ´PHP½Å±¾´ÓSQLSERVERÀï¶ÁÊý¾Ý£¬È»ºó°´ÕÕÐÂϵͳµÄÐèÒª´¦ÀíÖ®ºó²åÈëMYSQLÀïÃæ£¬Áé»îÒ²±È½Ï·½±ã¡£Êµ¼Ê¹ý³ÌÖ÷ÒªÓÐÏÂÃæ¼¸¸öÎÊÌ⣺
1¡¢Êý¾Ý¿âµÄÁ¬½Ó£¬Ö÷ÒªÊÇÁ¬½ÓSQLSERVER¡£Ö÷ÒªÓÐ3ÖÖ·½·¨£º
1.1ÀûÓÃPHPÖеÄmssql_ϵÁк¯Êý£¬Õâ¸öÓëʹÓÃmysql_ϵÁк¯ÊýÀàËÆ£¬²»¹ýÒª´ò¿ªphp.iniÖÐÏà¹ØÀ©Õ¹£¨extension=php_mssql.dll£©¡£
1.2ÀûÓÃODBCÁ¬½Ó£¬ÓÉÓÚ³éÏóÁ˾ßÌåÊý¾Ý¿â£¬ËùÒÔûÓа취ÀûÓÃÊý¾Ý±í×Ö¶ÎÃû=>Êý×é¼üÃûµÄÌØÐÔ£¬ÔÚÕë¶Ô¾ßÌåÓ¦ÓÃʱ²»ÊǺܷ½±ã£¬´úÂëÐÎʽ£º
$conn=odbc_connect("datasource","username","password");
$sql="select*fromnews";
$cur=odbc_exec($conn,$sql);
while(odbc_fetch_row($cur)){
$field1=odbc_result($cur,1);
$field2=odbc_result($cur,2);
//dosomething
}
1.3ʹÓÃPDO-PHP5ÖмÓÈëÊý¾Ý¶ÔÏó³éÏó²ã£¬×÷Ϊ¹Ù·½ÍƳöµÄÊý¾Ý·ÃÎʽӿڣ¬ÓŵãÓкܶ࣬±ÈÈçÖ§³Ö²ÎÊý° ......
Äê³õµÄʱºòÒ»Ö±ÔÚ×öÒ»¸öÍøÕ¾MSSQL2000->MySQL5µÄÇ¨ÒÆ¹¤×÷£¬ÒòΪ²ÉÓÃÁ˲»Í¬µÄ³ÌÐòϵͳ£¬ËùÒÔÖ÷ÒªÎÊÌâÔÚÊý¾ÝµÄÇ¨ÒÆ¡£ÓÉÓÚ2¸öϵͳÊý¾Ý¿â½á¹¹²îÒì·Ç³£´ó£¬²»·½±ã²ÉÈ¡SQLSERVERÀïµ¼ÈëMYSQLµÄODBCÊý¾ÝÔ´µÄ¹¦ÄÜ£¨Ò²²»ÍƼöÕâô×ö£¬×Ö¶ÎÀàÐ͵Ȳ»Í¬µã»á¸ãËÀÈ˵ġ«£©£¬Òò´Ë¾ÍÔÚWINDOWSÏÂ×Ô¼ºÐ´PHP½Å±¾´ÓSQLSERVERÀï¶ÁÊý¾Ý£¬È»ºó°´ÕÕÐÂϵͳµÄÐèÒª´¦ÀíÖ®ºó²åÈëMYSQLÀïÃæ£¬Áé»îÒ²±È½Ï·½±ã¡£Êµ¼Ê¹ý³ÌÖ÷ÒªÓÐÏÂÃæ¼¸¸öÎÊÌ⣺
1¡¢Êý¾Ý¿âµÄÁ¬½Ó£¬Ö÷ÒªÊÇÁ¬½ÓSQLSERVER¡£Ö÷ÒªÓÐ3ÖÖ·½·¨£º
1.1ÀûÓÃPHPÖеÄmssql_ϵÁк¯Êý£¬Õâ¸öÓëʹÓÃmysql_ϵÁк¯ÊýÀàËÆ£¬²»¹ýÒª´ò¿ªphp.iniÖÐÏà¹ØÀ©Õ¹£¨extension=php_mssql.dll£©¡£
1.2ÀûÓÃODBCÁ¬½Ó£¬ÓÉÓÚ³éÏóÁ˾ßÌåÊý¾Ý¿â£¬ËùÒÔûÓа취ÀûÓÃÊý¾Ý±í×Ö¶ÎÃû=>Êý×é¼üÃûµÄÌØÐÔ£¬ÔÚÕë¶Ô¾ßÌåÓ¦ÓÃʱ²»ÊǺܷ½±ã£¬´úÂëÐÎʽ£º
$conn=odbc_connect("datasource","username","password");
$sql="select*fromnews";
$cur=odbc_exec($conn,$sql);
while(odbc_fetch_row($cur)){
$field1=odbc_result($cur,1);
$field2=odbc_result($cur,2);
//dosomething
}
1.3ʹÓÃPDO-PHP5ÖмÓÈëÊý¾Ý¶ÔÏó³éÏó²ã£¬×÷Ϊ¹Ù·½ÍƳöµÄÊý¾Ý·ÃÎʽӿڣ¬ÓŵãÓкܶ࣬±ÈÈçÖ§³Ö²ÎÊý° ......
Another Look at MySQL 5.1's SQL Diagnostic Tools
http://dev.mysql.com/tech-resources/articles/mysql_51_diagnostic_tools.html Êý¾Ý¿âµÄÐÔÄܾö¶¨ÒòËØ£º
£¨1£©Êý¾Ý¿âµÄÉè¼Æ
£¨2£©SQL´úÂë ¿ÉÒÔÓÃÒÔϼ¸ÖÖ·½·¨À´½â¾öһЩÐÔÄÜÎÊÌ⣺
£¨1£©Ë÷Òý
£¨2£©Ë®Æ½·ÖÇø
£¨3£©ÁÐÊÊÓ¦µÄ±í
column-oriented dbms£¨http://en.wikipedia.org/wiki/Column-oriented_DBMS#Implementations£©
Ò»°ã±íÊý¾ÝÎļþÊǰ´Ðд洢£¬È磺ijһ±í±»¶¨ÒåΪid,name,desc£¬Ôò°´Ðд洢Ϊ£º
1,name1,desc1;2,name2,desc2;¡
¶ø°´Áд洢Ϊ£º
1,2;name1,name2;desc1,desc2;¡ Êý¾Ý¿âÐÔÄÜ·ÖÎö·½·¨£º
Bottleneck analysis – what is my database, user community, and SQL code waiting on?
Workload analysis – who's logged on and what work are they performing?
Ratio analysis – what do rules-of-thumb statistics say about my performance? Ïà¹ØµÄ·ÖÎöÃüÁ
mysqlÈÕÖ¾·ÖÎöÂý²éѯÈÕÖ¾£¬Ò»°ãÈÕÖ¾£¬´íÎóÈÕÖ¾
ÈÕÖ¾¿ÉÒÔ´æÔÚ±íÖУ¬Ò²¿É´æÔÚÊý¾ÝÎļþÖÐ
Ö¸¶¨ÈÕÖ¾´æÔÚÄÄ£ºset global log_output='table ......
Another Look at MySQL 5.1's SQL Diagnostic Tools
http://dev.mysql.com/tech-resources/articles/mysql_51_diagnostic_tools.html Êý¾Ý¿âµÄÐÔÄܾö¶¨ÒòËØ£º
£¨1£©Êý¾Ý¿âµÄÉè¼Æ
£¨2£©SQL´úÂë ¿ÉÒÔÓÃÒÔϼ¸ÖÖ·½·¨À´½â¾öһЩÐÔÄÜÎÊÌ⣺
£¨1£©Ë÷Òý
£¨2£©Ë®Æ½·ÖÇø
£¨3£©ÁÐÊÊÓ¦µÄ±í
column-oriented dbms£¨http://en.wikipedia.org/wiki/Column-oriented_DBMS#Implementations£©
Ò»°ã±íÊý¾ÝÎļþÊǰ´Ðд洢£¬È磺ijһ±í±»¶¨ÒåΪid,name,desc£¬Ôò°´Ðд洢Ϊ£º
1,name1,desc1;2,name2,desc2;¡
¶ø°´Áд洢Ϊ£º
1,2;name1,name2;desc1,desc2;¡ Êý¾Ý¿âÐÔÄÜ·ÖÎö·½·¨£º
Bottleneck analysis – what is my database, user community, and SQL code waiting on?
Workload analysis – who's logged on and what work are they performing?
Ratio analysis – what do rules-of-thumb statistics say about my performance? Ïà¹ØµÄ·ÖÎöÃüÁ
mysqlÈÕÖ¾·ÖÎöÂý²éѯÈÕÖ¾£¬Ò»°ãÈÕÖ¾£¬´íÎóÈÕÖ¾
ÈÕÖ¾¿ÉÒÔ´æÔÚ±íÖУ¬Ò²¿É´æÔÚÊý¾ÝÎļþÖÐ
Ö¸¶¨ÈÕÖ¾´æÔÚÄÄ£ºset global log_output='table ......
ÔÚÈÕ³£µÄ¹¤×÷ÖУ¬±£»¤Êý¾ÝÃâÊÜδÊÚȨÓû§µÄÇÖ·¸ÊÇϵͳ¹ÜÀíÔ±ÌØ±ð¹ØÐĵÄÎÊÌâ¡£Èç¹ûÄãĿǰÓõÄÊÇMySQL£¬¾Í¿ÉÒÔʹÓÃһЩ·½±ãµÄ¹¦ÄÜÀ´±£»¤ÏµÍ³£¬À´´ó´ó¼õÉÙ»úÃÜÊý¾Ý±»Î´ÊÚȨÓû§·ÃÎʵķçÏÕ¡£
ÆóÒµ×îÓмÛÖµµÄ×ʲúͨ³£ÊÇÆäÊý¾Ý¿âÖеĿͻ§»ò²úÆ·ÐÅÏ¢¡£Òò´Ë£¬ÔÚÕâЩÆóÒµÖУ¬Êý¾Ý¿â¹ÜÀíµÄÒ»¸öÖØÒª²¿·Ö¾ÍÊDZ£»¤ÕâЩÊý¾ÝÃâÊÜÍⲿ¹¥»÷£¬¼°ÐÞ¸´Èí/Ó²¼þ¹ÊÕÏ¡£
ÔÚ´ó¶àÊýÇé¿öÏ£¬ÈíÓ²¼þ¹ÊÕÏͨ¹ýÊý¾Ý±¸·Ý»úÖÆÀ´´¦Àí¡£¶àÊýÊý¾Ý¿â¶¼×Ô´øÓÐÄÚÖõŤ¾ß×Ô¶¯Íê³ÉÕû¸ö¹ý³Ì£¬ËùÒÔÕâ·½ÃæµÄ¹¤×÷Ïà¶ÔÇáËÉ£¬Ò²²»»á³ö´í¡£µ«Â鷳ȴÀ´×ÔÁíÒ»Ãæ£º×èÖ¹ÍâÀ´ºÚ¿ÍÈëÇÖÇÔÈ¡»òÆÆ»µÊý¾Ý¿âÖеÄÐÅÏ¢¡£²»ÐÒµÄÊÇ£¬Ò»°ãûÓÐ×Ô¶¯¹¤¾ß½â¾öÕâÒ»ÎÊÌ⣻¶øÇÒ£¬ÕâÐèÒª¹ÜÀíÔ±ÊÖ¹¤ÉèÖÃÕϰÀ´×èÖ¹ºÚ¿Í£¬È·±£¹«Ë¾Êý¾ÝµÄ°²È«¡£
²»¶ÔÊý¾Ý¿â½øÐб£»¤µÄ³£¼ûÔÒòÊÇÓÉÓÚÕâÒ»¹¤×÷“Âé·³”¶ø“¸´ÔÓ”¡£ÕâȷʵÊÇÊÂʵ£¬µ«Èç¹ûÄãÓ¦ÓÃMySQL£¬¾Í¿ÉÒÔʹÓÃһЩ·½±ãµÄ¹¦ÄÜÀ´ÏÔ׿õÉÙÃæÁٵķçÏÕ¡£ÏÂÃæÁгöÁËÒÔϼ¸¸ö¹¦ÄÜ£º
¡ôɾ³ýÊÚȨ±íÖеÄͨÅä·û
MySQL·ÃÎÊ¿ØÖÆÏµÍ³Í¨¹ýһϵÁÐËùνµÄÊÚȨ±íÔËÐУ¬´Ó¶ø¶ÔÊý¾Ý¿â¡¢±í¸ñ»òÀ¸Ä¿¼¶±ðµÄÓû§·ÃÎÊȨÀû½øÐж¨Òå¡£µ«ÕâЩ±í¸ñÔÊÐí¹ÜÀíԱΪһÃûÓû§É趨һÀ¿×ÓÐí¿É£¬»òÒ»×éÓ¦ÓÃͨÅä·û ......
ÓÃÌØÊâµÄMySQLÔËËã·û»ñµÃ¸ü¶àÊý¾Ý±È½Ï¹¦ÄÜ
Èç¹ûÄãÔÚ×î½ü½øÐйýSELECT»òUPDATE²éѯ£¬ÄÇôÄãºÜ¿ÉÄÜÓõ½¹ýÒ»¸ö»òÕß¶à¸öMySQLµÄ±È½ÏÔËËã·ûÀ´ÏÞÖÆ²éѯµÄÊä³ö½á¹û¡£±È½ÏÊÇ´ó¶àÊýSELECT²éѯ²»¿É·Ö¸îµÄÒ»²¿·Ö£¬¶øMySQLΪÕâÒ»¹¦ÄÜÌṩÁ˺ܶຯÊý£»¸ù¾Ý×î½üÒ»´Îͳ¼Æ£¬ËüÓг¬¹ý20¸öÕâÑùµÄÔËËã·ûºÍº¯Êý£¬´ÓÖøÃûµÄ=ºÍLIKEµ½¸ü¼ÓÄѶ®µÄNOT INºÍSTRCMP()¡£
±¾ÎİÑÖØµã·ÅÔÚһЩ²»Ì«³£¼ûµÄMySQLÊý¾Ý±È½Ïº¯ÊýºÍÔËËã·ûÉÏ£¬ÌÖÂÛËüÃÇ¿ÉÒÔ±»ÈçºÎÔËÓÃÔÚÓ¦ÓóÌÐòÀï±È½Ï±í¸ñ×Ö¶ÎÀïµÄ×Ö·û´®¡¢Êý×ÖºÍÈÕÆÚ£¯Ê±¼ä»òÕßÓû§ÌṩµÄÖµ¡£
BETWEEN
BETWEENÔËËã·ûÊDzâÊÔÔÚij¸ö·¶Î§ÄÚÊÇ·ñ´æÔÚÒ»¸öÊýÖµ»òÕßÈÕÆÚÖµµÄÓÐÓ÷½Ê½¡£Õâ¸öÔËËã·û½ÓÊÜÁ½¸ö²ÎÊý——×î´óÖµºÍ×îСֵ£¬²¢²âÊÔËùÌṩµÄÖµÊÇ·ñÔÚÕâÁ½¸öÖµµÄ·¶Î§Ö®ÄÚ¡£Èç¹ûÔÚÕâ¸ö·¶Î§Ö®ÄÚ£¬ÔËËã·û¾Í·µ»ØÒ»¸ö²¼¶ûÖµ——Õæ£»·ñÔò£¬Ëü¾Í·µ»ØÒ»¸öαֵ¡£ÏÂÃæ¾ÍÊÇÒ»¸öÀý×Ó£º
mysql> SELECT 2350 BETWEEN 100 AND 10000;
+----------------------------+
&nbs ......
½ñÌìÔÚдһÌõsqlÓï¾äµÄʱºò£¬ÓõÄË«ÒýºÅ£¬sqlÓï¾äÖ´ÐдíÎ󡣼ǵÄͬÊÂÎÊÎÒmysqlÓï¾äÖеĵ¥ÒýºÅºÍË«ÒýºÅÓÐÇø±ðÂ𣿻شðÊÇûÓÐÇø±ð¡£
½ñÌìÌØµØ²éÁ˲飬»¹ÊÇÓеãÇø±ðµÄ¡£
mysqlÖеÄÒ»¶Î˵Ã÷£º
ÔÚmysqlÖУ¬Ê¹Óõ¥ÒýºÅºÍË«ÒýºÅÁ©ÖÖ±í´ï·½·¨ÊÇÒ»ÑùµÄ£¬¾¡¹ÜʹÓõ¥ÒýºÅµÄ±í´ï·½·¨·ûºÏANSI-SQL/92±ê×¼¡£
Èç¹ûÔÚ×Ö·û´®ÀïÓÐÒýºÅ£¬ÔòÒªÓÃÒÔϵIJ»Í¬·½Ê½À´±íʾ£º
"abc'abc" ¼´ abc'abc
"abc""abc" ¼´ abc“abc
"abc\'abc" ¼´ abc'abc
"abc\"abc" ¼´ abc"abc
'abc"abc' ¼´ abc"abc
'abc''abc' ¼´ abc'abc
'abc\"abc' ¼´ abc"abc
‘abc\'abc' ¼´ abc'abc
¿ÉÒÔ¿´³ö£¬¾¡Á¿»¹ÊÇʹÓõ¥ÒýºÅ¡£
µ±ÐÞ¸ÄÁËmysqlµÄsqlģʽµÄʱºò£¨set @@global.sql_mode£©µÄʱºò£¬Ñ¡Ôñ²»Í¬sqlģʽ£¬¿ÉÄÜ»á³öÏÖµ¥ÒýºÅºÍË«ÒýºÅµÄÇø±ð¡£ANSI-SQL±ê×¼¡£ ......
×î½ü£¬ÏîÄ¿ÖÐÓõ½mysql£¬ÓÉÓÚÊý¾ÝÁ¿·Ç³£´ó£¬Ã¿ÌìµÄÊý¾ÝÁ¿ÔÚ°ÙÍò¼¶£¬¿¼Âǵ½mysqlÊý¾Ý¿â´¦ÀíÐÔÄÜÒÔ¼°Êý¾ÝÊôÐÔ£¬¾ö¶¨±£´æ×ã¹»¶àµÄ²éѯÊý¾Ý¼´¿É£¬¾àµ±Ç°Ê±¼ä×î¾ÃÔ¶µÄÊý¾ÝÖ±½Óɾ³ý£¬ÎÞÐè½øÐб¸·Ý¡£
Í·ÄÔÖÐð³öµÄµÚÒ»¸öÏë·¨¾ÍÊÇ£¬ÄÜ·ñÀûÓÃmysqlÖеĴ¥·¢Æ÷£¬¼ì²éÊý¾Ý±í´óС£¬Èç¹û³¬¹ýÔ¤É賤¶È£¬Ôòɾ³ý²¿·ÖÊý¾Ý¡£
CREATE TRIGGER tg AFTER INSERT ON traffic_info
FOR EACH ROW BEGIN
...
DELETE from traffic_info WHERE time <= "..."
...
END;
Ö´Ðкó³öÏÖÈçÏ´íÎó£º
ERROR 1442 (HY000): Can't update table 'traffic_info' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
ÔÀ´£¬Ä¿Ç°MySQL´¥·¢Æ÷»¹²»Ö§³Öɾ³ý´¥·¢Æ÷ËùÔڵıíµÄÊý¾Ý£¬ok£¬ÎÒÔʼµÄÏë·¨ÊÇÿ¸öÊý¾Ý±í×Ô¼º¹ÜÀí±í´óС£¬ÏÖÔÚ¿´À´ÊÇÐв»Í¨ÁË¡£
µÚ¶þ¸öÏë·¨ÊǸɴàÓô洢¹ý³ÌµÃÁË£¬ÊÖ¶¯µ÷Óô洢¹ý³ÌÀ´¸üÐÂËùÓбíµÄ´óС£¬¿¼Âǵ½Êý¾Ý±íºÜ¶à£¬ÏëÐÒé¸ö½ÓÊÜÊý¾Ý±íÃûΪ²ÎÊýµÄ´æ´¢¹ý³Ì£º
CREATE PROCEDURE P(IN table_name VARCHAR(50)£¬ IN max_count INT)
READS SQL DATA
BEGIN
...
SELECT COUNT(1) from table_name
...
END;
ÕâÖ ......