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を使用して画像を効果的に圧縮する方法

推薦する

MySQL 時間差関数 (TIMESTAMPDIFF、DATEDIFF)、日付変換計算関数 (date_add、day、date_format、str_to_date)

1. 時間差関数(TIMESTAMPDIFF、DATEDIFF) MySQLを使用して時間差を計算...

Windows (x86、64 ビット) で MySQL 5.7.17 無料インストール バージョンをアップグレードするための詳細なチュートリアル

Laravel 5.4 のデフォルトの utf8mb64 文字エンコーディングをサポートするには、M...

CocosCreatorでゲームコントローラーを使用する方法

目次1. シーンレイアウト2. ハンドルリスナーを追加する1. イベントの変更を監視する2. 座標設...

Nodejs でモジュール fs ファイルシステムを使用する方法

目次概要ファイル記述子同期、非同期、Promise同期書き込み非同期書き込み(推奨)約束​​の書き方...

Baidu サイト検索が https をサポートしていない問題の解決策 (テスト済み)

最近、携帯電話で https が有効になりました。緑色のロックを取得するには、次の問題を解決する必要...

Vueはボトムクエリ関数を実装します

この記事では、ボトムクエリ機能を実装するためのVueの具体的なコードを例として紹介します。具体的な内...

マルチコア CPU を使用して Linux コマンドを高速化する方法 (GNU Parallel)

非常に大量のデータ(数百 GB)を計算する必要があったことはありますか?または、その内部を検索したり...

MySQL GTID の総合概要

目次01 GTIDの紹介02 GTIDの仕組み03 GTIDの利点と欠点04 テスト環境構築05 テ...

React の国際化 react-intl の使用

React で国際化を実現するにはどうすればよいでしょうか? react-intlプラグインは、Re...

WeChatアプレットの世界的な状況の詳細な説明

序文WeChat アプレットでは、App.js の globalData を中間ブリッジとして使用し...

CSS3でアニメーションを実装する3つの方法

これは、面接者の CSS に関する基本的な知識をテストするものです。 CSSでアニメーションを実装す...

SQL 文を使用してデータを収集する場合の sum 関数と count 関数の if 判定条件の使用法の説明

まず、例を挙げてみましょう(読みたくない場合は、以下の要約だけ読んでください)。 order_typ...

HTMLリンクを書くときは、HTTPリクエストを減らすためにサブフォルダに必ずスラッシュを追加してください。

サブフォルダーの末尾にスラッシュがない場合、2 つの HTTP リクエストが生成され、効率に影響しま...

ネイティブ JS を使用してタッチスライド監視イベントを実装する方法

序文今日はちょっとしたデモを書きました。左右にスワイプするロジックに関わる部分があります。当初はプラ...