MySQL INSERT INTO文を正しく使用
3176 ワード
以下の文章は主にMySQL INSERT INTO文の実際の使い方とMySQL INSERT INTO文の関連文の紹介を紹介します.MySQL INSERT INTO文は実際の応用でよく使われる文なので、その関連内容を多く把握したほうがいいです.
MySQLINSERT INTO SELECT文:
INSERT INTO文:
INSERTは新しい行を存在するテーブルに挿入し、INSERTINTO...VALES形式の文は明示的に指定された値に基づいて行を挿入し、MySQLINSERT INTO SELECT形式で他の表から選択された行を挿入し、複数の値表のINSERT INTOがある...VALES形式はMySQL 3.22.5以降でサポートされています.col_name=expression構文はMySQL 3.22.10以降でサポートされています.
tbl_nameは、行が挿入されるべきテーブルです.カラム名テーブルまたはSET句は、文がそのカラムに値を指定することを示します.
INSERTなら...VALESまたはINSERT...SELECTはリストを指定しません.すべてのカラムの値はVALES()テーブルまたはSELECTで指定する必要があります.テーブルの列の順序が分からない場合は、DESCRIBE tblを使用します.nameが探し出す.
値が明示的に与えられていないカラムは、デフォルト値に設定されます.たとえば、リストを指定してテーブル内のすべてのカラムに名前を付けない場合は、名前を付けていないカラムがデフォルト値に設定されます.デフォルト値割り当ては、7.7 CREATE TABLE構文で説明されています.
1つのexpressionは、値テーブルで以前に設定されたカラムを参照できます.たとえば、次のようにできます.
しかし、そうはいきません.
キーワードLOWを指定するとPRIORITY、INSERTの実行は、他のお客様がテーブルを読み込んでいないまで延期されました.この場合、お客様は、文の挿入が完了するまで待たなければなりません.テーブルが頻繁に使用されると、時間がかかる可能性があります.これはINSERT DELAYEDが客をすぐに続けさせるのとは正反対だ.
多くの値の行があるINSERTでキーワードIGNOREを指定すると、既存のPRIMARYキーまたはUNIQUEキーをコピーした行は無視され、挿入されません.IGNOREを指定しない場合は、既存のキー値をコピーした行が破棄された場合に挿入します.C API関数MySQL_を使用できます.info()テーブルに挿入されたローの数を確認します.
MySQLがDONT_を使うならUSE_DEFAULT_FIELDSオプション構成では、NULL以外の値が必要なすべてのカラムに値を指定しない限り、INSERT文にエラーが発生します.4.7.3の一般的なconfigureオプションを参照してください.
MySQLINSERT INTO ... SELECT文は以下の条件を満たす:
クエリにORDER BY句を含めることはできません.
INSERT文の目的表は、ANSI SQLで挿入中の表からSELECTを禁止されているため、SELECTクエリー部分のFROM句には表示されません.(問題は、SELECTが同じ運転中に以前に挿入されたレコードを発見する可能性があることです.サブ選択文を使用すると、状況が紛らわしくなります)
AUTO_INCREMENT列はいつものように働いています.
INSERTを使うと...SELECTまたはINSERT...VALES文には複数の値リストがあり、C API関数MySQL_を使用できます.info()はクエリーの情報を取得します.情報文字列のフォーマットは次のとおりです.
Records: 100 Duplicates: 0 Warnings: 0
Duplicatesは、既存の一意のインデックス値と重複するため、挿入できないローの数を示します.Warningsは、いくつかの問題が発生したときにカラム値を挿入しようとした回数を示します.次のいずれかの条件でエラーが発生する可能性があります.
NOT NULLが宣言されたカラムにNULLを挿入し、カラムをデフォルト値に設定します.
範囲外の値を数値列に設定し、範囲内の適切な端点値に切り取ります.
数値列は、例えば「10.34 a」の値に設定され、テールのゴミは剥がされ、依然として数値部分が挿入される.値がまったく数値でない場合、カラムは0に設定されます.
列の最大長を超えるCHAR、VARCHR、TEXT、またはBLOB列に文字列を挿入します.値はカラムの最大長に切り捨てられます.
カラム・タイプに対する不正な値を日付または時刻列に挿入します.カラムは、カラムタイプの適切なゼロ値に設定されます.
INSERT文のDELAYEDオプションはMySQL専用のオプションです.お客様がINSERTが完了するまで待てない場合は、便利です.日記の登録にMySQLを使用すると、長い時間をかけて完了したSELECT文も周期的に実行されます.これはよくある問題です.DELAYEDは面MySQL 3.22.15に導入され、これはMySQL対ANSI SQL 92の拡張である.
INSERT DELAYEDを使用すると、お客様はすぐに準備ができ、テーブルが他のスレッドに使用されない場合、行が挿入されます.
もう1つのINSERT DELAYEDを使用する主な利点は、多くのお客様から挿入され、ブロックに書き込まれることです.これは多くの単独挿入をするよりも速いです.
以上の関連内容はMySQL INSERT INTO文の紹介であり、皆さんの勉強に役立つことを願っています.
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES (expression,...),(...),...
MySQLINSERT INTO SELECT文:
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
INSERT INTO文:
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name
SET col_name=expression, col_name=expression, ...
INSERTは新しい行を存在するテーブルに挿入し、INSERTINTO...VALES形式の文は明示的に指定された値に基づいて行を挿入し、MySQLINSERT INTO SELECT形式で他の表から選択された行を挿入し、複数の値表のINSERT INTOがある...VALES形式はMySQL 3.22.5以降でサポートされています.col_name=expression構文はMySQL 3.22.10以降でサポートされています.
tbl_nameは、行が挿入されるべきテーブルです.カラム名テーブルまたはSET句は、文がそのカラムに値を指定することを示します.
INSERTなら...VALESまたはINSERT...SELECTはリストを指定しません.すべてのカラムの値はVALES()テーブルまたはSELECTで指定する必要があります.テーブルの列の順序が分からない場合は、DESCRIBE tblを使用します.nameが探し出す.
値が明示的に与えられていないカラムは、デフォルト値に設定されます.たとえば、リストを指定してテーブル内のすべてのカラムに名前を付けない場合は、名前を付けていないカラムがデフォルト値に設定されます.デフォルト値割り当ては、7.7 CREATE TABLE構文で説明されています.
1つのexpressionは、値テーブルで以前に設定されたカラムを参照できます.たとえば、次のようにできます.
MySQL> INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);
しかし、そうはいきません.
MySQL> INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15);
キーワードLOWを指定するとPRIORITY、INSERTの実行は、他のお客様がテーブルを読み込んでいないまで延期されました.この場合、お客様は、文の挿入が完了するまで待たなければなりません.テーブルが頻繁に使用されると、時間がかかる可能性があります.これはINSERT DELAYEDが客をすぐに続けさせるのとは正反対だ.
多くの値の行があるINSERTでキーワードIGNOREを指定すると、既存のPRIMARYキーまたはUNIQUEキーをコピーした行は無視され、挿入されません.IGNOREを指定しない場合は、既存のキー値をコピーした行が破棄された場合に挿入します.C API関数MySQL_を使用できます.info()テーブルに挿入されたローの数を確認します.
MySQLがDONT_を使うならUSE_DEFAULT_FIELDSオプション構成では、NULL以外の値が必要なすべてのカラムに値を指定しない限り、INSERT文にエラーが発生します.4.7.3の一般的なconfigureオプションを参照してください.
MySQLINSERT INTO ... SELECT文は以下の条件を満たす:
クエリにORDER BY句を含めることはできません.
INSERT文の目的表は、ANSI SQLで挿入中の表からSELECTを禁止されているため、SELECTクエリー部分のFROM句には表示されません.(問題は、SELECTが同じ運転中に以前に挿入されたレコードを発見する可能性があることです.サブ選択文を使用すると、状況が紛らわしくなります)
AUTO_INCREMENT列はいつものように働いています.
INSERTを使うと...SELECTまたはINSERT...VALES文には複数の値リストがあり、C API関数MySQL_を使用できます.info()はクエリーの情報を取得します.情報文字列のフォーマットは次のとおりです.
Records: 100 Duplicates: 0 Warnings: 0
Duplicatesは、既存の一意のインデックス値と重複するため、挿入できないローの数を示します.Warningsは、いくつかの問題が発生したときにカラム値を挿入しようとした回数を示します.次のいずれかの条件でエラーが発生する可能性があります.
NOT NULLが宣言されたカラムにNULLを挿入し、カラムをデフォルト値に設定します.
範囲外の値を数値列に設定し、範囲内の適切な端点値に切り取ります.
数値列は、例えば「10.34 a」の値に設定され、テールのゴミは剥がされ、依然として数値部分が挿入される.値がまったく数値でない場合、カラムは0に設定されます.
列の最大長を超えるCHAR、VARCHR、TEXT、またはBLOB列に文字列を挿入します.値はカラムの最大長に切り捨てられます.
カラム・タイプに対する不正な値を日付または時刻列に挿入します.カラムは、カラムタイプの適切なゼロ値に設定されます.
INSERT文のDELAYEDオプションはMySQL専用のオプションです.お客様がINSERTが完了するまで待てない場合は、便利です.日記の登録にMySQLを使用すると、長い時間をかけて完了したSELECT文も周期的に実行されます.これはよくある問題です.DELAYEDは面MySQL 3.22.15に導入され、これはMySQL対ANSI SQL 92の拡張である.
INSERT DELAYEDを使用すると、お客様はすぐに準備ができ、テーブルが他のスレッドに使用されない場合、行が挿入されます.
もう1つのINSERT DELAYEDを使用する主な利点は、多くのお客様から挿入され、ブロックに書き込まれることです.これは多くの単独挿入をするよりも速いです.
以上の関連内容はMySQL INSERT INTO文の紹介であり、皆さんの勉強に役立つことを願っています.