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

推薦する

HTML でよく使われるタグの概要 (必読)

コンテンツ詳細タグ: <h1>~<h6>タイトルタグ<pre>テ...

7つのMySQL JOINタイプのまとめ

始める前に、これから紹介する JOIN タイプを示すために 2 つのテーブルを作成します。テーブルを...

MacにMySQLをインストールするときに忘れたパスワードを変更する方法

1. MacにMySQLデータベースをインストールする1. MySQLデータベースをダウンロードする...

React Fragment の紹介と詳しい使い方

目次序文フラグメントの動機React Fragment の紹介と使用<React.Fragme...

Websocket+Vuexはリアルタイムチャットソフトウェアを実装します

目次序文1. 効果は図の通りです2. 具体的な実施手順1. Vuexの紹介2.webscoked実装...

type="file" の入力ボックスのスタイル変更の概要

入力タイプ「file」とは何ですか?これが何なのかは説明する必要はないと思います。誰もが知っているこ...

Linux での中国語入力方法の問題を素早く解決する

背景: 最近、資産報告関連の機能に取り組んでおり、中国語入力をサポートする必要があります。通常のショ...

仮想マシンクローン Linux centos6.5 システム ネットワーク カード構成グラフィック チュートリアル

Linux システムに触れたばかりの初心者として、VMware 仮想マシンに CentOS6.5 シ...

React+Ant Design開発環境をセットアップするための実装手順

基礎1. スキャフォールディングを使用してプロジェクトを作成し、開始する1.1 足場を設置する: n...

Vue は Axios リクエスト フロントエンドのクロスドメイン問題をどのように解決するのか

目次序文1. クロスドメインの問題はなぜ発生するのでしょうか? 2. 解決策クロスオリジンリソース共...

MySQLクエリデータを時間別に表示します。データがない場合は0を入力してください。

需要背景統計インターフェースでは、フロントエンドは 2 つの配列を返す必要があります。1 つは 0 ...

MySQL マスタースレーブ構築(複数のマスターと 1 つのスレーブ)の実装アイデアと手順

背景:最近、同社のプロジェクトは同時実行のプレッシャーに耐えられないようなので、最適化が差し迫ってい...

jQuery はピッカーをシミュレートしてスライド選択効果を実現します

この記事では、スライド選択効果を実現するピッカーをシミュレートするjQueryの具体的なコードを参考...

デュアル VIP を使用した高可用性 MySQL クラスタの構築

目次1. プロジェクトの説明: 2. プロジェクト環境: 2. プロジェクトの手順: 3. プロジェ...

MySQL 8.0.23 のインストールと設定方法のグラフィックチュートリアル (Win10 の場合)

この記事では、MySQL 8.0.23のインストールと設定方法を参考までに紹介します。具体的な内容は...