1.8 MySQL 标准符合性

本节介绍 MySQL 与 ANSI/ISO SQL 标准的关系。 MySQL Server 对 SQL 标准有许多扩展,在这里您可以找到它们的含义以及如何使用它们。您还可以找到有关 MySQL Server 缺少的功能以及如何解决某些差异的信息。

自 1986 年以来,SQL 标准一直在 Developing,并且存在多个版本。在本手册中,“ SQL-92”是指 1992 年发布的标准。“ SQL:1999”,“ SQL:2003”,“ SQL:2008”和“ SQL:2011”是指在 2002 年发布的标准的版本。相应的年份,最后一个是最新版本。我们在任何时候都使用短语“ SQL 标准”或“标准 SQL”来 table 示 SQL 标准的当前版本。

我们对该产品的主要目标之一是 continue 努力使其符合 SQL 标准,但又不牺牲速度或可靠性。如果这大大增加了 MySQL 服务器在我们大部分用户群中的可用性,则我们不怕添加 SQL 扩展或对非 SQL 功能的支持。 HANDLER界面是此策略的一个示例。参见第 13.2.4 节“ HANDLER 语句”

我们将 continue 支持事务性和非事务性数据库,以满足关键任务 24/7 的使用和繁重的 Web 或日志记录的使用。

MySQL Server 最初旨在与小型计算机系统上的中型数据库(10-100 百万行,或每个 table 约 100MB)一起使用。如今,MySQL 服务器可以处理 TB 级的数据库,但是也可以将其代码压缩为适合手持式和嵌入式设备的简化版本。 MySQL 服务器的紧凑设计使双向开发成为可能,而在源代码树中没有任何冲突。

尽管 MySQL 复制功能提供了重要的功能,但我们的目标不是实时支持。

MySQL 支持 ODBC 级别 0 到 3.51.

MySQL 使用NDBCLUSTER存储引擎支持高可用性数据库集群。参见第 21 章,MySQL NDB 群集 7.5 和 NDB 群集 7.6

我们实现了支持大多数 W3C XPath 标准的 XML 功能。参见第 12.11 节“ XML 函数”

MySQL(5.7.8 及更高版本)支持 RFC 7159 定义并基于 ECMAScript 标准(ECMA-262)的本地 JSON 数据类型。参见第 11.5 节“ JSON 数据类型”。 MySQL 还实现了 SQL:2016 标准的预发布草案指定的 SQL/JSON 函数的子集;有关更多信息,请参见第 12.17 节“ JSON 函数”

选择 SQL 模式

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

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

有关设置 SQL 模式的更多信息,请参见第 5.1.10 节“服务器 SQL 模式”

以 ANSI 模式运行 MySQL

要以 ANSI 模式运行 MySQL Server,请使用--ansi选项启动mysqld。以 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以 ANSI 模式运行服务器与将 SQL 模式设置为'ANSI'并不完全相同,因为--ansi选项还可以设置事务隔离级别。

See 第 5.1.6 节“服务器命令选项”.