MySQL和SQL Server之间的差异

ses*_*ker 143 mysql t-sql sql-server

我是一名ASP.NET开发人员,他已经用于Microsoft SQL Server满足我所有的数据库需求(无论是在工作中还是在个人项目中).

我正在考虑为我的一些个人项目试用LAMP堆栈.

MySQL和之间有哪些主要区别SQL Server?使用存储过程是一种常见的做法MySQL吗?

您建议的任何建议或资源可以帮助我切换?

对于那些对两者都有经验的人,是否有任何缺失的功能MySQL

Jef*_*ood 139

您必须注意的一件事是SQL Server和MySQL实现SQL语法的方式存在相当严重的差异.

是不同SQL实现的一个很好的比较.

例如,看一下top-n部分.在MySQL中:

SELECT age
FROM person
ORDER BY age ASC
LIMIT 1 OFFSET 2
Run Code Online (Sandbox Code Playgroud)

在SQL Server(T-SQL)中:

SELECT TOP 3 WITH TIES *
FROM person
ORDER BY age ASC
Run Code Online (Sandbox Code Playgroud)

  • 和oracle也不一样:select*from(选择年龄从人的顺序以前的asc)其中rownum <= 3回来ANSI SQL,一切都被原谅:) (27认同)
  • 也许是一个愚蠢的评论,但为什么不能有1个SQL语言?? ...有不同的HTML ?? ...所以为什么不1 sql. (20认同)
  • 刚遇到这个.阅读所有的差异让我感到畏缩.基础是相同的(至少在理解方面),但细节是非常非常不同的. (9认同)
  • @greaterKing HTML是一个委员会/联盟的集合结构和标准,SQL ..不是,它只是一种脚本语言,唯一的所有者是解释器的开发者.它有点像Javascript,每个浏览器都有自己的JS引擎和自己解释脚本的方式.只有来自社区的压力才能使这种语言得到某种团结的努力.但男人,我希望他们都非常相似,只有微小的差别 (4认同)
  • T-SQL转换为Transact-SQL;)Sql Server包含语言(T-SQL),但它是一个整体的软件,具有GUI,本地处理和通过网络处理请求等。 (2认同)

Rem*_*emy 47

这里的很多评论听起来更像宗教论点而不是现实生活中的陈述.我已经使用MySQL和MSSQL工作了多年,两者都是很好的产品.我主要根据您正在处理的环境选择MySQL.大多数开源项目都使用MySQL,因此如果您朝着这个方向前进,MySQL就是您的选择.如果你用.Net开发一些东西我会选择MSSQL,不是因为它好多了,而是因为这是大多数人使用的.我实际上目前正在使用ASP.NET与MySQL和C#的项目.它工作得很好.

  • 编程就是现在的缩略词.我们举一个例子来谈谈一个"Lamp Stack".很多人可能会说LAMP或WAMP.同样,我们不是说Microsoft SQL Server,而是将MS SQL Server变为MS SQL到MSSQL (5认同)
  • 严格来说,你不认为没有像MS SQL那样的东西.存在的东西是"MS SQL Server". (3认同)
  • 那是正确的.Microsoft SQL Server 2012或您使用的任何版本. (3认同)
  • 我不确定你在问什么? (2认同)

ely*_*ely 23

我无法相信没有人提到MySQL不支持Common Table Expressions(CTE)/"with"语句.这是一个非常烦人的差异.

  • 递归是需要提及的一个好处. (9认同)
  • @Jared使用CTE可以使代码保持可读性,因为您不需要定义临时表及其列类型,并且通过使用cte,您甚至可以获得列类型和名称的智能感知,即使您没有指定它们. (8认同)
  • Mysql 8支持CTE (2认同)

Jon*_*way 15

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

  • 很公平,但忽略基于Access的Microsoft数据库是愚蠢的.访问它是一个桌面数据库,与SQL Server无关.你知道StackOverflow在SQL Server上运行,对吗? (8认同)
  • myIsam 用于真正快速的响应,它没有强制外键检查更快。如果做一些更严肃的事情,请尝试使用 InnoDB 引擎。我在使用 MS Access 时遇到了一些非常讨厌的问题,不能原谅他们如此不负责任,所以我不偏爱 MS 的任何数据库,让他们做操作系统,并认真对待开源社区......虽然你不能自从甲骨文超越 MySQL 后,一切都确定了。 (2认同)

Abd*_*bdu 7

坦率地说,我找不到使用MySQL而不是MSSQL的单一理由.之前的问题是成本,但SQL Server 2005 Express是免费的,并且有很多网络托管公司提供完全托管sql server每月不到$ 5.00.

MSSQL更易于使用,并且具有MySQL中不存在的许多功能.

  • 我会说许可是使用MySQL的一个很好的理由. (21认同)
  • Group_concat和REGEXP是使用MySQL而不是SQL Server的充分理由(即使切换了两个许可证) (3认同)
  • 我认为价格是选择MySQL而不是MSSQL的唯一真正原因.当然,有一些廉价的MSSQL托管,但它很少见,而且往往严重限制存储. (2认同)
  • Downvoted,因为我认为这是有偏见的,显然不准确地说,没有一个理由可以使用MySQL而不是MSSQL.SQL Server Express有严重的限制,MySQL没有,并且没有严肃的项目将使用Express,这意味着成本问题仍然非常有效.大多数最大的公司选择MySQL/MariaDB而不是MSSQL.就个人而言,我也是,不仅仅是因为许可和成本问题,而且因为根据我的经验,MySQL更容易使用.MySQL往往只是工作,而我发现自己偶尔与MSSQL战斗,让它做我想做的事情. (2认同)

dkr*_*etz 7

MySQL中的所有内容似乎都比MSSQL更接近金属,而且文档以这种方式对待它.特别是对于优化,您需要了解索引,系统配置和优化器在各种情况下的交互方式.

"优化器"更像是一个解析器.在MSSQL中,您的查询计划通常是一个惊喜(通常是好的,有时不是).在MySQL中,它几乎完成了你要求它做的事情,就像你期望的那样.这意味着您自己需要深入了解可能采取的各种方式.

不是围绕一个好的TRANSACTION模型(默认的MyISAM引擎)构建的.

文件系统设置是你的问题.

所有数据库配置都是您的问题 - 尤其是各种缓存大小.

有时似乎最好将它视为一种特殊的,美化的isam.Codd和Date在这里没有多大意义.他们会说没有尴尬.

  • 现代MySQL默认为Innodb,只是澄清一点.我想5.1后左右.Innodb支持事务,外键和行级锁定,而不是使用MyISAM进行表级锁定. (3认同)

Jon*_*jap 5

我认为需要注意的一个主要问题是MySQL 5.0之前的版本没有视图,触发器和存储过程.

MySQL 5.0下载页面中解释了更多这方面的内容.


小智 5

两者都是 DBMS 的产品 Sql server 是一个商业应用程序,而 MySql 是一个 opensouces 应用程序。这两个产品都包含类似的功能,但是 sql server 应该用于企业解决方案,而 mysql 可能适合较小的实现。如果您需要像恢复这样的功能,复制,粒度安全且重要,你需要sql server

MySql 比 sql server 占用更少的磁盘空间,并且使用更少的内存和 cpu