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

推薦する

SQLはLeetCodeを実装します(180.連続した数字)

[LeetCode] 180. 連続した数字少なくとも 3 回連続して出現するすべての数字を検索す...

入力ファイルのカスタムボタンの美化(デモ)

以前にも同じような記事を書いたことがありますが、js スクリプトを使用しており、ファイルパスを表示で...

JDBC を MySQL 5.7 に接続する方法

1. まずMySQLとEclipseの環境を準備します。環境がセットアップされたら、Eclipseの...

mysql 8.0.12 winx64 のダウンロードとインストールのチュートリアル

MySQL 8.0.12のダウンロードとインストールのチュートリアルは参考までに、具体的な内容は次の...

Chrome タブバーを実装するための CSS のヒント

今回は、Google Chrome のタブバーのような、特殊な丸い角を持つナビゲーション バーのレイ...

特定のシンボルで複数の行と列に分割するMySQLの例

一部の障害コード テーブルでは、履歴またはパフォーマンス上の理由から、次の設計パターンが使用されます...

Vue3でカルーセルコンポーネントをカプセル化する方法

目的カルーセルコンポーネントをカプセル化して直接使用します。具体的な内容は以下のとおりです。一般的な...

49 個の JavaScript のヒントとコツ

目次1. js整数の演算2. ネイティブアラートを書き換えてポップアップボックスの数を記録する3. ...

Bootstrap3.0 学習ノートテーブル関連

この記事では、Webサイトを作ったことがある人にとっては馴染みのあるテーブルについて主に説明します。...

Windows 7 での MySQL 8.0.18 の導入とインストールのチュートリアル

1. 事前準備 (windows7+mysql-8.0.18-winx64) 1. ダウンロードアド...

Vueのシンプルストアの詳しい説明

Vue におけるストアの最も単純な応用はグローバル ストレージです。ここでは、相互にジャンプするため...

Linuxの簡単な分析でファイアウォールの状態と外部に開いているポートの状態を確認する

1. ファイアウォールの状態を確認するファイアウォールのステータスを確認する systemctl s...

Dockerコンテナとホストマシン間の8時間の差の問題を解決する

デプロイに docker-compose を使用すると、出力ログと関連イベントが検証されて出力される...

MySQL 外部キー制約の一般的な操作の例 [表示、追加、変更、削除]

この記事では、例を使用して、MySQL 外部キー制約の一般的な操作について説明します。ご参考までに、...

Angular のパフォーマンス最適化: サードパーティ コンポーネントと遅延読み込みテクノロジー

目次概要環境の準備プロジェクトのパフォーマンスに影響を与える要因遅延読み込みとは何ですか?プロジェク...