在 SQL Server 中,GO
不是 SQL 语言的一部分,而是一个批处理分隔符,用于分隔脚本中的多个 SQL 语句或执行块。它由 SQL Server Management Studio (SSMS) 等工具处理,用来指示执行一个批次的 SQL 语句。
1、SQL Server 中的 GO
作用
-
分隔批次(处理多批次脚本):将 SQL 脚本中的语句分成多个批次执行。每个
GO
表示一个独立的执行块。例如,在某些操作中,创建表的语句可能依赖于先前的数据库和表创建,这时就可以利用GO
来分隔不同的操作步骤。 -
事务控制:
GO
也常用于事务控制,尽管它本身并不是事务的一部分。通过在事务块的前后使用GO
,可以确保每个批次内的事务被独立处理。
例如:
CREATE DATABASE TestDB;
GO
USE TestDB;
GO
CREATE TABLE Customers (
ID INT PRIMARY KEY,
Name NVARCHAR(100)
);
GO
2、与其他数据库的对比
2.1 Oracle:不使用 GO
,语句通过分号(;
)分隔,支持使用 BEGIN ... END;
块来组织事务。
示例:
CREATE TABLE Employees (ID INT PRIMARY KEY, Name VARCHAR2(100));
BEGIN
INSERT INTO Employees VALUES (1, 'John');
COMMIT;
END;
2.2 MySQL:也不使用 GO
,语句通过分号(;
)分隔,直接执行。
示例:
CREATE DATABASE TestDB;
USE TestDB;
CREATE TABLE Customers (ID INT PRIMARY KEY, Name VARCHAR(100));
3、总结
-
SQL Server 使用
GO
来分隔批次,帮助执行多个 SQL 语句。 -
Oracle 和 MySQL 通过分号(
;
)分隔语句,不需要GO
。