MySQL 8.4 Reference Manual  /  General Information  /  MySQL Standards Compliance

1.7 MySQL 标准合规性

本节描述了 MySQL 与 ANSI/ISO SQL 标准的关系。MySQL 服务器对 SQL 标准有许多扩展,在这里可以找到它们和如何使用它们。你也可以找到 MySQL 服务器缺少的功能,以及一些差异的解决方法。

SQL 标准自 1986 年以来不断演进,多个版本存在。在本手册中,SQL-92 指的是 1992 年发布的标准。SQL:1999SQL:2003SQL:2008SQL:2011 指的是相应年份发布的标准版本,最后一个是最新版本。我们使用短语 SQL 标准标准 SQL 指的是当前 SQL 标准的任何时间。

我们产品的主要目标是继续遵循SQL标准,但不牺牲速度或可靠性。我们不怕添加SQL扩展或非SQL功能,如果这大大增加MySQL Server对用户基础的大部分用户的可用性。HANDLER 接口是这个策略的示例。见第15.2.5节,“HANDLER语句”

我们继续支持事务性和非事务性数据库,以满足24/7关键任务使用和高负载Web或日志记录使用。

MySQL Server最初设计用于小型计算机系统上的中等大小数据库(10-100万行,或者约100MB每张表)。现在MySQL Server可以处理TB级别的数据库。

我们不目标实时支持,但是MySQL复制功能提供了很大的可用性。

MySQL支持ODBC 0到3.51等级。

MySQL支持高可用性数据库集群使用NDBCLUSTER存储引擎。见第25章,《MySQL NDB Cluster 8.4》

我们实现了XML功能,支持W3C XPath标准的大部分。见第14.11节,“XML函数”

MySQL 支持根据 RFC 7159 和 ECMAScript 标准(ECMA-262)定义的 native JSON 数据类型。见第13.5节,“JSON 数据类型”。MySQL 还实现了 SQL/JSON 函数的一部分,见第14.17节,“JSON 函数”,了解更多信息。

MySQL 服务器可以以不同的 SQL 模式运行,并且根据sql_mode 系统变量对不同客户端应用不同的模式。DBA 可以将全局 SQL 模式设置为匹配站点服务器操作要求,每个应用程序可以将会话 SQL 模式设置为其自己的要求。

模式影响 MySQL 支持的 SQL 语法和数据验证检查。这使得在不同环境中使用 MySQL 并与其他数据库服务器一起使用更加容易。

了解如何设置 SQL 模式,见第7.1.11节,“服务器 SQL 模式”

要在 ANSI 模式下运行 MySQL 服务器,使用mysqld 并指定--ansi 选项。以 ANSI 模式运行服务器等同于使用以下选项:

--transaction-isolation=SERIALIZABLE --sql-mode=ANSI

要在运行时达到相同的效果,执行这两个语句:

SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET GLOBAL sql_mode = 'ANSI';

您可以看到,将sql_mode系统变量设置为'ANSI'启用了所有与 ANSI 模式相关的 SQL 模式选项,例如:

mysql> SET GLOBAL sql_mode='ANSI';
mysql> SELECT @@GLOBAL.sql_mode;
        -> 'REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI'

使用--ansi启动服务器不完全等同于将 SQL 模式设置为'ANSI',因为--ansi选项还会设置事务隔离级别。

请参见第7.1.7节,“服务器命令选项”