1.7 MySQL标准合规性
本节将介绍MySQL如何与ANSI / ISO SQL标准相关。MySQL Server对SQL标准有很多扩展,在这里你可以找到它们是什么,以及如何使用它们。您还可以找到有关MySQL Server缺少的功能的信息,以及如何解决一些差异。
自1986年以来,SQL标准一直在发展,并且存在多个版本。在本手册中, “SQL-92”指的是在1992年发布的标准, “SQL:1999”指的是在1999年发布的标准, “SQL:2003”指的是在2003年发布的标准,和“SQL:2008”指到2008年发布的最新版本的标准。我们在任何时候使用短语“SQL标准”或“标准SQL”来表示当前版本的SQL标准。
该产品的主要目标之一是继续努力遵守SQL标准,但不会牺牲速度或可靠性。如果这大大增加了MySQL Server对我们用户群体的大部分的可用性,我们不用担心添加对SQL的扩展或支持非SQL功能。该HANDLER
界面是此策略的示例。请参见第13.2.4节“手动语法”。
我们继续支持交易和非事务性数据库,以满足任务关键的24/7全天候使用和大量Web或日志记录的使用。
MySQL Server最初设计用于在小型计算机系统上使用中型数据库(每台1000万行,约100MB)。今天,MySQL服务器处理数TB大小的数据库,但代码也可以以适合于手持和嵌入式设备的简化版本进行编译。MySQL服务器的紧凑设计使得两个方向的开发成为可能,而源树中却没有任何冲突。
我们不是针对实时支持,尽管MySQL复制功能提供了重要的功能。
MySQL支持ODBC级别0到3.51。
MySQL支持使用NDBCLUSTER
存储引擎的高可用性数据库集群。请参见第18章,MySQL NDB Cluster 7.3和NDB Cluster 7.4。
我们实现了支持大多数W3C XPath标准的XML功能。请参见第12.11节“XML函数”。
选择SQL模式
MySQL服务器可以在不同的SQL模式下运行,并且可以根据sql_mode
系统变量的值对不同的客户端应用这些模式。DBA可以设置全局SQL模式以匹配站点服务器操作需求,并且每个应用程序可以将其会话SQL模式设置为自己的要求。
模式影响MySQL支持的SQL语法以及它执行的数据验证检查。这使得在不同环境中使用MySQL更容易,并与其他数据库服务器一起使用MySQL。
有关设置SQL模式的更多信息,请参见第5.1.8节“服务器SQL模式”。
以ANSI模式运行MySQL
要以ANSI模式运行MySQL服务器,请使用该选项启动mysqld--ansi
。以ANSI模式运行服务器与使用以下选项一起启动:
--transaction-isolation = SERIALIZABLE --sql-mode = ANSI
要在运行时实现相同的效果,请执行以下两个语句:
全球交易隔离级别可串行;
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
选项还会设置事务隔离级别。
请参见第5.1.4节“服务器命令选项”。