Mysql の SQL サーバー モードの簡単な紹介
mysql SQL サーバー モード
MySQL サーバーはさまざまな SQL モードで動作でき、さまざまなクライアントにさまざまなモードを適用できます。このようにして、各アプリケーションは、独自のニーズに応じてサーバーの動作モードをカスタマイズできます。
スキーマは、MySQL がどの SQL 構文をサポートする必要があるか、およびどのような種類のデータ検証チェックを実行する必要があるかを定義します。これにより、MySQL をさまざまな環境で使用したり、他のデータベース サーバーと組み合わせて使用したりすることが容易になります。 --sql-mode="modes" オプションを使用して mysqld を起動し、デフォルトの SQL モードを設定できます。リセットしたい場合は、この値を空のままにすることもできます (--sql-mode = "")。 起動後に SET [SESSION|GLOBAL] sql_mode='modes' ステートメントを使用して sql_mode
変数
を設定し、SQL モードを変更することもできます。 GLOBAL 変数を設定するには SUPER 権限が必要であり、その時点から接続されているすべてのクライアントの操作に影響します。 SESSION 変数の設定は、現在のクライアントにのみ影響します。どのクライアントでも、セッションの sql_mode 値をいつでも変更できます。 Modesis は、カンマ (「,」) で区切られた一連の異なるモードです。 SELECT @@sql_mode ステートメントを使用して、現在のモードをクエリできます。デフォルト値は空です (モードが設定されていません)。
主に重要なsql_mode値
・ANSI標準SQLとの一貫性を高めるために構文と動作を変更しました。
・STRICT_TRANS_TABLES
指定された値をトランザクションテーブルに挿入できない場合、ステートメントを中止します。非トランザクション テーブルの場合、単一行ステートメントまたは複数行ステートメントの行 1 に値が出現すると、そのステートメントは破棄されます。より詳細な説明は、このセクションで後ほど説明します。
・TRADITIONAL
MySQL を「従来の」SQL データベース システムのように動作させます。このモードを簡単に説明すると、不正な値が列に挿入されたときに「警告ではなくエラーを表示する」ということです。
注意: エラーが見つかったらすぐに INSERT/UPDATE を中止してください。非トランザクション ストレージ エンジンを使用している場合、これは望ましいことではありません。エラーが発生する前に行われたデータ変更は「ロールオーバー」されず、更新
が「部分的にしか行われない」ことになるからです。 このマニュアルでは「厳密モード」と呼んでいます。これは、少なくとも STRICT _TRANS_TABLES または STRICT _ALL_TABLES が有効になっているモードを意味します。 サポートされているすべてのモードを以下に説明します: ・ALLOW_INVALID_DATES
厳密モードではすべての日付をチェックしません。 1 ~ 12 の月と 1 ~ 31 の日のみをチェックします。これは、Web アプリケーションで 3 つの異なるフィールドから年、月、日を取得し、ユーザーが入力した内容を (日付検証なしで) 正確に保存したい場合に重要です。このモードは、DATE 列と DATETIME 列に対して機能します。日付検証が必要な TIMESTAMP 列には適していません。
厳密モードを有効にすると、サーバーはそれぞれ 1 ~ 12 および 1 ~ 31 の範囲だけでなく、有効な月と日を必要とします。たとえば、「2004-04-31」は、厳密モードが無効な場合は正当ですが、厳密モードが有効な場合は無効です。厳密モードで固定日付のマスクを許可するには、ALLOW_INVALID_DATES も有効にする必要があります。 ・ANSI_QUOTES
「"」を
文字列の引用文字としてではなく、識別子の引用符(「」引用文字)として扱います。ANSIモードでは、引用
識別文字に「`」を引き続き使用できます。 ANSI_QUOTES が有効な場合、文字列は識別子として解釈されるため、二重引用符で囲むことはできません・ERROR_FOR_pISION_BY_ZERO厳密モードでは、INSERT または UPDATE 中にゼロ (または MOD(X , 0)) で除算すると、モードが指定されていない場合、MySQL は INSERT IGNORE または UPDATE IGNORE で使用すると
NULL を返しますが、結果は
・HIGH_NOT_PRECEDENCENOT
operator です。優先順位は 式
です。たとえば、NOT a BETWEEN b AND c は NOT (a BETWEEN b AND c) として解釈されます。MySQL の一部の古いバージョンでは、式は (NOT a) BETWEEN b AND c として解釈されます。 HIGH_NOT_PRECEDENCESQL モードを有効にして、前のより高い 優先度 の結果を取得します。
mysql> SET sql_mode = ''; mysql> SELECT NOT 1 BETWEEN -5 AND 5; -> 0 mysql> SET sql_mode = 'broken_not'; mysql> SELECT NOT 1 BETWEEN -5 AND 5; -> 1
・IGNORE_SPACE
では、 関数 名と '(' の間にスペースを入れることができます。すべての関数名が保存された単語として扱われるように強制されます。その結果、単語として保存されたデータベース、テーブル、または列の名前にアクセスしたい場合は、たとえば、USER() 関数により、mysql データベース 内のユーザー テーブル名とテーブル内の User 列が保存されるため、それらを引用符で囲む必要があります:
SELECT "User" FROM mysql."user";
・NO_AUTO_CREATE_USER
防止GRANT自动创建新用户,除非还指定了密码。
・NO_AUTO_VALUE_ON_ZERO
NO_AUTO_VALUE_ON_ZERO影响AUTO_INCREMENT列的处理。一般情况,你可以向该列插入NULL或0生成下一个序列号。NO_AUTO_VALUE_ON_ZERO禁用0,因此只有NULL可以生成下一个序列号。
如果将0保存到表的AUTO_INCREMENT列,该模式会很有用。(不推荐采用该惯例)。例如,如果你用mysqldump转储表并重载,MySQL遇到0值一般会生成新的序列号,生成的表的内容与转储的表不同。重载转储文件前启用NO_AUTO_VALUE_ON_ZERO可以解决该问题。mysqldump在输出中自动包括启用NO_AUTO_VALUE_ON_ZERO的语句。
・NO_BACKSLASH_ESCAPES
禁用反斜线字符(‘\')做为字符串内的退出字符。启用该模式,反斜线则成为普通字符。
・NO_DIR_IN_CREATE
创建表时,忽视所有INDEX DIRECTORY和DATA DIRECTORY指令。该选项对从复制服务器有用。
・NO_ENGINE_SUBSTITUTION
如果需要的存储引擎被禁用或未编译,可以防止自动替换存储引擎。
・NO_FIELD_OPTIONS
不要在SHOW CREATE TABLE的输出中打印MySQL专用列选项。该模式在可移植模式(portability mode)下用于mysqldump。
・NO_KEY_OPTIONS
不要在SHOW CREATE TABLE的输出中打印MySQL专用索引选项。该模式在可移植模式(portability mode)下用于mysqldump。
・NO_TABLE_OPTIONS
不要在SHOW CREATE TABLE的输出中打印MySQL专用表选项(例如ENGINE)。该模式在可移植模式(portability mode)下用于mysqldump。
・NO_UNSIGNED_SUBTRACTION
在减运算中,如果某个操作数没有符号,不要将结果标记为UNSIGNED。请注意这样使UNSIGNED BIGINT不能100%用于上下文中。参见12.8节,“Cast函数和操作符”。
・NO_ZERO_DATE
在严格模式,不要将 '0000-00-00'做为合法日期。你仍然可以用IGNORE选项插入零日期。在非严格模式,可以接受该日期,但会生成警告。
・NO_ZERO_IN_DAT
在严格模式,不接受月或日部分为0的日期。如果使用IGNORE选项,我们为类似的日期插入'0000-00-00'。在非严格模式,可以接受该日期,但会生成警告。
・ONLY_FULL_GROUP_BY
不要让GROUP BY部分中的查询指向未选择的列。
・PIPES_AS_CONCAT
将||视为字符串连接操作符(+)(同CONCAT()),而不视为OR。
・REAL_AS_FLOAT
将REAL视为FLOAT的同义词,而不是DOUBLE的同义词。
・STRICT_TRANS_TABLES
为所有存储引擎启用严格模式。非法数据值被拒绝。后面有详细说明。
・STRICT_TRANS_TABLES
为事务存储引擎启用严格模式,也可能为非事务存储引擎启用严格模式。后面有详细说明。
严格模式控制MySQL如何处理非法或丢失的输入值。有几种原因可以使一个值为非法。例如,数据类型错误,不适合列,或超出范围。当新插入的行不包含某列的没有显示定义DEFAULT子句的值,则该值被丢失。
对于事务表,当启用STRICT_ALL_TABLES或STRICT_TRANS_TABLES模式时,如果语句中有非法或丢失值,则会出现错误。语句被放弃并滚动。
对于非事务表,如果插入或更新的第1行出现坏值,两种模式的行为相同。语句被放弃,表保持不变。如果语句插入或修改多行,并且坏值出现在第2或后面的行,结果取决于启用了哪个严格选项:
・对于STRICT_ALL_TABLES,MySQL返回错误并忽视剩余的行。但是,在这种情况下,前面的行已经被插入或更新。这说明你可以部分更新,这可能不是你想要的。要避免这点,最好使用单行语句,因为这样可以不更改表即可以放弃。
・对于STRICT_TRANS_TABLES,MySQL将非法值转换为最接近该列的合法值并插入调整后的值。如果值丢失,MySQL在列中插入隐式 默认值。在任何情况下,MySQL都会生成警告而不是给出错误并继续执行语句。13.1.5节,“CREATE TABLE语法”描述了隐式默认值。
厳密モードでは、「2004-04-31」などの不正な日付は許可されません。 「2004-04-00」や「ゼロ」の日付など、「ゼロ」の部分を使用した禁止された日付は許可されません。これを無効にするには、厳密モードに基づいて NO_ZERO_IN_DATE および NO_ZERO_DATE SQL モードを有効にします。
厳密モードを使用しない場合 (つまり、STRICT_TRANS_TABLES モードまたは STRICT_ALL_TABLES モードを有効にしない場合)、MySQL は調整された値を挿入し、不正な値または欠落している値について警告を発します。厳密モードでは、INSERT IGNORE または UPDATE IGNORE を使用してこれを行うことができます。 「SHOW WARNINGS 構文」を参照してください。
以上がMysql の SQL サーバー モードの簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

SQLデータベースの構築には、DBMSの選択が必要です。 DBMSのインストール。データベースの作成。テーブルの作成;データの挿入;データの取得。データの更新。データの削除。ユーザーの管理。データベースのバックアップ。
