MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  MySQL 8.0 のよくある質問  /  MySQL 8.0 FAQ: サーバー SQL モード

A.3 MySQL 8.0 FAQ: サーバー SQL モード

A.3.1. サーバー SQL モードとは何ですか。
A.3.2. サーバー SQL モードはいくつありますか。
A.3.3. サーバー SQL モードを判別するにはどうすればよいですか。
A.3.4. モードはデータベースまたは接続に依存していますか。
A.3.5. 厳密モードにルールを追加できますか。
A.3.6. 厳密モードはパフォーマンスに影響しますか。
A.3.7. MySQL 8.0 をインストールしたときのデフォルトのサーバー SQL モードは何ですか。

A.3.1.

サーバー SQL モードとは何ですか。

サーバー SQL モードは、MySQL でサポートされる SQL 構文、および実行されるデータ妥当性チェックの種類を定義します。 これにより、MySQL をさまざまな環境で使用したり、MySQL をほかのデータベースサーバーと一緒に使用したりすることが、さらに容易になります。 MySQL サーバーは、これらのモードを各クライアントに個別に適用します。 詳細は、セクション5.1.11「サーバー SQL モード」を参照してください。

A.3.2.

サーバー SQL モードはいくつありますか。

各モードは、個別にオン/オフを切り替えることができます。 使用可能なモードの完全なリストについては、セクション5.1.11「サーバー SQL モード」を参照してください。

A.3.3.

サーバー SQL モードを判別するにはどうすればよいですか。

--sql-mode オプションを使用すると、デフォルトの SQL モード (mysqld を起動する場合) を設定できます。 SET [GLOBAL|SESSION] sql_mode='modes' ステートメントを使用すると、ローカルに接続に対して、またはグローバルに適用されるように、接続内から設定を変更できます。 現在のモードを取得するには、SELECT @@sql_mode ステートメントを発行します。

A.3.4.

モードはデータベースまたは接続に依存していますか。

モードは特定のデータベースにリンクされていません。 モードは、ローカルにセッション (接続) に対して設定するか、グローバルにサーバーに対して設定できます。これらの設定は、SET [GLOBAL|SESSION] sql_mode='modes' を使用して変更できます。

A.3.5.

厳密モードにルールを追加できますか。

厳密モードと呼ぶ場合は、TRADITIONALSTRICT_TRANS_TABLES、または STRICT_ALL_TABLES モードの少なくとも 1 つが有効にされているモードを意味します。 オプションは組み合わせることができるため、モードに制約を追加できます。 詳細は、セクション5.1.11「サーバー SQL モード」を参照してください。

A.3.6.

厳密モードはパフォーマンスに影響しますか。

一部の設定での入力データの厳密な検証では、検証を行わない場合より時間がかかります。 パフォーマンスへの影響はそれほど大きくありませんが、そのような検証が必要ない場合 (アプリケーションでそのすべてをすでに処理している場合)、MySQL には厳密モードを無効にするオプションがあります。 ただし、必要な場合は、厳密モードでこのような検証を行うことができます。

A.3.7.

MySQL 8.0 をインストールしたときのデフォルトのサーバー SQL モードは何ですか。

MySQL 8.0 のデフォルトの SQL モードには、次のモードが含まれます: ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO および NO_ENGINE_SUBSTITUTION

使用可能なすべてのモードおよびデフォルトの MySQL 動作の詳細は、セクション5.1.11「サーバー SQL モード」 を参照してください。


関連キーワード:  モード, サーバー, 設定, InnoDB, 接続, パフォーマンス, データベース, セクション, 参照, mode