MySql 中文参考指南
1.7 MySQL Standards Compliance
本节描述了 MySQL 如何与 ANSI/ISO SQL 标准相关。MySQL Server 对 SQL 标准进行了许多扩展,您可以在此处了解它们是什么以及如何使用它们。您还可以找到有关 MySQL Server 缺少的功能的信息,以及如何解决一些差异。
自 1986 年以来,SQL 标准一直在不断发展,并且存在多个版本。在本手册中,“SQL-92”指 1992 年发布的标准。“SQL:1999”、“SQL:2003”、“SQL:2008”和“SQL:2011”指相应年份发布的标准版本,其中最后一个是最新版本。我们使用“SQL 标准”或“标准 SQL”一词表示任何时候 SQL 标准的当前版本。
该产品的我们的主要目标之一是继续致力于遵循 SQL 标准,但不会牺牲速度或可靠性。如果这对我们的大量用户群体极大地提高了 MySQL Server 的可用性,我们不害怕向 SQL 添加扩展功能或支持非 SQL 功能。 HANDLER 接口是这一策略的一个示例。参见 Section 15.2.5, “HANDLER Statement” 。
我们继续支持事务和非事务数据库,以满足 24/7 的关键任务使用和繁重的 Web 或日志使用。
MySQL 服务器最初设计用于小型计算机系统上的中型数据库(1000-1 亿行,或每个表约 100MB)。现在,MySQL 服务器能处理 TB 级的数据库。
我们没有定位实时支持,虽然 MySQL 复制功能提供了重要的功能。
MySQL 支持 ODBC 级别 0 到 3.51。
MySQL 使用 NDBCLUSTER 存储引擎支持高可用性数据库集群。参见 Chapter 25, MySQL NDB Cluster 9.0 。
我们实现了支持 W3C XPath 标准的大多数内容的 XML 功能。参见 Section 14.11, “XML Functions”。
MySQL 支持 RFC 7159 定义的基于 ECMAScript 标准 (ECMA-262) 的原生 JSON 数据类型。参见 Section 13.5, “The JSON Data Type”。MySQL 还实现了 SQL:2016 标准预发布草案中指定的一部分 SQL/JSON 函数;有关更多信息,请参见 Section 14.17, “JSON Functions”。
Selecting SQL Modes
MySQL 服务器可以在不同的 SQL 模式下操作,并且可以根据 sql_mode 系统变量的值针对不同的客户端分别应用这些模式。DBA 可以设置全局 SQL 模式以匹配网站服务器的操作要求,并且每个应用程序都可以将其会话 SQL 模式设置为自己要求。
模式影响 MySQL 支持的 SQL 语法和它执行的数据验证检查。这使在不同环境中使用 MySQL 和将 MySQL 与其他数据库服务器一起使用变得更加容易。
有关设置 SQL 模式的更多信息,请参见 Section 7.1.11, “Server SQL Modes”。
Running MySQL in ANSI Mode
--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'