MySQLのSQLモードの特徴のまとめ

MySQLのSQLモードの特徴のまとめ

序文

SQL モードは、MySQL がサポートする SQL 構文と、実行されるデータ検証チェックに影響します。

MySQL サーバーはさまざまな SQL モードで動作し、sql_mode システム変数の値に応じて、クライアントごとに異なるモードを適用できます。 DBA は、サイト サーバーの動作要件に合わせてグローバル SQL モードを設定でき、各アプリケーションは独自の要件に合わせてセッション SQL モードを設定できます。

モードは、MySQL がサポートする SQL 構文と、実行されるデータ検証チェックに影響します。これにより、さまざまな環境で MySQL を使用したり、他のデータベース サーバーで MySQL を使用したりすることが容易になります。

詳しい紹介を見てみましょう。

SQL モードの設定

実行時に SQL モードを変更するには、SET ステートメントを使用してグローバルまたはセッションの sql_mode システム変数を設定します。

グローバル sql_mode を 'modes' に設定します。
SET SESSION sql_mode = 'modes';

モードリスト

モデル注記
無効な日付を許可する無効な日付はエラーを生成します
ゼロ除算エラー0による除算エラー
バックスラッシュなし文字列リテラルでは、バックスラッシュ文字 (\) はエスケープ文字として使用できません。このモードを有効にすると、バックスラッシュは他の通常の文字と同じように動作します。
符号なし減算なし整数値(そのうちの 1 つは UNSIGNED 型)間の減算では、デフォルトで符号なしの結果が生成されます。結果が負の場合、エラーが発生します
日付にゼロがない'0000-00-00' は許可されており、挿入すると警告が表示されます
完全グループ化のみ選択で指定されたフィールドは groupby に出現する必要があります。そうでない場合はエラーが発生します。
STRICT_TRANS_TABLESトランザクション ストレージ エンジン、および可能な場合は非トランザクション ストレージ エンジンに対して厳密な SQL モードを有効にします。
STRICT_ALL_TABLESすべてのストレージ エンジンに対して厳密な SQL モードを有効にします。無効なデータ値は拒否されます。

詳細については、https://dev.mysql.com/doc/ref... を参照してください。

厳密なSQLモード

MySQL サーバーはさまざまな SQL モードで動作し、sql_mode システム変数の値に応じて、クライアントごとに異なるモードを適用できます。厳密な SQL モードでは、サーバーは特定の警告をエラーにアップグレードします。

厳密なSQLモードは次のステートメントに適用されます

  • テーブルの変更
  • テーブルの作成
  • テーブルを作成...選択
  • 消去
  • 入れる
  • データをロード
  • XMLをロード
  • スリープ()を選択
  • アップデート

ストアド プロシージャ内で、厳密モードが有効な間にプロシージャが定義された場合、リストされたタイプの単一のステートメントが厳密な SQL モードで実行されます。

厳密な SQL モードは、入力値が無効であるか欠落しているエラーのクラスを表す次のエラーに適用されます。列のデータ型が間違っている場合、または範囲外である可能性がある場合、値は無効です。挿入される新しい行に、定義内に NOT NULL である明示的な DEFAULT 句がない列の値が含まれていない場合、その値は欠落します。

  • ER_BAD_NULL_エラー
  • ER_CUT_VALUE_GROUP_CONCAT
  • ER_DATA_TOO_LONG
  • ER_DATETIME_FUNCTION_オーバーフロー
  • ゼロによる除算
  • ER_INVALID_ARGUMENT_FOR_LOGARITHM
  • ER_NO_DEFAULT_FOR_FIELD
  • ER_NO_DEFAULT_FOR_VIEW_FIELD
  • ER_TOO_LONG_KEY
  • ER_切り捨てられた間違った値
  • ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
  • ER_WARN_データ範囲外
  • ER_WARN_NULL_TO_NOTNULL
  • ER_WARN_レコード数が少なすぎる
  • ER_間違った引数
  • ER_間違った値
  • 警告_データ_切り捨て

謝辞

読んでいただきありがとうございます。この記事がお役に立てれば幸いです。ありがとうございます。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • MySQLで厳密モードを有効にする方法
  • SQL ステートメントを学習する (強力なグループ化と選択モード)
  • MYSQLパターンマッチングREGEXPの使用に関する一般的な話など
  • Mysql SQL Server モードの紹介
  • シングルトンモードに基づく PHP mysql クラス
  • NoSQL アンチパターン - ドキュメント データベース
  • MySQL の binlog_format モードと設定の詳細な分析
  • MySQL が名前解決スキップモードを有効にしたときに警告が発生する場合の対処方法

<<:  docker-compsoe を使用してフロントエンドとバックエンドを分離したプロジェクトをデプロイする方法

>>:  JSを使用して画像を効果的に圧縮する方法

推薦する

Dockerのクイックガイド

Docker は、安全で繰り返し可能な環境でソフトウェアを自動的にデプロイする方法を提供し、コンピュ...

Linux での MySQL 5.7.19 のインストールに関する問題の概要

初めて仮想マシンに MySQL をインストールしたとき、多くの問題が発生しました。ここでそれらを書き...

Linux プログラムの実行中に動的ライブラリをロードできない場合の解決策

Linux でダイナミック ライブラリをロードできません次のような異常事態が発生した場合./test...

ウェブページの HTML コード: スクロールテキストの作成

このセクションでは、Web ページ内のテキストをスクロールしたり、スクロール プロパティを制御できる...

異なるインデックスを更新してMySQLのデッドロックルーチンを解決する

前回の記事では、ソース コードを使用してロック関連の情報をデバッグする方法を紹介しました。ここでは、...

ノードスクリプトで自動サインインと抽選機能を実現

目次1. はじめに2. 準備3. スクリプトプロジェクトの構築4. コードの作成と実行5. まとめと...

CentOS の環境変数と設定ファイルの詳細な説明

序文CentOS 環境変数設定ファイル システムは階層型システムであり、他のマルチユーザー アプリケ...

Tomcat が localhost に通常アクセスすると 404 を報告する問題の解決方法

今日、プロジェクトのホームページにアクセスするために Tomcat を設定していたところ、404 エ...

MySQL における悲観的ロックと楽観的ロック

リレーショナル データベースでは、悲観的ロックと楽観的ロックがリソース同時実行シナリオのソリューショ...

Jupyter Notebook で JavaScript を実行する方法

その後、VSC で Jupyter Notebook を使用する方法も追加しました...アナコンダを...

Vue での親子コンポーネント通信と、sync を使用して親子コンポーネント データを同期する

目次序文子コンポーネントは親コンポーネントにデータを渡す1. 親コンポーネントから子コンポーネントに...

Docker Alpine イメージのタイムゾーン問題に対する完璧な解決策

最近、Docker を使用して Java アプリケーションをデプロイしていたときに、タイムゾーンが間...

Vueアイコンセレクターのサンプルコード

出典: http://www.ruoyi.vip/ 'vue' から Vue をイン...

JS の toFixed() メソッドの丸め精度の問題の詳細な説明

目次落とし穴充填方法何の穴ですか?要約する落とし穴最近、仕事で商品の割引価格を計算すると、いつも1セ...

Windows での mysql-5.7.28 のダウンロード、インストール、および構成に関する詳細なグラフィックとテキストのチュートリアル

最近MySQLデータベースのバージョンを変更する必要があり、それを記録するために記事を書きます1. ...