2013-09-22 12 views
5

;を忘れても、時にはうまくいく場合があります。しかし時にはそうではありません。セミコロンはSQLで必要ですか?

JDBCとAndroid SQLiteでは、私は;がまったく必要ないようです。私は混乱しています。

セミコロンはいつ使用しますか?

答えて

5

セミコロンはステートメントの終わりを示します。したがって、複数のステートメントがある場合は、セミコロンを使用する必要があります。

私は通常、セミコロンを練習として使用しています。これは、SQLクライアントでクエリを実行しているときなどにも便利です。セミコロンを使用するSQL Developerでは、ワークシート上に複数のステートメントがある場合は、そのステートメントに移動してF9を使用してセミコロンなしで実行することができます。

+3

セミコロンを別のステートメントに追加しても、ほとんどのJDBCドライバでは機能しません。 – aleroot

+0

JDBCでは1つの文字列で複数のステートメントを実行することはできません –

3

単一のクエリを時間に実行する場合は必須ではなく、単一のコマンドで複数のクエリを実行する場合は、代わりに必要です。

java.sql.Statement stmt=con.createStatement(); 
stmt.addBatch(insert_query1); //insert_query1 
stmt.addBatch(insert_query2); //insert_query2 

:しかし

そこJDBCドライバのほとんどで、単一のJDBCコマンドでセミコロンで区切られた複数のクエリを追加することはできません、それはあなたが複数のステートメントを追加することができますしかし、addBatchメソッドを存在します経験則として、JDBCのセミコロンは必要ありません。複数のステートメントを使用する必要がある場合は、addBatchを使用してください。

1

DBMSとバージョン番号によって異なります。セミコロンは、1つのステートメントの最後にオプションであることがよくあります。しかし、複数のステートメントでスクリプトを実行する場合は、セミコロンで終了する必要があります。

多分最後のものを除いて。しかし、それは矛盾する悪い形に見えます。

3

通常、セミコロンは文の実際の構文の一部ではありません(ほとんどのデータベース内部APIは、一度に1つの文を実行するため)。代わりに、セミコロンは、通常はCLIまたはデータベースのスクリプティングツールで定義されている '文末'のマーカーまたは文の区切り文字です。これにより、そのツールは文が終了したときにそれを知ることができるため、その文をデータベースに送信して実行することができます。

一方、JDBC APIは一度に1つの(!)ステートメントを実行することを意図しているため、そのようなセパレータは必要ありません(ステートメントは文字列全体です)。つまり、セミコロンは不要であり、多くのデータベースの実際の文構文には含まれていないため、それを含める構文エラーでもあります。 JDBCドライバの中には、最後の;をステートメントから「修正」するものがありますが、一部のドライバでは修正されません。

JDBC仕様とは異なり、複数のステートメントを1つの文字列として実行できるドライバもあります。たとえば、MySQLの場合はallowMultiQueriesです(詳細はMySQL propertiesを参照してください)。 )。

関連する問題