INSERT INTO table VALUES ..
とINSERT INTO table SET
の主な違いは何ですか?MySQL INSERT INTOテーブルVALUE .. INSERT INTOテーブルSET
例:
INSERT INTO table (a, b, c) VALUES (1,2,3)
INSERT INTO table SET a=1, b=2, c=3
そして、何この二つのパフォーマンスについて?
INSERT INTO table VALUES ..
とINSERT INTO table SET
の主な違いは何ですか?MySQL INSERT INTOテーブルVALUE .. INSERT INTOテーブルSET
例:
INSERT INTO table (a, b, c) VALUES (1,2,3)
INSERT INTO table SET a=1, b=2, c=3
そして、何この二つのパフォーマンスについて?
私が知る限り、両方の構文は同等です。最初はSQL標準であり、2番目はMySQLの拡張です。
したがって、パフォーマンスは正確に同等です。
http://dev.mysql.com/doc/refman/5.6/en/insert.htmlは言う:
INSERTは、既存のテーブルに新しい行を挿入します。ステートメントのINSERT ... VALUESおよびINSERT ... SET形式は、明示的に指定された値に基づいて行を挿入します。 INSERT ... SELECTフォームは、別のテーブルから選択された行を挿入します。
'INSERT INTO table SET'を使って複数の値をどのようにINSERTしますか?これも可能ですか? – pixelfreak
どういう意味ですか? OPの例では、SET a = 1、b = 2、c = 3であり、これは私の理解では複数の値です。 –
私は、複数の行を挿入することを意味します。 INSERT INTOテーブル(a、b、c)VALUES(1,2,3)、(4,5,6)、(7,8,9); – pixelfreak
拡張機能は、挿入と更新で同様の構文を使用できるようにするためのものだと思います。オラクルでは、同様の構文トリックがある:
UPDATE table SET (col1, col2) = (SELECT val1, val2 FROM dual)
構文は(とにかくMySQLの中で)同等なので、声明の中でエラーをキャッチするために変更する方が簡単かつ容易であることから、私は場合は特に、INSERT INTO table SET x=1, y=2
構文を好みますたくさんの列を挿入します。 10または15個以上の列を挿入する必要がある場合は、(x, y) VALUES (1,2)
構文を使用して何かを混ぜるのは簡単です。
異なるSQL標準間の移植性が問題になる場合は、おそらくINSERT INTO table (x, y) VALUES (1,2)
が優先されます。
複数のレコードを1つのクエリに挿入する場合は、INSERT INTO ... SET
の構文が機能しないように見えますが、他のクエリは機能しません。しかし、ほとんどの実際のケースでは、挿入を行うためにレコードのセットをループしていますが、1つの大きなクエリを作成して1つのクエリのテーブルに複数の行を挿入する場合や、各行のパフォーマンスが向上する可能性があります。本当にわからない。
Code CompleteとMcConnellの可読性を常に重視した後、INSERT INTO table SETは標準ではないことは残念です。はるかに明確に思える。私が移植した場合、問題から自分自身を救うために、INSERT INTOテーブル([列名、列名b])VALUES(['値a'、 '値b'])構文を使用する必要がありますPostgresに – cluelesscoder
この質問はKanyeのビデオのようにウイルスになっています! – aMazing