私は現在、MS SQLでT-SQLを使用しており、テーブルにデータを挿入する必要があるときはいつでも、構文を使用する傾向があります。
INSERT INTO myTable <something here>
キーワードINTO
はここではオプションであり、使用する必要はありませんが、私の場合は何らかの形で習慣になりました。
私の質問は:
INSERT
構文とINSERT INTO
を使用する意味はありますか?これらは同じもので、INTO
はT-SQLでは完全にオプションです(他のSQL方言は異なる場合があります)。
他の答えとは反対に、INTO
を使用すると読みやすさが損なわれると思います。
私はそれは概念的なものだと思います:私の知覚では、「Customer」という名前のテーブルにrowを挿入していませんが、Customerを挿入しています。 (これは、複数ではなく単数でテーブルに名前を付けるために使用するという事実に関連しています)。
最初の概念に従う場合、INSERT INTO Customer
は、おそらくあなたにとって「正しい」と感じるでしょう。
2番目の概念に従えば、INSERT Customer
あなたのために。
MySQLではオプションの場合もありますが、Oracleなどの一部のDBMSでは必須です。そのため、SQLは、INTOキーワードを使用することで、その価値をさらに高めることができます。
この問題について学んだ1つの教訓は、常に一貫性を保つ必要があるということです。 INSERT INTOを使用する場合は、INSERTも使用しないでください。そうしないと、一部のプログラマーが同じ質問を再度行うことがあります。
関連する別の例を次に示します。MSSQL 2005で非常に長いストアドプロシージャを更新する機会がありました。問題は、結果テーブルに挿入されたデータが多すぎることです。データがどこから来たのかを知る必要がありました。新しいレコードが追加された場所を見つけようとしました。 SPの最初のセクションで、いくつかのINSERT INTOを見ました。次に、「INSERT INTO」を見つけて更新しようとしましたが、「INSERT」のみが使用されていた場所が1つありませんでした。その1つは実際にいくつかの列に空のデータの4k +行を挿入しました!もちろん、INSERTだけを検索する必要があります。しかし、それは私に起こりました。私は前のプログラマーIDIOTを非難します:) :)
SQL Server 2005では、INSERTとINTOの間に次のようなものがあります。
INSERT top(5)INTO tTable1 SELECT * FROM tTable2;
INTOがなくても動作しますが、読みやすくするためにINTOを使用することを好みます。
どちらも同じことをします。 INTOはオプションです(SQL Server T-SQLの場合)が、読みやすくなります。
利用可能な場合は、標準機能を使用します。特定のデータベースの移植性が必要なわけではありませんが、SQLの知識のために移植性が必要になる可能性があります。特定の厄介なT-SQLの例は、isnullの使用、合体の使用です!
OracleでSQLを強調し始めたので、INTOなしのコードを見ると、単に「壊れて」混乱しているように見えます。
はい、それは単なる私の意見であり、私はあなたとは言いませんshould常にINTOを使用します。しかし、他の多くの人々がおそらく同じことを考えていることを知っておくべきではありません。特に、新しい実装でスクリプトを作成していない場合はそうです。
SQLでは、オブジェクトを操作せずに、行をテーブルに追加していることを認識することも非常に重要だと思います。新しい開発者にとって、SQLテーブルの行/エントリをオブジェクトと考えるのは役に立たないと思います。繰り返しますが、私だけの意見です。
私はそれを使うことを好みます。 group BY
、order BY
など、SQL言語の他の部分と同じ構文描写感と読みやすさを維持します。