Необходима ли точка с запятой в SQL?

иногда это работает в любом случае, если я забуду ;. Но иногда это не так.

и в JDBC и Android SQLite, кажется, что мне не нужно ; на всех. Я в замешательстве.

когда следует использовать точку с запятой?

4 ответов


точка с запятой указывает конец оператора, поэтому, если есть несколько операторов, вы должны использовать точку с запятой, иначе она будет работать нормально.

Я обычно использую точку с запятой в качестве практики, это может быть полезно даже при выполнении запросов на SQL client, например, в SQL Developer использование точки с запятой очень полезно, если у вас есть несколько операторов на листе, так как вы можете просто перейти к этому конкретному оператору и использовать F9 для выполнения этого, без точки с запятой это невозможно.


это не обязательно, если вы одновременно запускаете один запрос, это необходимо, если вы хотите запустить несколько запросов с одной командой.

однако в большинстве драйверов JDBC невозможно добавить несколько запросов, разделенных точкой с запятой в одной команде JDBC, однако существует метод addBatch, который позволяет добавлять несколько операторов:

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

как правило, в JDBC точка с запятой не требуется вообще, если вам нужно несколько оператор use addBatch.


обычно двоеточие не является частью фактического синтаксиса оператора (так как большинство внутренних API базы данных выполняют один оператор за раз). Вместо этого двоеточие является маркером или разделителем операторов "конец инструкции", который обычно определяется в CLI или инструментах сценариев для базы данных. Это позволяет этому инструменту знать, когда оператор заканчивается, поэтому он может отправить этот единственный оператор в базу данных для выполнения.

С другой стороны, api JDBC предназначен для выполнения сингл(!) оператор за раз, поэтому вам не нужен такой разделитель (оператор-это вся строка). Это означает, что двоеточие не требуется, и поскольку оно не является частью синтаксиса фактического оператора для многих баз данных, его включение также является синтаксической ошибкой. Некоторые драйверы JDBC будут лишать последнего ; из заявления, чтобы "исправить" это, некоторые драйверы этого не делают.

некоторые драйверы позволяют-вопреки спецификации JDBC-несколько операторов должны выполняться как одна строка, это обычно должно быть включено со свойством соединения, например для MySQL это опция allowMultiQueries (см. свойства MySQL для деталей).


зависит от СУБД и номера версии. Точки с запятой часто являются необязательными в конце одного оператора. Но если вы собираетесь выполнить сценарий с более чем одним оператором, они должны быть завершены точкой с запятой.

кроме, может быть, последнего. Но непоследовательность кажется дурным тоном.