在SQL Server Management Studio和Transact SQL中使用GO有什么用?

当我使用右键单击“脚本为”菜单创build查询时,SQL Server Management Studio总是插入一个GO命令。 为什么? GO实际上做了什么?

这是一个批终止符,但是你可以改变它到任何你想要的 替代文字

从Management Studio 2005开始,看起来你可以用一个int参数来使用GO ,比如:

 INSERT INTO mytable DEFAULT VALUES GO 10 

以上将在mytable插入10行。 一般来说, GO会执行相关的sql命令n次。

GO命令不是Transact-SQL语句,而是由几个MS实用程序(包括SQL Server Management Studio代码编辑器)识别的特殊命令。

GO命令用于将SQL命令组合成一起发送到服务器的批处理。 批处理中包含的命令,即自上次GO命令或会话开始以来的一组命令,必须在逻辑上一致。 例如,您不能在一个批处理中定义一个variables,然后在另一个批处理中使用它,因为该variables的作用域被限制在其定义的批处理中。

有关更多信息,请参阅http://msdn.microsoft.com/en-us/library/ms188037.aspx

GO不是一个SQL关键字。

这是客户端工具(如SSMS)使用的批处理分隔符,将整个脚本分成多个批次

前几次回答… 例1

 Use herDatabase GO ; 

代码表示执行GO标记上方的指令。 我的默认数据库是myDatabase,所以不是使用myDatabase GO ,而是使当前查询使用herDatabase

只要添加现有答案,当您创build视图时,您必须使用go将这些命令分成批次,否则您将收到错误'CREATE VIEW' must be the only statement in the batch 。 所以,例如,你将无法执行下面的SQL脚本

 create view MyView1 as select Id,Name from table1 go create view MyView2 as select Id,Name from table1 go select * from MyView1 select * from MyView2 

这是GO的魔力。

 SELECT 'Go' Go 10 

语法:去INT (BatchNumber)

批号:发生次数

看起来很简单,如果你编码的更深,它可能导致你到意大利面 。