我对TSQL和SQL Server几乎没有经验 - 所以在我想要执行语句的MySQL中我只写:
Select * from users
...然后按ENTER键。
但是现在我看到许多SQL Server教程在每个语句后立即有GO
个字。我必须写这个吗?例如:
Select * from users; GO
或者我可以简单地写一下:
Select * from users; <enter key pressed...>
答案 0 :(得分:7)
在SQL Server中,go
分隔查询批次。在大多数情况下它是可选的。
在早期版本的SQL Server中,您必须在更改表后执行go
,例如:
alter table MyTable add MyColumn int
go
select MyColumn from MyTable
如果没有,SQL Server将解析查询批处理,并抱怨MyColumn不存在。见MSDN:
SQL Server实用程序将GO解释为 他们应该发送信号 当前批处理的Transact-SQL 对SQL实例的语句 服务器。目前批次 陈述由所有人组成 自上次GO以来输入的语句, 或自特设开始以来 会话或脚本,如果这是第一个 GO。
答案 1 :(得分:2)
GO将批次分开。
某些SQL语句(例如CREATE SCHEMA)必须是批处理中的第一个或唯一的语句。例如,MSDN个州
CREATE PROCEDURE语句不能 与其他Transact-SQL结合使用 一批中的陈述。
局部变量也仅限于批次,因此在GO之后无法访问。
答案 2 :(得分:1)
Go是可选的,不需要在sql语句中编写它。
答案 3 :(得分:0)
你不必。 GO将做的是执行每个语句(至少在Sql Server中)
答案 4 :(得分:0)
正如其他回答者在我之前所说,你并不需要Go
。
只有一种情况需要使用它,当你想要创建一个表或视图然后从中进行选择时。
例如:
create view MyView as select * from MyTable
go
select * from MyView
如果没有Go
,Sql Server将不会执行此操作,因为select语句无效,因为此时该视图不存在。