需要注意的一件事是SQL Server和MySQL实现SQL语法的方式存在相当严重的差异。
这里有一个不错的不同SQL实现的比较。
例如,看一下top-n部分。在MySQL中:
SELECT age
FROM person
ORDER BY age ASC
LIMIT 1 OFFSET 2
在 SQL Server(T-SQL)中:
SELECT TOP 3 WITH TIES *
FROM person
ORDER BY age ASC
这里的许多评论听起来更像是宗教争论而不是现实生活陈述。我曾与MySQL和MSSQL一起工作多年,两者都是优秀的产品。我会根据你所工作的环境选择MySQL。大多数开源项目使用MySQL,因此如果您选择该方向,则应选择MySQL。如果您使用.Net开发某些东西,我会选择MSSQL,不是因为它更好,而是因为大多数人使用它。我目前正在一个使用ASP.NET、MySQL和C#的项目上工作,它运行得很好。
我无法相信没有人提到 MySQL 不支持通用表达式 (CTE) / "with" 语句。这是一个相当令人烦恼的区别。
MySQL更容易出现数据库损坏问题,并且当发生这些问题时,它不会自动修复。我从6.5版本开始就一直使用MSSQL,并且不记得有过什么数据库损坏使数据库离线的情况。在生产环境中遇到MySQL数据库损坏问题的几次经历中,整个数据库都要下线,直到我们在命令行运行了神奇的“请修复我的损坏索引”命令。
根据我的经验,MSSQL的事务和日志系统几乎可以处理任何问题,包括电源故障或硬件故障,而无需发生数据库损坏,如果出现问题,它会自动修复。
这是我的经验,如果这种情况已经被修复或者我们做错了什么,我很乐意听取反馈。
http://dev.mysql.com/doc/refman/6.0/en/corrupted-myisam-tables.html
http://www.google.com/search?q=site%3Abugs.mysql.com+index+corruption
坦白地说,我找不到一个使用MySQL而不是MSSQL的理由。以前的问题曾经是成本,但SQL Server 2005 Express是免费的,有很多网页托管公司提供完整的托管服务并且价格低于每月$5.00。
MSSQL更易于使用,并且具有许多MySQL中不存在的功能。
两者都是数据库管理系统产品,Sql Server 是商业应用程序,而 MySql 是开源应用程序。两个产品包含类似的功能,但是 Sql Server 应该用于企业解决方案,而 MySql 可能适合较小的实现。如果您需要恢复、复制、粒度安全和重要功能等功能,则需要 Sql Server。
MySql 占用磁盘空间较少,并且使用的内存和 CPU 也比 Sql Server 少。
@abdu
我发现MySQL相对于MSSQL的主要优势在于它支持时区 - 能够很好地在不同的时区之间切换,并且能够尊重夏令时,这非常棒。
对比一下:
mysql> SELECT CONVERT_TZ('2008-04-01 12:00:00', 'UTC', 'America/Los_Angeles');
+-----------------------------------------------------------------+
| CONVERT_TZ('2008-04-01 12:00:00', 'UTC', 'America/Los_Angeles') |
+-----------------------------------------------------------------+
| 2008-04-01 05:00:00 |
+-----------------------------------------------------------------+
请参考这个答案,以解决在IT技术中涉及的扭曲问题。
至于“更易使用”的评论,我认为重点是它们是不同的,如果你了解其中一个,学习另一个将会有一定的开销。
T-SQL
相关?T 代表什么意思? - Kellen Stuart