SQL查询是否受使用的DBMS限制?

时间:2018-07-08 09:59:31

标签: mysql sql database postgresql rdbms

我最近读过一些文章,试图初步了解SQL和MySQL之间的区别,并且我从另一篇"Basically, MySQL is one of many books holding everything, and SQL is how you go about reading that book."的文章中得到了有用的报价。

取决于所使用的后端,即MySQL与PostgreSQL。 SQL查询突然无法生效吗?

关系型DBMS与非关系型DBMS

2 个答案:

答案 0 :(得分:3)

每个数据库都实现自己的SQL语言方言。这些方言可以以简单方式和基本方式变化。例如:

  • 函数可能具有不同的名称(例如len()length())。
  • 数据库可能未实现某些功能(例如row_number())。
  • 数据库可能不支持通用表表达式。
  • 数据库可能不支持某些功能,例如full outer join

该列表还在继续。您应该将SQL视为一堆方言。它们彼此之间有很大的重叠,但是却有差异-就像世界各地说的英语方言一样。

答案 1 :(得分:2)

是的,方言可能会有所不同。

有两个原因:

  1. ISO SQL标准不需要实现其定义的所有功能。 SQL标准中定义为optional features的大多数功能。

  2. 某些数据库甚至没有实现强制性功能,也没有为SQL标准预见另一种解决方案(可能是针对供应商锁定)的功能提供自己的语法。

我正在运营一个网站,旨在向这个丛林敞开大门:https://modern-sql.com/

例如,VALUES子句是SQL-92中已经存在的最基本的功能之一(但仍然是可选功能)。您可以在此处查看如何(不)支持它:

但是,我希望情况会越来越好。例如。 MariaDB(我的网站上尚未提及)介绍了VALUES clause in the recent release 10.3