2013-09-22 18 views
5

A volte funziona comunque se dimentico lo ;. Ma a volte no.Il punto e virgola è necessario in SQL?

E in JDBC e Android SQLite, sembra che non sia necessario lo ;. Sono confuso.

Quando è necessario utilizzare un punto e virgola?

risposta

5

punto e virgola indica la fine di un'istruzione, quindi se ci sono più istruzioni, è necessario utilizzare il punto e virgola altrimenti funzionerà correttamente.

In genere utilizzo il punto e virgola come pratica, può essere utile anche quando si eseguono query su client sql, ad es. in Sql Developer che utilizza il punto e virgola è molto utile se si hanno più istruzioni su un foglio di lavoro, poiché si può semplicemente andare a quella particolare istruzione e usare F9 per eseguirlo, senza punto e virgola ciò non è possibile.

+3

Nella maggior parte dei driver JDBC anche se si aggiunge punto e virgola a un'istruzione separata, non funzionerà ... – aleroot

+0

L'esecuzione di più istruzioni in una singola stringa è - per specifica - non consentito in JDBC –

3

Non è obbligatorio se si esegue una singola query alla volta, ma è necessario invece se si desidera eseguire più query con un singolo comando.

Tuttavia nella maggior parte dei driver JDBC là fuori non è possibile aggiungere query su più separati da virgola in un unico comando JDBC, esso esiste comunque il metodo addBatch che consentono di aggiungere più istruzioni:

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

Come regola empirica, nel punto e virgola JDBC non è affatto necessario, se hai bisogno di più istruzioni usa addBatch.

1

Dipende dal DBMS e dal numero di versione. I punti e virgola sono spesso facoltativi alla fine di una singola istruzione. Ma se stai per eseguire uno script con più di una istruzione, devono essere terminati da un punto e virgola.

Tranne forse l'ultimo. Ma sembra una cattiva forma essere incoerente.

3

In genere il punto e virgola non fa parte della sintassi effettiva di un'istruzione (poiché la maggior parte delle API interne del database esegue una singola istruzione alla volta). Invece, il punto e virgola è un indicatore di fine istruzione o un separatore di istruzioni che, in genere, viene definito nella CLI o negli strumenti di script per il database. Ciò consente a tale strumento di sapere quando termina un'istruzione, quindi può inviare quella singola istruzione al database per l'esecuzione.

D'altra parte, l'API JDBC è progettata per eseguire una singola istruzione (!) Alla volta, quindi non è necessario un separatore di questo tipo (l'istruzione è l'intera stringa). Ciò significa che non è necessario un punto e virgola, e poiché non fa parte della sintassi dell'istruzione effettiva per un sacco di database, è anche un errore di sintassi per includerlo. Alcuni driver JDBC elimineranno l'ultimo ; da un'istruzione in "correzione" che, alcuni driver non lo fanno.

Alcuni driver consentono, contrariamente alle specifiche JDBC, di eseguire più istruzioni come una singola stringa, di solito deve essere abilitata con una proprietà di connessione, ad esempio per MySQL è l'opzione allowMultiQueries (vedere lo MySQL properties per dettagli).

Problemi correlati