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

推薦する

独自の YUM リポジトリを作成する手順

簡単に言うと、ウェアハウスとして使用される仮想マシンの IP は 192.168.149.129 で...

WeChatアプレットでのwxsファイルの素晴らしい使い方をいくつか紹介します

目次序文応用フィルタードラッグファイル間での参照の受け渡しwxsはjsロジック層にパラメータを渡しま...

Docker が MySQL を作成する説明

1. MySQLイメージをダウンロードするコマンド: docker pull mysql 2. コン...

Tomcatアーキテクチャの原則をアーキテクチャ設計に分析する

目次1. 学習目標1.1. Tomcatアーキテクチャの設計と原則をマスターして社内スキルを向上させ...

MySQL プロセス制御 IF()、IFNULL()、NULLIF()、ISNULL() 関数

MySQL では、IF()、IFNULL()、NULLIF()、および ISNULL() 関数を使用...

Mysqlの日付と時刻関数を扱う記事

目次序文1. 現在の時刻を取得する1.1 現在の日付と時刻を返す1.2 現在の日付を取得する1.3 ...

テーブル編集操作を実現する js+Html

この記事では、テーブルの編集操作を実現するためのjs+Htmlの具体的なコードを参考までに共有します...

CentOS7 で docker を使用して Apollo 構成センターをデプロイする実装

Apollo オープンソース アドレス: https://github.com/ctripcorp/...

Linux システムを起動時に自動的にスクリプトを実行するように設定する方法の例

序文みなさんこんにちは。私は梁旭です。職場では、システムの起動後にスクリプトやサービスを自動的に開始...

CSS3はマスク連打機能を実現する

最近Bステーションでスマートアンチブロッキング弾幕と呼ばれる弾幕エフェクトを見ました。これは伝説のマ...

HTMLデータ送信投稿_PowerNode Java Academy

HTTP/1.1 プロトコルで指定されている HTTP リクエスト メソッドには、OPTIONS、...

LinuxにMySQLをインストールするための詳細なチュートリアル

すべてのプラットフォーム用の MySQL ダウンロードは、MySQL ダウンロードから入手できます。...

Vueルーティングコンポーネントでパラメータを渡す8つの方法の詳細な説明

シングルページアプリケーションを開発する場合、特定のルートを入力し、パラメータに基づいてサーバーから...

Zabbix動的実行監視収集スクリプトの実装原理

Zabbix カスタム スクリプトを使用して監視データを収集する場合、通常、次の問題が発生します。サ...

Vue3はJingdong製品詳細ページの虫眼鏡効果コンポーネントをカプセル化します

この記事では、Jingdong製品詳細ページの虫眼鏡効果コンポーネントに似たvue3カプセル化の具体...