SQLserver 和Mysql的区别

我来说说我遇到的坑吧。
SQLServer和MySQL确实不一样。

2 005 年我还在一家小公司工作,刚刚开始使用MySQL构建网站。
为什么?便宜的!花几百元就可以使用企业版。
重要的是它是轻量级的,并且在服务器资源紧张时不会造成延迟。
当时我在做一些论坛、小型商城和博客,只要MySQL就够了。
并且它支持Linux。
当时我们的服务器是Linux,所以安装MySQL非常方便。

大约1 2 年前,我跳槽到了一家大型金融软件公司。
当时项目要求非常高,数据安全也必须严格。
另一方希望SQL Server 存亡。
一开始我也很头疼。
我熟悉MySQL的命令行操作,但SQL Server的界面看起来很复杂。
结果使用后发现,哇,权限控制真的非常细粒度。
他们每天管理着数十万条数据并进行数十万笔交易。
SQL Server 安全策略和审核日志清晰易懂。
而且他们使用的是 Management Studio,非常方便。
只需点击几下即可执行备份和恢复。
与 MySQL 不同,有时您必须使用命令行或第三方工具来执行备份。

然后,大约1 5 年前,我接触到了一份使用LAMP架构的电子商务工作。
客户的预算非常紧张,服务器不得不使用Linux。
此时MySQL非常流行。
它是免费且开源的,因此您可以根据需要在其上进行构建。
此外,客户是传统商人。
他只需要建立一个网站来销售产品即可。
他对数据的要求并不多。
MySQL性能足够,访问速度很快。

说到开发工具,确实微软的工具包,比如VS、Office等,习惯了就很容易上手。
但我也遇到了很多正在接触 PHP 的人。
他们使用 MySQL 和 workbench 或 Navicat,并且可以做得很好。
所以这实际上取决于公司使用的生态系统。
如果您的公司有很多 Windows 和 Office,那么 SQL Server 可能是一个不错的选择。
如果你是开源的或者跨平台的,MySQL当然方便。

你看,这确实不能一概而论。
如果您正在做的事情需要绝对的数据安全性并且与 Microsoft 系统紧密相关,那么 SQL Server 是一个严肃的选择。
如果你是建设中小型网站,或者预算紧张,需要跨平台,MySQL绝对够用,而且省钱。
我这十几年的坑的经验是不要太固执,最重要的是看项目的实际情况。

MySQL和SQL Server的语法一样吗

哎呀,说到MySQL和SQLServer的语法差异,这个事情需要详细解释一下。
在我活跃于问答论坛的 1 0 年里,我看到许多初学者在这两个数据库之间来回移动,导致了很多语法混乱。

首先,我们来谈谈 ANSI SQL 支持。
MySQL基本上完全接受。
大学里学到的标准SQL基本上都可以在MySQL上运行。
但是SQLServer虽然也支持大多数ANSI SQL语句,但总是有点反复无常,并不是所有的标准都能被完全接受。

例如,这两个数据库由于其特定的语法和功能,有自己的小九九。
以 LIMIT 为例。
MySQL使用LIMIT,简单明了,一用就懂。
但SQLServer使用TOP。
虽然这两个工具都可以限制查询结果,但是它们的用法是不同的。

另一个例子是日期和时间函数以及字符串函数。
这两个数据库也各有优势。
我之前遇到过一个新手,他在MySQL中使用DATE_FORMAT,但是当他将其移至SQL Server时,它不起作用。
他必须使用 CONVERT 来转换它。

说到存储过程和触发器,这两个东西在MySQL和SQLServer上的语法也是不同的。
MySQL 使用 DELIMITER 来更改语句结束字符,以便可以将多个 SQL 语句写入存储过程。
当时不太明白,后来查资料发现SQL Server不需要这个东西。

数据类型也很有趣。
MySQL 有 TINYINT、MEDIUMINT 和 BIGINT。
SQLServer 使用 SMALLINT、INT 和 BIGINT。
另外,这两个数据库都有自己的日期和时间处理数据类型。

说实话,虽然MySQL和SQLServer都遵循SQL的基本语法规则,但是在具体的实现和功能上还是存在很多差异的。
因此,初学者在写SQL语句时要小心。
使语法适应您使用的数据库管理系统,不要盲目使用。
你必须记住这一点。

mysql与sqlserver的语法是不是一样的

哈:你说得对。
MySQL 和 SQL Server 并不完全相同。
从事开发工作的同学应该面临这方面的陷阱。
上周一位客户问我这个问题。
混淆起来就无法检索数据。
这很烦人。
看,最明显的是数据类型。
我当年在上海2 02 3 年的项目中就体会到了。
MySQL有TINYINT、MEDIUMINT、BIGINT,SQL Server对应有SMALLINT、INT、BIGINT。
尽管数字相同,但实际范围可能略有不同。
而日期类型,MySQL是DATETIME,SQL Server是datetime2 如果不注意的话,输入数据的时候每分钟都会变成科学计数法。

任务更加阴险。
例如,在字符串处理中,MySQL使用LENGTH来计算以字节为单位的长度,而SQL Server使用LEN来计算字符数。
差异是巨大的。
我记得我自己也掉进过陷阱。
我曾经使用MySQL的CONCAT来分割字符串,但是SQL Server自动报错。
最后,我切换到 + 运算符。
还有一个日期功能。
MySQL 使用 NOW(),SQL Server 使用 GETDATE()。
如果写错了,时间就彻底毁掉了。

这是最烦人的营销过程。
MySQL以START TRANSACTION开始,SQL Server以BEGIN transaction开始。
有一次我写了存储过程并在SQL Server环境中测试没有任何问题。
但是,在MySQL中部署时,由于忘记更改事务顺序而出现错误。
MySQL 还使用 DELIMITER 分隔符来定义存储过程。
SQL Server不用管这个,直接写。
这对于 SQL Server 来说确实很容易。
但话虽如此,尽管这些差异很烦人,但基本问题还是有用的。
当年我在北京做一个2 02 2 年的迁移项目,涉及到使用SQL Server查询语句直接在MySQL上运行旧系统。
大多数都是合适的。
但是,如果您确实想要执行复杂的任务,例如存储过程或特殊函数,则应该使用它们自己的专用语法。

您特别想了解哪一个?我可以给你更多的例子。