MySQL 9.0 參考手冊  /  一般資訊  /  MySQL 標準相容性

1.7 MySQL 標準相容性

本節說明 MySQL 如何與 ANSI/ISO SQL 標準相關。MySQL 伺服器對 SQL 標準進行了許多擴充,您可以在這裡了解它們是什麼以及如何使用它們。您也可以找到有關 MySQL 伺服器中缺少的功能,以及如何解決一些差異的資訊。

自 1986 年以來,SQL 標準一直在發展,並且存在多個版本。在本手冊中,SQL-92指的是 1992 年發布的標準。SQL:1999SQL:2003SQL:2008SQL:2011指的是在相應年份發布的標準版本,其中最後一個版本是最新的版本。我們使用SQL 標準標準 SQL來表示任何時候 SQL 標準的目前版本。

我們產品的主要目標之一是繼續朝著符合 SQL 標準的方向努力,但不會犧牲速度或可靠性。如果這樣做可以大大提高 MySQL 伺服器對我們大部分用戶群的可用性,我們不害怕在 SQL 中新增擴充或支援非 SQL 功能。HANDLER介面就是此策略的一個例子。請參閱第 15.2.5 節,「HANDLER 陳述式」

我們繼續支援交易式和非交易式資料庫,以滿足關鍵任務 24/7 使用和繁重的 Web 或記錄使用。

MySQL 伺服器最初設計用於小型電腦系統上的中型資料庫(1000 萬到 1 億行,或每張表格約 100MB)。如今,MySQL 伺服器可以處理 TB 級的資料庫。

我們不以即時支援為目標,儘管 MySQL 複製功能提供了重要的功能。

MySQL 支援 ODBC 0 到 3.51 等級。

MySQL 使用NDBCLUSTER儲存引擎支援高可用性資料庫叢集。請參閱第 25 章,MySQL NDB 叢集 9.0

我們實作的 XML 功能支援 W3C XPath 標準的大部分內容。請參閱第 14.11 節,「XML 函式」

MySQL 支援由 RFC 7159 定義,且基於 ECMAScript 標準 (ECMA-262) 的原生 JSON 資料類型。請參閱第 13.5 節,「JSON 資料類型」。MySQL 還實作了 SQL:2016 標準預發布草案中指定的 SQL/JSON 函式子集;如需更多資訊,請參閱第 14.17 節,「JSON 函式」

選取 SQL 模式

MySQL 伺服器可以在不同的 SQL 模式下運作,並且可以根據sql_mode系統變數的值,針對不同的用戶端套用這些模式。DBA 可以設定全域 SQL 模式,以符合網站伺服器操作需求,並且每個應用程式都可以將其工作階段 SQL 模式設定為其自己的需求。

模式會影響 MySQL 支援的 SQL 語法以及它執行的資料驗證檢查。這使得在不同環境中使用 MySQL,以及將 MySQL 與其他資料庫伺服器一起使用變得更容易。

如需有關設定 SQL 模式的更多資訊,請參閱第 7.1.11 節,「伺服器 SQL 模式」

在 ANSI 模式下執行 MySQL

若要在 ANSI 模式下執行 MySQL 伺服器,請使用 --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 選項也會設定交易隔離層級。

請參閱第 7.1.7 節,「伺服器命令選項」