Home [SQL] 何時使用GO,何時使用分號「;」
Post
Cancel

[SQL] 何時使用GO,何時使用分號「;」

GO和分號(;)的作用

在SQL Server中,GO和分號(;)都是用来分隔SQL语句的特殊字符。它们的作用是不同的。

分號 (;)

分號是SQL語句的結束符號,它表示一個完整的SQL語句結束。
在大多數情況下,使用分號是適當的,特別是在一個批次中只包含單一SQL語句時。
例如:

1
SELECT * FROM Customers;

GO

GO是一個批次指令,它表示一個批次(batch)的結束。
一個批次可以包含多個SQL語句。
當你需要一次執行多個SQL語句或在某個條件滿足時執行一組SQL語句時,你就應該使用GO。

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- 建立一个新的表
CREATE TABLE Customers (
    ID INT PRIMARY KEY,
    Name VARCHAR(100)
);
GO

-- 插入数據
INSERT INTO Customers (ID, Name) VALUES (1, 'Alice');
INSERT INTO Customers (ID, Name) VALUES (2, 'Bob');
GO

-- 查詢数據
SELECT * FROM Customers;

需要注意的是,GO並不是SQL語句的一部分,在被解析和執行時,它會被解釋為分隔符,表示批次的結束。
因此,你不是可以在一個SQL語句中使用GO

何時使用GO

當你需要一次執行多個SQL語句或在某個條件滿足時執行一組SQL語句時,你就應該使用GO
GO並不是SQL Server的關鍵字,而是sqlcmd命令列工具中的一個指令。
在管理工具(如SQL Server Management Studio)中,GO通常用於分隔批次處理。
它可以用來建立表,插入數據,執行預存過程,設定變數等等。

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- 建立一个新的表
CREATE TABLE Customers (
    ID INT PRIMARY KEY,
    Name VARCHAR(100)
);
GO

-- 插入数據
INSERT INTO Customers (ID, Name) VALUES (1, 'Alice');
INSERT INTO Customers (ID, Name) VALUES (2, 'Bob');
GO

-- 查询数據
SELECT * FROM Customers;

何時使用分號

分號是SQL語句的結束符號,它表示一個完整的SQL語句結束。在大多數情況下,使用分號是適當的,特別是在一個批次中只包含單一SQL語句時。例如:

1
SELECT * FROM Customers;

在大多數情況下,SQL Server會自動辨識語句的結束,因此在單一語句的情況下,分號是可選的。然而,為了程式碼的可讀性和一致性,建議在每個語句的結尾都加上分號。這樣可以避免一些潛在的錯誤和歧義。

GO和分號的比較

GO和分號在使用上有一些不同:

  • GO是在管理工具(如SQL Server Management Studio)中使用的命令,它通常用於分隔批次處理。分號是SQL語法的一部分,用來表示一條語句的結束。
  • GO用來分隔批次處理,可以執行多個語句,而分號只用來表示一條語句的結束。
  • GO並不是SQL語句的一部分,在被解析和執行時,它會被解釋為分隔符,表示批次的結束。分號是SQL語句的一部分,用來表示語句的結束。
  • GO在腳本中使用時,需要單獨一行,而分號可以直接在語句的結尾加上。

總結

在SQL Server中,GO和分號是用來分隔SQL語句的特殊字元。
GO用來分隔批次處理,可以執行多個語句,而分號只表示一條語句的結束。
當你需要一次執行多個SQL語句或在某個條件滿足時執行一組SQL語句時,你就應該使用GO。
而在大多數情況下,使用分號是適當的,特別是在一個批次中只包含單一SQL語句時。
為了程式碼的可讀性和一致性,建議在每個語句的結尾都加上分號。

MSDN - SQL Server 公用程式陳述式 - GO
SQL SQL Server中,何时使用GO,何时使用分号 ;
[SQL] SQL分號(;)的用法
[SQL] SQL Server 中 GO 的用法

This post is licensed under CC BY 4.0 by the author.