2013-09-22 12 views
5

Manchmal funktioniert es sowieso, wenn ich die ; vergessen habe. Aber manchmal nicht.Ist das Semikolon in SQL erforderlich?

Und in JDBC und Android SQLite scheint es, dass ich ; überhaupt nicht brauche. Ich bin verwirrt.

Wann sollte ich ein Semikolon verwenden?

Antwort

5

Semikolon gibt das Ende einer Anweisung an, wenn also mehrere Anweisungen vorhanden sind, sollten Sie Semikolon verwenden, ansonsten funktioniert es einwandfrei.

Ich benutze in der Regel Semikolon als eine Praxis, kann es nützlich sein, auch wenn Sie Abfragen auf SQL-Client, z. in Sql Developer mit Semikolon ist sehr hilfreich, wenn Sie mehrere Anweisungen auf Arbeitsblatt haben, wie Sie einfach zu dieser bestimmten Anweisung gehen und F9 verwenden, um dies auszuführen, ohne Semikolon ist dies nicht möglich.

+3

In den meisten JDBC-Treibern, auch wenn Sie Semikolon zur separaten Anweisung hinzufügen, wird es nicht funktionieren ... – aleroot

+0

Das Ausführen mehrerer Anweisungen in einer einzigen Zeichenfolge ist - nach Spezifikation - in JDBC nicht zulässig –

3

Es ist nicht obligatorisch, wenn Sie eine einzelne Abfrage zum Zeitpunkt ausführen, es ist erforderlich, wenn Sie mehrere Abfragen mit einem einzigen Befehl ausführen möchten.

jedoch in den meisten JDBC-Treiber gibt es nicht möglich ist, mehrere Abfrage mit Semikolon in einem einzigen JDBC-Befehl getrennt hinzuzufügen, existieren sie jedoch die addBatch Methode, die Sie mehrere Anweisungen hinzufügen lassen:

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

Als Faustregel gilt, dass in JDBC Semikolon überhaupt nicht benötigt wird, wenn Sie mehrere Anweisungen verwenden müssen addBatch.

1

Abhängig von der DBMS und die Versionsnummer. Semikolons sind oft optional am Ende einer einzigen Aussage. Wenn Sie jedoch ein Skript mit mehr als einer Anweisung ausführen, müssen sie mit einem Semikolon abgeschlossen werden.

Außer vielleicht die letzte. Aber es scheint schlechte Form zu sein, inkonsequent zu sein.

3

Normalerweise ist das Semikolon nicht Teil der eigentlichen Syntax einer Anweisung (da die meisten datenbankinternen APIs jeweils eine einzelne Anweisung ausführen). Stattdessen ist das Semikolon ein "end-of-statement" -Marker oder Anweisungstrennzeichen, das normalerweise in CLI- oder Skriptwerkzeugen für die Datenbank definiert ist. Dadurch kann dieses Tool wissen, wann eine Anweisung endet, sodass es diese einzelne Anweisung zur Ausführung an die Datenbank senden kann.

Auf der anderen Seite ist die JDBC API beabsichtigt, eine einzelne (!) Anweisung zu einem Zeitpunkt auszuführen, daher benötigen Sie kein solches Trennzeichen (die Anweisung ist die ganze Zeichenfolge). Dies bedeutet, dass ein Semikolon nicht benötigt wird, und da es nicht Teil der Syntax der eigentlichen Anweisung für viele Datenbanken ist, ist es auch ein Syntaxfehler, es einzuschließen. Einige JDBC-Treiber entfernen die letzte ; von einer Anweisung zu 'reparieren', die einige Treiber nicht tun.

Einige Treiber erlauben - entgegen der JDBC-Spezifikation - mehrere Anweisungen als eine einzige Zeichenfolge auszuführen, dies muss normalerweise mit einer Verbindungseigenschaft aktiviert werden, zB für MySQL ist dies die Option allowMultiQueries (Details siehe MySQL properties)).

Verwandte Themen