SQL中是否需要分号?

时间:2013-09-22 07:44:54

标签: sql jdbc android-sqlite

如果我忘记了;,它有时会起作用。但有时却没有。

在JDBC和Android SQLite中,我似乎根本不需要;。我很迷惑。

我什么时候应该使用分号?

4 个答案:

答案 0 :(得分:5)

分号表示语句结束,所以如果有多个语句,那么你应该使用分号,否则它将正常工作。

我通常使用分号作为练习,即使在sql客户端上运行查询,它也很有用,例如在Sql Developer中使用分号是非常有用的,如果你在工作表上有多个语句,因为你可以简单地转到那个特定的语句并使用F9来执行它,没有分号,这是不可能的。

答案 1 :(得分:4)

如果您在某个时间运行单个查询,则不是必需的,如果您想使用单个命令运行多个查询,则必须使用它。

然而,在大多数JDBC驱动程序中,不可能在单个JDBC命令中添加用分号分隔的多个查询,但是它存在允许您添加多个语句的addBatch方法:

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

根据经验,如果您需要使用多个语句addBatch,则在JDBC中不需要分号。

答案 2 :(得分:3)

通常,分号不是语句实际语法的一部分(因为大多数数据库内部API一次只执行一个语句)。相反,分号是一个结尾语句'标记或语句分隔符 - 通常 - 在CLI中定义或数据库的脚本工具。这允许该工具知道语句何时结束,因此它可以将该单个语句发送到数据库以供执行。

另一方面,JDBC api旨在一次执行单个(!)语句,因此您不需要这样的分隔符(该语句是整个字符串)。这意味着不需要分号,并且因为它不是许多数据库的实际语句语法的一部分,所以包含它也是语法错误。某些JDBC驱动程序会将最后一个;从语句中删除到“修复”状态。那些,一些司机不会。

某些驱动程序允许 - 与JDBC规范相反 - 多个语句作为单个字符串执行,这通常必须使用连接属性启用,例如对于MySQL,它是选项allowMultiQueries(请参阅MySQL properties了解详情。

答案 3 :(得分:1)

取决于DBMS和版本号。在单个语句的末尾,分号通常是可选的。但是,如果要执行具有多个语句的脚本,则需要以分号结束。

除了最后一个。但是不一致似乎是不好的形式。