SQL Server 中 GO 的作用
CREATE DATABASE MyDatabase;
USE MyDatabase;
GO
--定义局部变量
DECLARE @s_no varchar(8), @s_avgrade numeric(4,1);
--对局部变量赋值
SET s_no = '20170208';
SET @s_avgrade = 95.0;
--使用局部变量
UPDATE student SET s_avgrade = @s_avgrade
WHERE s_no = @s_no;
🌟 GO
的作用
GO
不是 SQL 语言的标准关键字。- 它是 SQL Server 的 批处理分隔符(batch separator)。
- 它用于 告诉客户端工具(比如 SSMS、sqlcmd)“前面的 SQL 命令已经写完,可以一起提交到 SQL Server 引擎去执行了。”
- 当客户端工具遇到
GO
时,会把它前面的所有 SQL 语句一起发送给 SQL Server 执行。 GO
本身不会被发给数据库引擎执行。
🌰 简单理解:
你可以把 GO
想象成:
“好啦,这一组 SQL 我写完了,你赶快去执行吧!”
🚩 在该例中:
CREATE DATABASE MyDatabase;
USE MyDatabase;
GO
这里的 GO
的作用是:
✅ 告诉 SQL Server 客户端:前面的 CREATE DATABASE
和 USE
命令可以一起提交并执行了。
✅ 之后的 DECLARE
和 SET
等会作为新的一批 SQL 命令。
⚠ 注意:
如果你不写 GO
,在某些工具中可能:
USE MyDatabase;
不会立即生效,后续语句可能还在原数据库上执行。- 没有批处理的边界,可能导致语句解析顺序出错。
🌟 总结
GO
作用:
- 分隔 SQL 批处理。
- 告诉客户端“提交这一批去执行”。
- 不会被 SQL Server 数据库引擎当作语句执行。